diff --git a/1.2.30/angular-1.2.30.zip b/1.2.30/angular-1.2.30.zip new file mode 100644 index 0000000000..b148aae3a1 Binary files /dev/null and b/1.2.30/angular-1.2.30.zip differ diff --git a/1.2.30/angular-animate.js b/1.2.30/angular-animate.js new file mode 100644 index 0000000000..9a9c2462e8 --- /dev/null +++ b/1.2.30/angular-animate.js @@ -0,0 +1,1704 @@ +/** + * @license AngularJS v1.2.30 + * (c) 2010-2014 Google, Inc. http://angularjs.org + * License: MIT + */ +(function(window, angular, undefined) {'use strict'; + +/* jshint maxlen: false */ + +/** + * @ngdoc module + * @name ngAnimate + * @description + * + * # ngAnimate + * + * The `ngAnimate` module provides support for JavaScript, CSS3 transition and CSS3 keyframe animation hooks within existing core and custom directives. + * + * + *
+ * + * # Usage + * + * To see animations in action, all that is required is to define the appropriate CSS classes + * or to register a JavaScript animation via the myModule.animation() function. The directives that support animation automatically are: + * `ngRepeat`, `ngInclude`, `ngIf`, `ngSwitch`, `ngShow`, `ngHide`, `ngView` and `ngClass`. Custom directives can take advantage of animation + * by using the `$animate` service. + * + * Below is a more detailed breakdown of the supported animation events provided by pre-existing ng directives: + * + * | Directive | Supported Animations | + * |---------------------------------------------------------- |----------------------------------------------------| + * | {@link ng.directive:ngRepeat#usage_animations ngRepeat} | enter, leave and move | + * | {@link ngRoute.directive:ngView#usage_animations ngView} | enter and leave | + * | {@link ng.directive:ngInclude#usage_animations ngInclude} | enter and leave | + * | {@link ng.directive:ngSwitch#usage_animations ngSwitch} | enter and leave | + * | {@link ng.directive:ngIf#usage_animations ngIf} | enter and leave | + * | {@link ng.directive:ngClass#usage_animations ngClass} | add and remove | + * | {@link ng.directive:ngShow#usage_animations ngShow & ngHide} | add and remove (the ng-hide class value) | + * | {@link ng.directive:form#usage_animations form} | add and remove (dirty, pristine, valid, invalid & all other validations) | + * | {@link ng.directive:ngModel#usage_animations ngModel} | add and remove (dirty, pristine, valid, invalid & all other validations) | + * + * You can find out more information about animations upon visiting each directive page. + * + * Below is an example of how to apply animations to a directive that supports animation hooks: + * + * ```html + * + * + * + * + * ``` + * + * Keep in mind that, by default, if an animation is running, any child elements cannot be animated + * until the parent element's animation has completed. This blocking feature can be overridden by + * placing the `ng-animate-children` attribute on a parent container tag. + * + * ```html + *
+ *
+ *
+ * ... + *
+ *
+ *
+ * ``` + * + * When the `on` expression value changes and an animation is triggered then each of the elements within + * will all animate without the block being applied to child elements. + * + *

CSS-defined Animations

+ * The animate service will automatically apply two CSS classes to the animated element and these two CSS classes + * are designed to contain the start and end CSS styling. Both CSS transitions and keyframe animations are supported + * and can be used to play along with this naming structure. + * + * The following code below demonstrates how to perform animations using **CSS transitions** with Angular: + * + * ```html + * + * + *
+ *
+ *
+ * ``` + * + * The following code below demonstrates how to perform animations using **CSS animations** with Angular: + * + * ```html + * + * + *
+ *
+ *
+ * ``` + * + * Both CSS3 animations and transitions can be used together and the animate service will figure out the correct duration and delay timing. + * + * Upon DOM mutation, the event class is added first (something like `ng-enter`), then the browser prepares itself to add + * the active class (in this case `ng-enter-active`) which then triggers the animation. The animation module will automatically + * detect the CSS code to determine when the animation ends. Once the animation is over then both CSS classes will be + * removed from the DOM. If a browser does not support CSS transitions or CSS animations then the animation will start and end + * immediately resulting in a DOM element that is at its final state. This final state is when the DOM element + * has no CSS transition/animation classes applied to it. + * + *

CSS Staggering Animations

+ * A Staggering animation is a collection of animations that are issued with a slight delay in between each successive operation resulting in a + * curtain-like effect. The ngAnimate module, as of 1.2.0, supports staggering animations and the stagger effect can be + * performed by creating a **ng-EVENT-stagger** CSS class and attaching that class to the base CSS class used for + * the animation. The style property expected within the stagger class can either be a **transition-delay** or an + * **animation-delay** property (or both if your animation contains both transitions and keyframe animations). + * + * ```css + * .my-animation.ng-enter { + * /* standard transition code */ + * -webkit-transition: 1s linear all; + * transition: 1s linear all; + * opacity:0; + * } + * .my-animation.ng-enter-stagger { + * /* this will have a 100ms delay between each successive leave animation */ + * -webkit-transition-delay: 0.1s; + * transition-delay: 0.1s; + * + * /* in case the stagger doesn't work then these two values + * must be set to 0 to avoid an accidental CSS inheritance */ + * -webkit-transition-duration: 0s; + * transition-duration: 0s; + * } + * .my-animation.ng-enter.ng-enter-active { + * /* standard transition styles */ + * opacity:1; + * } + * ``` + * + * Staggering animations work by default in ngRepeat (so long as the CSS class is defined). Outside of ngRepeat, to use staggering animations + * on your own, they can be triggered by firing multiple calls to the same event on $animate. However, the restrictions surrounding this + * are that each of the elements must have the same CSS className value as well as the same parent element. A stagger operation + * will also be reset if more than 10ms has passed after the last animation has been fired. + * + * The following code will issue the **ng-leave-stagger** event on the element provided: + * + * ```js + * var kids = parent.children(); + * + * $animate.leave(kids[0]); //stagger index=0 + * $animate.leave(kids[1]); //stagger index=1 + * $animate.leave(kids[2]); //stagger index=2 + * $animate.leave(kids[3]); //stagger index=3 + * $animate.leave(kids[4]); //stagger index=4 + * + * $timeout(function() { + * //stagger has reset itself + * $animate.leave(kids[5]); //stagger index=0 + * $animate.leave(kids[6]); //stagger index=1 + * }, 100, false); + * ``` + * + * Stagger animations are currently only supported within CSS-defined animations. + * + *

JavaScript-defined Animations

+ * In the event that you do not want to use CSS3 transitions or CSS3 animations or if you wish to offer animations on browsers that do not + * yet support CSS transitions/animations, then you can make use of JavaScript animations defined inside of your AngularJS module. + * + * ```js + * //!annotate="YourApp" Your AngularJS Module|Replace this or ngModule with the module that you used to define your application. + * var ngModule = angular.module('YourApp', ['ngAnimate']); + * ngModule.animation('.my-crazy-animation', function() { + * return { + * enter: function(element, done) { + * //run the animation here and call done when the animation is complete + * return function(cancelled) { + * //this (optional) function will be called when the animation + * //completes or when the animation is cancelled (the cancelled + * //flag will be set to true if cancelled). + * }; + * }, + * leave: function(element, done) { }, + * move: function(element, done) { }, + * + * //animation that can be triggered before the class is added + * beforeAddClass: function(element, className, done) { }, + * + * //animation that can be triggered after the class is added + * addClass: function(element, className, done) { }, + * + * //animation that can be triggered before the class is removed + * beforeRemoveClass: function(element, className, done) { }, + * + * //animation that can be triggered after the class is removed + * removeClass: function(element, className, done) { } + * }; + * }); + * ``` + * + * JavaScript-defined animations are created with a CSS-like class selector and a collection of events which are set to run + * a javascript callback function. When an animation is triggered, $animate will look for a matching animation which fits + * the element's CSS class attribute value and then run the matching animation event function (if found). + * In other words, if the CSS classes present on the animated element match any of the JavaScript animations then the callback function will + * be executed. It should be also noted that only simple, single class selectors are allowed (compound class selectors are not supported). + * + * Within a JavaScript animation, an object containing various event callback animation functions is expected to be returned. + * As explained above, these callbacks are triggered based on the animation event. Therefore if an enter animation is run, + * and the JavaScript animation is found, then the enter callback will handle that animation (in addition to the CSS keyframe animation + * or transition code that is defined via a stylesheet). + * + */ + +angular.module('ngAnimate', ['ng']) + + /** + * @ngdoc provider + * @name $animateProvider + * @description + * + * The `$animateProvider` allows developers to register JavaScript animation event handlers directly inside of a module. + * When an animation is triggered, the $animate service will query the $animate service to find any animations that match + * the provided name value. + * + * Requires the {@link ngAnimate `ngAnimate`} module to be installed. + * + * Please visit the {@link ngAnimate `ngAnimate`} module overview page learn more about how to use animations in your application. + * + */ + .directive('ngAnimateChildren', function() { + var NG_ANIMATE_CHILDREN = '$$ngAnimateChildren'; + return function(scope, element, attrs) { + var val = attrs.ngAnimateChildren; + if(angular.isString(val) && val.length === 0) { //empty attribute + element.data(NG_ANIMATE_CHILDREN, true); + } else { + scope.$watch(val, function(value) { + element.data(NG_ANIMATE_CHILDREN, !!value); + }); + } + }; + }) + + //this private service is only used within CSS-enabled animations + //IE8 + IE9 do not support rAF natively, but that is fine since they + //also don't support transitions and keyframes which means that the code + //below will never be used by the two browsers. + .factory('$$animateReflow', ['$$rAF', '$document', function($$rAF, $document) { + var bod = $document[0].body; + return function(fn) { + //the returned function acts as the cancellation function + return $$rAF(function() { + //the line below will force the browser to perform a repaint + //so that all the animated elements within the animation frame + //will be properly updated and drawn on screen. This is + //required to perform multi-class CSS based animations with + //Firefox. DO NOT REMOVE THIS LINE. DO NOT OPTIMIZE THIS LINE. + //THE MINIFIER WILL REMOVE IT OTHERWISE WHICH WILL RESULT IN AN + //UNPREDICTABLE BUG THAT IS VERY HARD TO TRACK DOWN AND WILL + //TAKE YEARS AWAY FROM YOUR LIFE! + fn(bod.offsetWidth); + }); + }; + }]) + + .config(['$provide', '$animateProvider', function($provide, $animateProvider) { + var noop = angular.noop; + var forEach = angular.forEach; + var selectors = $animateProvider.$$selectors; + + var ELEMENT_NODE = 1; + var NG_ANIMATE_STATE = '$$ngAnimateState'; + var NG_ANIMATE_CHILDREN = '$$ngAnimateChildren'; + var NG_ANIMATE_CLASS_NAME = 'ng-animate'; + var rootAnimateState = {running: true}; + + function extractElementNode(element) { + for(var i = 0; i < element.length; i++) { + var elm = element[i]; + if(elm.nodeType == ELEMENT_NODE) { + return elm; + } + } + } + + function prepareElement(element) { + return element && angular.element(element); + } + + function stripCommentsFromElement(element) { + return angular.element(extractElementNode(element)); + } + + function isMatchingElement(elm1, elm2) { + return extractElementNode(elm1) == extractElementNode(elm2); + } + + $provide.decorator('$animate', ['$delegate', '$injector', '$sniffer', '$rootElement', '$$asyncCallback', '$rootScope', '$document', + function($delegate, $injector, $sniffer, $rootElement, $$asyncCallback, $rootScope, $document) { + + var globalAnimationCounter = 0; + $rootElement.data(NG_ANIMATE_STATE, rootAnimateState); + + // disable animations during bootstrap, but once we bootstrapped, wait again + // for another digest until enabling animations. The reason why we digest twice + // is because all structural animations (enter, leave and move) all perform a + // post digest operation before animating. If we only wait for a single digest + // to pass then the structural animation would render its animation on page load. + // (which is what we're trying to avoid when the application first boots up.) + $rootScope.$$postDigest(function() { + $rootScope.$$postDigest(function() { + rootAnimateState.running = false; + }); + }); + + var classNameFilter = $animateProvider.classNameFilter(); + var isAnimatableClassName = !classNameFilter + ? function() { return true; } + : function(className) { + return classNameFilter.test(className); + }; + + function blockElementAnimations(element) { + var data = element.data(NG_ANIMATE_STATE) || {}; + data.running = true; + element.data(NG_ANIMATE_STATE, data); + } + + function lookup(name) { + if (name) { + var matches = [], + flagMap = {}, + classes = name.substr(1).split('.'); + + //the empty string value is the default animation + //operation which performs CSS transition and keyframe + //animations sniffing. This is always included for each + //element animation procedure if the browser supports + //transitions and/or keyframe animations. The default + //animation is added to the top of the list to prevent + //any previous animations from affecting the element styling + //prior to the element being animated. + if ($sniffer.transitions || $sniffer.animations) { + matches.push($injector.get(selectors[''])); + } + + for(var i=0; i < classes.length; i++) { + var klass = classes[i], + selectorFactoryName = selectors[klass]; + if(selectorFactoryName && !flagMap[klass]) { + matches.push($injector.get(selectorFactoryName)); + flagMap[klass] = true; + } + } + return matches; + } + } + + function animationRunner(element, animationEvent, className) { + //transcluded directives may sometimes fire an animation using only comment nodes + //best to catch this early on to prevent any animation operations from occurring + var node = element[0]; + if(!node) { + return; + } + + var isSetClassOperation = animationEvent == 'setClass'; + var isClassBased = isSetClassOperation || + animationEvent == 'addClass' || + animationEvent == 'removeClass'; + + var classNameAdd, classNameRemove; + if(angular.isArray(className)) { + classNameAdd = className[0]; + classNameRemove = className[1]; + className = classNameAdd + ' ' + classNameRemove; + } + + var currentClassName = element.attr('class'); + var classes = currentClassName + ' ' + className; + if(!isAnimatableClassName(classes)) { + return; + } + + var beforeComplete = noop, + beforeCancel = [], + before = [], + afterComplete = noop, + afterCancel = [], + after = []; + + var animationLookup = (' ' + classes).replace(/\s+/g,'.'); + forEach(lookup(animationLookup), function(animationFactory) { + var created = registerAnimation(animationFactory, animationEvent); + if(!created && isSetClassOperation) { + registerAnimation(animationFactory, 'addClass'); + registerAnimation(animationFactory, 'removeClass'); + } + }); + + function registerAnimation(animationFactory, event) { + var afterFn = animationFactory[event]; + var beforeFn = animationFactory['before' + event.charAt(0).toUpperCase() + event.substr(1)]; + if(afterFn || beforeFn) { + if(event == 'leave') { + beforeFn = afterFn; + //when set as null then animation knows to skip this phase + afterFn = null; + } + after.push({ + event : event, fn : afterFn + }); + before.push({ + event : event, fn : beforeFn + }); + return true; + } + } + + function run(fns, cancellations, allCompleteFn) { + var animations = []; + forEach(fns, function(animation) { + animation.fn && animations.push(animation); + }); + + var count = 0; + function afterAnimationComplete(index) { + if(cancellations) { + (cancellations[index] || noop)(); + if(++count < animations.length) return; + cancellations = null; + } + allCompleteFn(); + } + + //The code below adds directly to the array in order to work with + //both sync and async animations. Sync animations are when the done() + //operation is called right away. DO NOT REFACTOR! + forEach(animations, function(animation, index) { + var progress = function() { + afterAnimationComplete(index); + }; + switch(animation.event) { + case 'setClass': + cancellations.push(animation.fn(element, classNameAdd, classNameRemove, progress)); + break; + case 'addClass': + cancellations.push(animation.fn(element, classNameAdd || className, progress)); + break; + case 'removeClass': + cancellations.push(animation.fn(element, classNameRemove || className, progress)); + break; + default: + cancellations.push(animation.fn(element, progress)); + break; + } + }); + + if(cancellations && cancellations.length === 0) { + allCompleteFn(); + } + } + + return { + node : node, + event : animationEvent, + className : className, + isClassBased : isClassBased, + isSetClassOperation : isSetClassOperation, + before : function(allCompleteFn) { + beforeComplete = allCompleteFn; + run(before, beforeCancel, function() { + beforeComplete = noop; + allCompleteFn(); + }); + }, + after : function(allCompleteFn) { + afterComplete = allCompleteFn; + run(after, afterCancel, function() { + afterComplete = noop; + allCompleteFn(); + }); + }, + cancel : function() { + if(beforeCancel) { + forEach(beforeCancel, function(cancelFn) { + (cancelFn || noop)(true); + }); + beforeComplete(true); + } + if(afterCancel) { + forEach(afterCancel, function(cancelFn) { + (cancelFn || noop)(true); + }); + afterComplete(true); + } + } + }; + } + + /** + * @ngdoc service + * @name $animate + * @kind function + * + * @description + * The `$animate` service provides animation detection support while performing DOM operations (enter, leave and move) as well as during addClass and removeClass operations. + * When any of these operations are run, the $animate service + * will examine any JavaScript-defined animations (which are defined by using the $animateProvider provider object) + * as well as any CSS-defined animations against the CSS classes present on the element once the DOM operation is run. + * + * The `$animate` service is used behind the scenes with pre-existing directives and animation with these directives + * will work out of the box without any extra configuration. + * + * Requires the {@link ngAnimate `ngAnimate`} module to be installed. + * + * Please visit the {@link ngAnimate `ngAnimate`} module overview page learn more about how to use animations in your application. + * + */ + return { + /** + * @ngdoc method + * @name $animate#enter + * @kind function + * + * @description + * Appends the element to the parentElement element that resides in the document and then runs the enter animation. Once + * the animation is started, the following CSS classes will be present on the element for the duration of the animation: + * + * Below is a breakdown of each step that occurs during enter animation: + * + * | Animation Step | What the element class attribute looks like | + * |----------------------------------------------------------------------------------------------|---------------------------------------------| + * | 1. $animate.enter(...) is called | class="my-animation" | + * | 2. element is inserted into the parentElement element or beside the afterElement element | class="my-animation" | + * | 3. $animate runs any JavaScript-defined animations on the element | class="my-animation ng-animate" | + * | 4. the .ng-enter class is added to the element | class="my-animation ng-animate ng-enter" | + * | 5. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate ng-enter" | + * | 6. $animate waits for 10ms (this performs a reflow) | class="my-animation ng-animate ng-enter" | + * | 7. the .ng-enter-active and .ng-animate-active classes are added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-animate-active ng-enter ng-enter-active" | + * | 8. $animate waits for X milliseconds for the animation to complete | class="my-animation ng-animate ng-animate-active ng-enter ng-enter-active" | + * | 9. The animation ends and all generated CSS classes are removed from the element | class="my-animation" | + * | 10. The doneCallback() callback is fired (if provided) | class="my-animation" | + * + * @param {DOMElement} element the element that will be the focus of the enter animation + * @param {DOMElement} parentElement the parent element of the element that will be the focus of the enter animation + * @param {DOMElement} afterElement the sibling element (which is the previous element) of the element that will be the focus of the enter animation + * @param {function()=} doneCallback the callback function that will be called once the animation is complete + */ + enter : function(element, parentElement, afterElement, doneCallback) { + element = angular.element(element); + parentElement = prepareElement(parentElement); + afterElement = prepareElement(afterElement); + + blockElementAnimations(element); + $delegate.enter(element, parentElement, afterElement); + $rootScope.$$postDigest(function() { + element = stripCommentsFromElement(element); + performAnimation('enter', 'ng-enter', element, parentElement, afterElement, noop, doneCallback); + }); + }, + + /** + * @ngdoc method + * @name $animate#leave + * @kind function + * + * @description + * Runs the leave animation operation and, upon completion, removes the element from the DOM. Once + * the animation is started, the following CSS classes will be added for the duration of the animation: + * + * Below is a breakdown of each step that occurs during leave animation: + * + * | Animation Step | What the element class attribute looks like | + * |----------------------------------------------------------------------------------------------|---------------------------------------------| + * | 1. $animate.leave(...) is called | class="my-animation" | + * | 2. $animate runs any JavaScript-defined animations on the element | class="my-animation ng-animate" | + * | 3. the .ng-leave class is added to the element | class="my-animation ng-animate ng-leave" | + * | 4. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate ng-leave" | + * | 5. $animate waits for 10ms (this performs a reflow) | class="my-animation ng-animate ng-leave" | + * | 6. the .ng-leave-active and .ng-animate-active classes is added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-animate-active ng-leave ng-leave-active" | + * | 7. $animate waits for X milliseconds for the animation to complete | class="my-animation ng-animate ng-animate-active ng-leave ng-leave-active" | + * | 8. The animation ends and all generated CSS classes are removed from the element | class="my-animation" | + * | 9. The element is removed from the DOM | ... | + * | 10. The doneCallback() callback is fired (if provided) | ... | + * + * @param {DOMElement} element the element that will be the focus of the leave animation + * @param {function()=} doneCallback the callback function that will be called once the animation is complete + */ + leave : function(element, doneCallback) { + element = angular.element(element); + cancelChildAnimations(element); + blockElementAnimations(element); + $rootScope.$$postDigest(function() { + performAnimation('leave', 'ng-leave', stripCommentsFromElement(element), null, null, function() { + $delegate.leave(element); + }, doneCallback); + }); + }, + + /** + * @ngdoc method + * @name $animate#move + * @kind function + * + * @description + * Fires the move DOM operation. Just before the animation starts, the animate service will either append it into the parentElement container or + * add the element directly after the afterElement element if present. Then the move animation will be run. Once + * the animation is started, the following CSS classes will be added for the duration of the animation: + * + * Below is a breakdown of each step that occurs during move animation: + * + * | Animation Step | What the element class attribute looks like | + * |----------------------------------------------------------------------------------------------|---------------------------------------------| + * | 1. $animate.move(...) is called | class="my-animation" | + * | 2. element is moved into the parentElement element or beside the afterElement element | class="my-animation" | + * | 3. $animate runs any JavaScript-defined animations on the element | class="my-animation ng-animate" | + * | 4. the .ng-move class is added to the element | class="my-animation ng-animate ng-move" | + * | 5. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate ng-move" | + * | 6. $animate waits for 10ms (this performs a reflow) | class="my-animation ng-animate ng-move" | + * | 7. the .ng-move-active and .ng-animate-active classes is added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-animate-active ng-move ng-move-active" | + * | 8. $animate waits for X milliseconds for the animation to complete | class="my-animation ng-animate ng-animate-active ng-move ng-move-active" | + * | 9. The animation ends and all generated CSS classes are removed from the element | class="my-animation" | + * | 10. The doneCallback() callback is fired (if provided) | class="my-animation" | + * + * @param {DOMElement} element the element that will be the focus of the move animation + * @param {DOMElement} parentElement the parentElement element of the element that will be the focus of the move animation + * @param {DOMElement} afterElement the sibling element (which is the previous element) of the element that will be the focus of the move animation + * @param {function()=} doneCallback the callback function that will be called once the animation is complete + */ + move : function(element, parentElement, afterElement, doneCallback) { + element = angular.element(element); + parentElement = prepareElement(parentElement); + afterElement = prepareElement(afterElement); + + cancelChildAnimations(element); + blockElementAnimations(element); + $delegate.move(element, parentElement, afterElement); + $rootScope.$$postDigest(function() { + element = stripCommentsFromElement(element); + performAnimation('move', 'ng-move', element, parentElement, afterElement, noop, doneCallback); + }); + }, + + /** + * @ngdoc method + * @name $animate#addClass + * + * @description + * Triggers a custom animation event based off the className variable and then attaches the className value to the element as a CSS class. + * Unlike the other animation methods, the animate service will suffix the className value with {@type -add} in order to provide + * the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if no CSS transitions + * or keyframes are defined on the -add or base CSS class). + * + * Below is a breakdown of each step that occurs during addClass animation: + * + * | Animation Step | What the element class attribute looks like | + * |------------------------------------------------------------------------------------------------|---------------------------------------------| + * | 1. $animate.addClass(element, 'super') is called | class="my-animation" | + * | 2. $animate runs any JavaScript-defined animations on the element | class="my-animation ng-animate" | + * | 3. the .super-add class are added to the element | class="my-animation ng-animate super-add" | + * | 4. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate super-add" | + * | 5. $animate waits for 10ms (this performs a reflow) | class="my-animation ng-animate super-add" | + * | 6. the .super, .super-add-active and .ng-animate-active classes are added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-animate-active super super-add super-add-active" | + * | 7. $animate waits for X milliseconds for the animation to complete | class="my-animation super super-add super-add-active" | + * | 8. The animation ends and all generated CSS classes are removed from the element | class="my-animation super" | + * | 9. The super class is kept on the element | class="my-animation super" | + * | 10. The doneCallback() callback is fired (if provided) | class="my-animation super" | + * + * @param {DOMElement} element the element that will be animated + * @param {string} className the CSS class that will be added to the element and then animated + * @param {function()=} doneCallback the callback function that will be called once the animation is complete + */ + addClass : function(element, className, doneCallback) { + element = angular.element(element); + element = stripCommentsFromElement(element); + performAnimation('addClass', className, element, null, null, function() { + $delegate.addClass(element, className); + }, doneCallback); + }, + + /** + * @ngdoc method + * @name $animate#removeClass + * + * @description + * Triggers a custom animation event based off the className variable and then removes the CSS class provided by the className value + * from the element. Unlike the other animation methods, the animate service will suffix the className value with {@type -remove} in + * order to provide the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if + * no CSS transitions or keyframes are defined on the -remove or base CSS classes). + * + * Below is a breakdown of each step that occurs during removeClass animation: + * + * | Animation Step | What the element class attribute looks like | + * |-----------------------------------------------------------------------------------------------|---------------------------------------------| + * | 1. $animate.removeClass(element, 'super') is called | class="my-animation super" | + * | 2. $animate runs any JavaScript-defined animations on the element | class="my-animation super ng-animate" | + * | 3. the .super-remove class are added to the element | class="my-animation super ng-animate super-remove"| + * | 4. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation super ng-animate super-remove" | + * | 5. $animate waits for 10ms (this performs a reflow) | class="my-animation super ng-animate super-remove" | + * | 6. the .super-remove-active and .ng-animate-active classes are added and .super is removed (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-animate-active super-remove super-remove-active" | + * | 7. $animate waits for X milliseconds for the animation to complete | class="my-animation ng-animate ng-animate-active super-remove super-remove-active" | + * | 8. The animation ends and all generated CSS classes are removed from the element | class="my-animation" | + * | 9. The doneCallback() callback is fired (if provided) | class="my-animation" | + * + * + * @param {DOMElement} element the element that will be animated + * @param {string} className the CSS class that will be animated and then removed from the element + * @param {function()=} doneCallback the callback function that will be called once the animation is complete + */ + removeClass : function(element, className, doneCallback) { + element = angular.element(element); + element = stripCommentsFromElement(element); + performAnimation('removeClass', className, element, null, null, function() { + $delegate.removeClass(element, className); + }, doneCallback); + }, + + /** + * + * @ngdoc function + * @name $animate#setClass + * @function + * @description Adds and/or removes the given CSS classes to and from the element. + * Once complete, the done() callback will be fired (if provided). + * @param {DOMElement} element the element which will its CSS classes changed + * removed from it + * @param {string} add the CSS classes which will be added to the element + * @param {string} remove the CSS class which will be removed from the element + * @param {Function=} done the callback function (if provided) that will be fired after the + * CSS classes have been set on the element + */ + setClass : function(element, add, remove, doneCallback) { + element = angular.element(element); + element = stripCommentsFromElement(element); + performAnimation('setClass', [add, remove], element, null, null, function() { + $delegate.setClass(element, add, remove); + }, doneCallback); + }, + + /** + * @ngdoc method + * @name $animate#enabled + * @kind function + * + * @param {boolean=} value If provided then set the animation on or off. + * @param {DOMElement=} element If provided then the element will be used to represent the enable/disable operation + * @return {boolean} Current animation state. + * + * @description + * Globally enables/disables animations. + * + */ + enabled : function(value, element) { + switch(arguments.length) { + case 2: + if(value) { + cleanup(element); + } else { + var data = element.data(NG_ANIMATE_STATE) || {}; + data.disabled = true; + element.data(NG_ANIMATE_STATE, data); + } + break; + + case 1: + rootAnimateState.disabled = !value; + break; + + default: + value = !rootAnimateState.disabled; + break; + } + return !!value; + } + }; + + /* + all animations call this shared animation triggering function internally. + The animationEvent variable refers to the JavaScript animation event that will be triggered + and the className value is the name of the animation that will be applied within the + CSS code. Element, parentElement and afterElement are provided DOM elements for the animation + and the onComplete callback will be fired once the animation is fully complete. + */ + function performAnimation(animationEvent, className, element, parentElement, afterElement, domOperation, doneCallback) { + + var runner = animationRunner(element, animationEvent, className); + if(!runner) { + fireDOMOperation(); + fireBeforeCallbackAsync(); + fireAfterCallbackAsync(); + closeAnimation(); + return; + } + + className = runner.className; + var elementEvents = angular.element._data(runner.node); + elementEvents = elementEvents && elementEvents.events; + + if (!parentElement) { + parentElement = afterElement ? afterElement.parent() : element.parent(); + } + + var ngAnimateState = element.data(NG_ANIMATE_STATE) || {}; + var runningAnimations = ngAnimateState.active || {}; + var totalActiveAnimations = ngAnimateState.totalActive || 0; + var lastAnimation = ngAnimateState.last; + + //only allow animations if the currently running animation is not structural + //or if there is no animation running at all + var skipAnimations; + if (runner.isClassBased) { + skipAnimations = ngAnimateState.running || + ngAnimateState.disabled || + (lastAnimation && !lastAnimation.isClassBased); + } + + //skip the animation if animations are disabled, a parent is already being animated, + //the element is not currently attached to the document body or then completely close + //the animation if any matching animations are not found at all. + //NOTE: IE8 + IE9 should close properly (run closeAnimation()) in case an animation was found. + if (skipAnimations || animationsDisabled(element, parentElement)) { + fireDOMOperation(); + fireBeforeCallbackAsync(); + fireAfterCallbackAsync(); + closeAnimation(); + return; + } + + var skipAnimation = false; + if(totalActiveAnimations > 0) { + var animationsToCancel = []; + if(!runner.isClassBased) { + if(animationEvent == 'leave' && runningAnimations['ng-leave']) { + skipAnimation = true; + } else { + //cancel all animations when a structural animation takes place + for(var klass in runningAnimations) { + animationsToCancel.push(runningAnimations[klass]); + cleanup(element, klass); + } + runningAnimations = {}; + totalActiveAnimations = 0; + } + } else if(lastAnimation.event == 'setClass') { + animationsToCancel.push(lastAnimation); + cleanup(element, className); + } + else if(runningAnimations[className]) { + var current = runningAnimations[className]; + if(current.event == animationEvent) { + skipAnimation = true; + } else { + animationsToCancel.push(current); + cleanup(element, className); + } + } + + if(animationsToCancel.length > 0) { + forEach(animationsToCancel, function(operation) { + operation.cancel(); + }); + } + } + + if(runner.isClassBased && !runner.isSetClassOperation && !skipAnimation) { + skipAnimation = (animationEvent == 'addClass') == element.hasClass(className); //opposite of XOR + } + + if(skipAnimation) { + fireDOMOperation(); + fireBeforeCallbackAsync(); + fireAfterCallbackAsync(); + fireDoneCallbackAsync(); + return; + } + + if(animationEvent == 'leave') { + //there's no need to ever remove the listener since the element + //will be removed (destroyed) after the leave animation ends or + //is cancelled midway + element.one('$destroy', function(e) { + var element = angular.element(this); + var state = element.data(NG_ANIMATE_STATE); + if(state) { + var activeLeaveAnimation = state.active['ng-leave']; + if(activeLeaveAnimation) { + activeLeaveAnimation.cancel(); + cleanup(element, 'ng-leave'); + } + } + }); + } + + //the ng-animate class does nothing, but it's here to allow for + //parent animations to find and cancel child animations when needed + element.addClass(NG_ANIMATE_CLASS_NAME); + + var localAnimationCount = globalAnimationCounter++; + totalActiveAnimations++; + runningAnimations[className] = runner; + + element.data(NG_ANIMATE_STATE, { + last : runner, + active : runningAnimations, + index : localAnimationCount, + totalActive : totalActiveAnimations + }); + + //first we run the before animations and when all of those are complete + //then we perform the DOM operation and run the next set of animations + fireBeforeCallbackAsync(); + runner.before(function(cancelled) { + var data = element.data(NG_ANIMATE_STATE); + cancelled = cancelled || + !data || !data.active[className] || + (runner.isClassBased && data.active[className].event != animationEvent); + + fireDOMOperation(); + if(cancelled === true) { + closeAnimation(); + } else { + fireAfterCallbackAsync(); + runner.after(closeAnimation); + } + }); + + function fireDOMCallback(animationPhase) { + var eventName = '$animate:' + animationPhase; + if(elementEvents && elementEvents[eventName] && elementEvents[eventName].length > 0) { + $$asyncCallback(function() { + element.triggerHandler(eventName, { + event : animationEvent, + className : className + }); + }); + } + } + + function fireBeforeCallbackAsync() { + fireDOMCallback('before'); + } + + function fireAfterCallbackAsync() { + fireDOMCallback('after'); + } + + function fireDoneCallbackAsync() { + fireDOMCallback('close'); + if(doneCallback) { + $$asyncCallback(function() { + doneCallback(); + }); + } + } + + //it is less complicated to use a flag than managing and canceling + //timeouts containing multiple callbacks. + function fireDOMOperation() { + if(!fireDOMOperation.hasBeenRun) { + fireDOMOperation.hasBeenRun = true; + domOperation(); + } + } + + function closeAnimation() { + if(!closeAnimation.hasBeenRun) { + closeAnimation.hasBeenRun = true; + var data = element.data(NG_ANIMATE_STATE); + if(data) { + /* only structural animations wait for reflow before removing an + animation, but class-based animations don't. An example of this + failing would be when a parent HTML tag has a ng-class attribute + causing ALL directives below to skip animations during the digest */ + if(runner && runner.isClassBased) { + cleanup(element, className); + } else { + $$asyncCallback(function() { + var data = element.data(NG_ANIMATE_STATE) || {}; + if(localAnimationCount == data.index) { + cleanup(element, className, animationEvent); + } + }); + element.data(NG_ANIMATE_STATE, data); + } + } + fireDoneCallbackAsync(); + } + } + } + + function cancelChildAnimations(element) { + var node = extractElementNode(element); + if (node) { + var nodes = angular.isFunction(node.getElementsByClassName) ? + node.getElementsByClassName(NG_ANIMATE_CLASS_NAME) : + node.querySelectorAll('.' + NG_ANIMATE_CLASS_NAME); + forEach(nodes, function(element) { + element = angular.element(element); + var data = element.data(NG_ANIMATE_STATE); + if(data && data.active) { + forEach(data.active, function(runner) { + runner.cancel(); + }); + } + }); + } + } + + function cleanup(element, className) { + if(isMatchingElement(element, $rootElement)) { + if(!rootAnimateState.disabled) { + rootAnimateState.running = false; + rootAnimateState.structural = false; + } + } else if(className) { + var data = element.data(NG_ANIMATE_STATE) || {}; + + var removeAnimations = className === true; + if(!removeAnimations && data.active && data.active[className]) { + data.totalActive--; + delete data.active[className]; + } + + if(removeAnimations || !data.totalActive) { + element.removeClass(NG_ANIMATE_CLASS_NAME); + element.removeData(NG_ANIMATE_STATE); + } + } + } + + function animationsDisabled(element, parentElement) { + if (rootAnimateState.disabled) { + return true; + } + + if (isMatchingElement(element, $rootElement)) { + return rootAnimateState.running; + } + + var allowChildAnimations, parentRunningAnimation, hasParent; + do { + //the element did not reach the root element which means that it + //is not apart of the DOM. Therefore there is no reason to do + //any animations on it + if (parentElement.length === 0) break; + + var isRoot = isMatchingElement(parentElement, $rootElement); + var state = isRoot ? rootAnimateState : (parentElement.data(NG_ANIMATE_STATE) || {}); + if (state.disabled) { + return true; + } + + //no matter what, for an animation to work it must reach the root element + //this implies that the element is attached to the DOM when the animation is run + if (isRoot) { + hasParent = true; + } + + //once a flag is found that is strictly false then everything before + //it will be discarded and all child animations will be restricted + if (allowChildAnimations !== false) { + var animateChildrenFlag = parentElement.data(NG_ANIMATE_CHILDREN); + if(angular.isDefined(animateChildrenFlag)) { + allowChildAnimations = animateChildrenFlag; + } + } + + parentRunningAnimation = parentRunningAnimation || + state.running || + (state.last && !state.last.isClassBased); + } + while(parentElement = parentElement.parent()); + + return !hasParent || (!allowChildAnimations && parentRunningAnimation); + } + }]); + + $animateProvider.register('', ['$window', '$sniffer', '$timeout', '$$animateReflow', + function($window, $sniffer, $timeout, $$animateReflow) { + // Detect proper transitionend/animationend event names. + var CSS_PREFIX = '', TRANSITION_PROP, TRANSITIONEND_EVENT, ANIMATION_PROP, ANIMATIONEND_EVENT; + + // If unprefixed events are not supported but webkit-prefixed are, use the latter. + // Otherwise, just use W3C names, browsers not supporting them at all will just ignore them. + // Note: Chrome implements `window.onwebkitanimationend` and doesn't implement `window.onanimationend` + // but at the same time dispatches the `animationend` event and not `webkitAnimationEnd`. + // Register both events in case `window.onanimationend` is not supported because of that, + // do the same for `transitionend` as Safari is likely to exhibit similar behavior. + // Also, the only modern browser that uses vendor prefixes for transitions/keyframes is webkit + // therefore there is no reason to test anymore for other vendor prefixes: http://caniuse.com/#search=transition + if (window.ontransitionend === undefined && window.onwebkittransitionend !== undefined) { + CSS_PREFIX = '-webkit-'; + TRANSITION_PROP = 'WebkitTransition'; + TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend'; + } else { + TRANSITION_PROP = 'transition'; + TRANSITIONEND_EVENT = 'transitionend'; + } + + if (window.onanimationend === undefined && window.onwebkitanimationend !== undefined) { + CSS_PREFIX = '-webkit-'; + ANIMATION_PROP = 'WebkitAnimation'; + ANIMATIONEND_EVENT = 'webkitAnimationEnd animationend'; + } else { + ANIMATION_PROP = 'animation'; + ANIMATIONEND_EVENT = 'animationend'; + } + + var DURATION_KEY = 'Duration'; + var PROPERTY_KEY = 'Property'; + var DELAY_KEY = 'Delay'; + var ANIMATION_ITERATION_COUNT_KEY = 'IterationCount'; + var NG_ANIMATE_PARENT_KEY = '$$ngAnimateKey'; + var NG_ANIMATE_CSS_DATA_KEY = '$$ngAnimateCSS3Data'; + var NG_ANIMATE_BLOCK_CLASS_NAME = 'ng-animate-block-transitions'; + var ELAPSED_TIME_MAX_DECIMAL_PLACES = 3; + var CLOSING_TIME_BUFFER = 1.5; + var ONE_SECOND = 1000; + + var lookupCache = {}; + var parentCounter = 0; + var animationReflowQueue = []; + var cancelAnimationReflow; + function clearCacheAfterReflow() { + if (!cancelAnimationReflow) { + cancelAnimationReflow = $$animateReflow(function() { + animationReflowQueue = []; + cancelAnimationReflow = null; + lookupCache = {}; + }); + } + } + + function afterReflow(element, callback) { + if(cancelAnimationReflow) { + cancelAnimationReflow(); + } + animationReflowQueue.push(callback); + cancelAnimationReflow = $$animateReflow(function() { + forEach(animationReflowQueue, function(fn) { + fn(); + }); + + animationReflowQueue = []; + cancelAnimationReflow = null; + lookupCache = {}; + }); + } + + var closingTimer = null; + var closingTimestamp = 0; + var animationElementQueue = []; + function animationCloseHandler(element, totalTime) { + var node = extractElementNode(element); + element = angular.element(node); + + //this item will be garbage collected by the closing + //animation timeout + animationElementQueue.push(element); + + //but it may not need to cancel out the existing timeout + //if the timestamp is less than the previous one + var futureTimestamp = Date.now() + totalTime; + if(futureTimestamp <= closingTimestamp) { + return; + } + + $timeout.cancel(closingTimer); + + closingTimestamp = futureTimestamp; + closingTimer = $timeout(function() { + closeAllAnimations(animationElementQueue); + animationElementQueue = []; + }, totalTime, false); + } + + function closeAllAnimations(elements) { + forEach(elements, function(element) { + var elementData = element.data(NG_ANIMATE_CSS_DATA_KEY); + if(elementData) { + (elementData.closeAnimationFn || noop)(); + } + }); + } + + function getElementAnimationDetails(element, cacheKey) { + var data = cacheKey ? lookupCache[cacheKey] : null; + if(!data) { + var transitionDuration = 0; + var transitionDelay = 0; + var animationDuration = 0; + var animationDelay = 0; + var transitionDelayStyle; + var animationDelayStyle; + var transitionDurationStyle; + var transitionPropertyStyle; + + //we want all the styles defined before and after + forEach(element, function(element) { + if (element.nodeType == ELEMENT_NODE) { + var elementStyles = $window.getComputedStyle(element) || {}; + + transitionDurationStyle = elementStyles[TRANSITION_PROP + DURATION_KEY]; + + transitionDuration = Math.max(parseMaxTime(transitionDurationStyle), transitionDuration); + + transitionPropertyStyle = elementStyles[TRANSITION_PROP + PROPERTY_KEY]; + + transitionDelayStyle = elementStyles[TRANSITION_PROP + DELAY_KEY]; + + transitionDelay = Math.max(parseMaxTime(transitionDelayStyle), transitionDelay); + + animationDelayStyle = elementStyles[ANIMATION_PROP + DELAY_KEY]; + + animationDelay = Math.max(parseMaxTime(animationDelayStyle), animationDelay); + + var aDuration = parseMaxTime(elementStyles[ANIMATION_PROP + DURATION_KEY]); + + if(aDuration > 0) { + aDuration *= parseInt(elementStyles[ANIMATION_PROP + ANIMATION_ITERATION_COUNT_KEY], 10) || 1; + } + + animationDuration = Math.max(aDuration, animationDuration); + } + }); + data = { + total : 0, + transitionPropertyStyle: transitionPropertyStyle, + transitionDurationStyle: transitionDurationStyle, + transitionDelayStyle: transitionDelayStyle, + transitionDelay: transitionDelay, + transitionDuration: transitionDuration, + animationDelayStyle: animationDelayStyle, + animationDelay: animationDelay, + animationDuration: animationDuration + }; + if(cacheKey) { + lookupCache[cacheKey] = data; + } + } + return data; + } + + function parseMaxTime(str) { + var maxValue = 0; + var values = angular.isString(str) ? + str.split(/\s*,\s*/) : + []; + forEach(values, function(value) { + maxValue = Math.max(parseFloat(value) || 0, maxValue); + }); + return maxValue; + } + + function getCacheKey(element) { + var parentElement = element.parent(); + var parentID = parentElement.data(NG_ANIMATE_PARENT_KEY); + if(!parentID) { + parentElement.data(NG_ANIMATE_PARENT_KEY, ++parentCounter); + parentID = parentCounter; + } + return parentID + '-' + extractElementNode(element).getAttribute('class'); + } + + function animateSetup(animationEvent, element, className, calculationDecorator) { + var cacheKey = getCacheKey(element); + var eventCacheKey = cacheKey + ' ' + className; + var itemIndex = lookupCache[eventCacheKey] ? ++lookupCache[eventCacheKey].total : 0; + + var stagger = {}; + if(itemIndex > 0) { + var staggerClassName = className + '-stagger'; + var staggerCacheKey = cacheKey + ' ' + staggerClassName; + var applyClasses = !lookupCache[staggerCacheKey]; + + applyClasses && element.addClass(staggerClassName); + + stagger = getElementAnimationDetails(element, staggerCacheKey); + + applyClasses && element.removeClass(staggerClassName); + } + + /* the animation itself may need to add/remove special CSS classes + * before calculating the anmation styles */ + calculationDecorator = calculationDecorator || + function(fn) { return fn(); }; + + element.addClass(className); + + var formerData = element.data(NG_ANIMATE_CSS_DATA_KEY) || {}; + + var timings = calculationDecorator(function() { + return getElementAnimationDetails(element, eventCacheKey); + }); + + var transitionDuration = timings.transitionDuration; + var animationDuration = timings.animationDuration; + if(transitionDuration === 0 && animationDuration === 0) { + element.removeClass(className); + return false; + } + + element.data(NG_ANIMATE_CSS_DATA_KEY, { + running : formerData.running || 0, + itemIndex : itemIndex, + stagger : stagger, + timings : timings, + closeAnimationFn : noop + }); + + //temporarily disable the transition so that the enter styles + //don't animate twice (this is here to avoid a bug in Chrome/FF). + var isCurrentlyAnimating = formerData.running > 0 || animationEvent == 'setClass'; + if(transitionDuration > 0) { + blockTransitions(element, className, isCurrentlyAnimating); + } + + //staggering keyframe animations work by adjusting the `animation-delay` CSS property + //on the given element, however, the delay value can only calculated after the reflow + //since by that time $animate knows how many elements are being animated. Therefore, + //until the reflow occurs the element needs to be blocked (where the keyframe animation + //is set to `none 0s`). This blocking mechanism should only be set for when a stagger + //animation is detected and when the element item index is greater than 0. + if(animationDuration > 0 && stagger.animationDelay > 0 && stagger.animationDuration === 0) { + blockKeyframeAnimations(element); + } + + return true; + } + + function isStructuralAnimation(className) { + return className == 'ng-enter' || className == 'ng-move' || className == 'ng-leave'; + } + + function blockTransitions(element, className, isAnimating) { + if(isStructuralAnimation(className) || !isAnimating) { + extractElementNode(element).style[TRANSITION_PROP + PROPERTY_KEY] = 'none'; + } else { + element.addClass(NG_ANIMATE_BLOCK_CLASS_NAME); + } + } + + function blockKeyframeAnimations(element) { + extractElementNode(element).style[ANIMATION_PROP] = 'none 0s'; + } + + function unblockTransitions(element, className) { + var prop = TRANSITION_PROP + PROPERTY_KEY; + var node = extractElementNode(element); + if(node.style[prop] && node.style[prop].length > 0) { + node.style[prop] = ''; + } + element.removeClass(NG_ANIMATE_BLOCK_CLASS_NAME); + } + + function unblockKeyframeAnimations(element) { + var prop = ANIMATION_PROP; + var node = extractElementNode(element); + if(node.style[prop] && node.style[prop].length > 0) { + node.style[prop] = ''; + } + } + + function animateRun(animationEvent, element, className, activeAnimationComplete) { + var node = extractElementNode(element); + var elementData = element.data(NG_ANIMATE_CSS_DATA_KEY); + if(node.getAttribute('class').indexOf(className) == -1 || !elementData) { + activeAnimationComplete(); + return; + } + + var activeClassName = ''; + forEach(className.split(' '), function(klass, i) { + activeClassName += (i > 0 ? ' ' : '') + klass + '-active'; + }); + + var stagger = elementData.stagger; + var timings = elementData.timings; + var itemIndex = elementData.itemIndex; + var maxDuration = Math.max(timings.transitionDuration, timings.animationDuration); + var maxDelay = Math.max(timings.transitionDelay, timings.animationDelay); + var maxDelayTime = maxDelay * ONE_SECOND; + + var startTime = Date.now(); + var css3AnimationEvents = ANIMATIONEND_EVENT + ' ' + TRANSITIONEND_EVENT; + + var style = '', appliedStyles = []; + if(timings.transitionDuration > 0) { + var propertyStyle = timings.transitionPropertyStyle; + if(propertyStyle.indexOf('all') == -1) { + style += CSS_PREFIX + 'transition-property: ' + propertyStyle + ';'; + style += CSS_PREFIX + 'transition-duration: ' + timings.transitionDurationStyle + ';'; + appliedStyles.push(CSS_PREFIX + 'transition-property'); + appliedStyles.push(CSS_PREFIX + 'transition-duration'); + } + } + + if(itemIndex > 0) { + if(stagger.transitionDelay > 0 && stagger.transitionDuration === 0) { + var delayStyle = timings.transitionDelayStyle; + style += CSS_PREFIX + 'transition-delay: ' + + prepareStaggerDelay(delayStyle, stagger.transitionDelay, itemIndex) + '; '; + appliedStyles.push(CSS_PREFIX + 'transition-delay'); + } + + if(stagger.animationDelay > 0 && stagger.animationDuration === 0) { + style += CSS_PREFIX + 'animation-delay: ' + + prepareStaggerDelay(timings.animationDelayStyle, stagger.animationDelay, itemIndex) + '; '; + appliedStyles.push(CSS_PREFIX + 'animation-delay'); + } + } + + if(appliedStyles.length > 0) { + //the element being animated may sometimes contain comment nodes in + //the jqLite object, so we're safe to use a single variable to house + //the styles since there is always only one element being animated + var oldStyle = node.getAttribute('style') || ''; + node.setAttribute('style', oldStyle + '; ' + style); + } + + element.on(css3AnimationEvents, onAnimationProgress); + element.addClass(activeClassName); + elementData.closeAnimationFn = function() { + onEnd(); + activeAnimationComplete(); + }; + + var staggerTime = itemIndex * (Math.max(stagger.animationDelay, stagger.transitionDelay) || 0); + var animationTime = (maxDelay + maxDuration) * CLOSING_TIME_BUFFER; + var totalTime = (staggerTime + animationTime) * ONE_SECOND; + + elementData.running++; + animationCloseHandler(element, totalTime); + return onEnd; + + // This will automatically be called by $animate so + // there is no need to attach this internally to the + // timeout done method. + function onEnd(cancelled) { + element.off(css3AnimationEvents, onAnimationProgress); + element.removeClass(activeClassName); + animateClose(element, className); + var node = extractElementNode(element); + for (var i in appliedStyles) { + node.style.removeProperty(appliedStyles[i]); + } + } + + function onAnimationProgress(event) { + event.stopPropagation(); + var ev = event.originalEvent || event; + var timeStamp = ev.$manualTimeStamp || Date.now(); + + /* Firefox (or possibly just Gecko) likes to not round values up + * when a ms measurement is used for the animation */ + var elapsedTime = parseFloat(ev.elapsedTime.toFixed(ELAPSED_TIME_MAX_DECIMAL_PLACES)); + + /* $manualTimeStamp is a mocked timeStamp value which is set + * within browserTrigger(). This is only here so that tests can + * mock animations properly. Real events fallback to Date.now(), + * or, if they don't, then a timeStamp is automatically created for them. + * We're checking to see if the timeStamp surpasses the expected delay, + * but we're using elapsedTime instead of the timeStamp on the 2nd + * pre-condition since animations sometimes close off early */ + if(Math.max(timeStamp - startTime, 0) >= maxDelayTime && elapsedTime >= maxDuration) { + activeAnimationComplete(); + } + } + } + + function prepareStaggerDelay(delayStyle, staggerDelay, index) { + var style = ''; + forEach(delayStyle.split(','), function(val, i) { + style += (i > 0 ? ',' : '') + + (index * staggerDelay + parseInt(val, 10)) + 's'; + }); + return style; + } + + function animateBefore(animationEvent, element, className, calculationDecorator) { + if(animateSetup(animationEvent, element, className, calculationDecorator)) { + return function(cancelled) { + cancelled && animateClose(element, className); + }; + } + } + + function animateAfter(animationEvent, element, className, afterAnimationComplete) { + if(element.data(NG_ANIMATE_CSS_DATA_KEY)) { + return animateRun(animationEvent, element, className, afterAnimationComplete); + } else { + animateClose(element, className); + afterAnimationComplete(); + } + } + + function animate(animationEvent, element, className, animationComplete) { + //If the animateSetup function doesn't bother returning a + //cancellation function then it means that there is no animation + //to perform at all + var preReflowCancellation = animateBefore(animationEvent, element, className); + if (!preReflowCancellation) { + clearCacheAfterReflow(); + animationComplete(); + return; + } + + //There are two cancellation functions: one is before the first + //reflow animation and the second is during the active state + //animation. The first function will take care of removing the + //data from the element which will not make the 2nd animation + //happen in the first place + var cancel = preReflowCancellation; + afterReflow(element, function() { + unblockTransitions(element, className); + unblockKeyframeAnimations(element); + //once the reflow is complete then we point cancel to + //the new cancellation function which will remove all of the + //animation properties from the active animation + cancel = animateAfter(animationEvent, element, className, animationComplete); + }); + + return function(cancelled) { + (cancel || noop)(cancelled); + }; + } + + function animateClose(element, className) { + element.removeClass(className); + var data = element.data(NG_ANIMATE_CSS_DATA_KEY); + if(data) { + if(data.running) { + data.running--; + } + if(!data.running || data.running === 0) { + element.removeData(NG_ANIMATE_CSS_DATA_KEY); + } + } + } + + return { + enter : function(element, animationCompleted) { + return animate('enter', element, 'ng-enter', animationCompleted); + }, + + leave : function(element, animationCompleted) { + return animate('leave', element, 'ng-leave', animationCompleted); + }, + + move : function(element, animationCompleted) { + return animate('move', element, 'ng-move', animationCompleted); + }, + + beforeSetClass : function(element, add, remove, animationCompleted) { + var className = suffixClasses(remove, '-remove') + ' ' + + suffixClasses(add, '-add'); + var cancellationMethod = animateBefore('setClass', element, className, function(fn) { + /* when classes are removed from an element then the transition style + * that is applied is the transition defined on the element without the + * CSS class being there. This is how CSS3 functions outside of ngAnimate. + * http://plnkr.co/edit/j8OzgTNxHTb4n3zLyjGW?p=preview */ + var klass = element.attr('class'); + element.removeClass(remove); + element.addClass(add); + var timings = fn(); + element.attr('class', klass); + return timings; + }); + + if(cancellationMethod) { + afterReflow(element, function() { + unblockTransitions(element, className); + unblockKeyframeAnimations(element); + animationCompleted(); + }); + return cancellationMethod; + } + clearCacheAfterReflow(); + animationCompleted(); + }, + + beforeAddClass : function(element, className, animationCompleted) { + var cancellationMethod = animateBefore('addClass', element, suffixClasses(className, '-add'), function(fn) { + + /* when a CSS class is added to an element then the transition style that + * is applied is the transition defined on the element when the CSS class + * is added at the time of the animation. This is how CSS3 functions + * outside of ngAnimate. */ + element.addClass(className); + var timings = fn(); + element.removeClass(className); + return timings; + }); + + if(cancellationMethod) { + afterReflow(element, function() { + unblockTransitions(element, className); + unblockKeyframeAnimations(element); + animationCompleted(); + }); + return cancellationMethod; + } + clearCacheAfterReflow(); + animationCompleted(); + }, + + setClass : function(element, add, remove, animationCompleted) { + remove = suffixClasses(remove, '-remove'); + add = suffixClasses(add, '-add'); + var className = remove + ' ' + add; + return animateAfter('setClass', element, className, animationCompleted); + }, + + addClass : function(element, className, animationCompleted) { + return animateAfter('addClass', element, suffixClasses(className, '-add'), animationCompleted); + }, + + beforeRemoveClass : function(element, className, animationCompleted) { + var cancellationMethod = animateBefore('removeClass', element, suffixClasses(className, '-remove'), function(fn) { + /* when classes are removed from an element then the transition style + * that is applied is the transition defined on the element without the + * CSS class being there. This is how CSS3 functions outside of ngAnimate. + * http://plnkr.co/edit/j8OzgTNxHTb4n3zLyjGW?p=preview */ + var klass = element.attr('class'); + element.removeClass(className); + var timings = fn(); + element.attr('class', klass); + return timings; + }); + + if(cancellationMethod) { + afterReflow(element, function() { + unblockTransitions(element, className); + unblockKeyframeAnimations(element); + animationCompleted(); + }); + return cancellationMethod; + } + animationCompleted(); + }, + + removeClass : function(element, className, animationCompleted) { + return animateAfter('removeClass', element, suffixClasses(className, '-remove'), animationCompleted); + } + }; + + function suffixClasses(classes, suffix) { + var className = ''; + classes = angular.isArray(classes) ? classes : classes.split(/\s+/); + forEach(classes, function(klass, i) { + if(klass && klass.length > 0) { + className += (i > 0 ? ' ' : '') + klass + suffix; + } + }); + return className; + } + }]); + }]); + + +})(window, window.angular); diff --git a/1.2.30/angular-animate.min.js b/1.2.30/angular-animate.min.js new file mode 100644 index 0000000000..dfee70b40b --- /dev/null +++ b/1.2.30/angular-animate.min.js @@ -0,0 +1,28 @@ +/* + AngularJS v1.2.30 + (c) 2010-2014 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(G,d,P){'use strict';d.module("ngAnimate",["ng"]).directive("ngAnimateChildren",function(){return function(H,k,e){e=e.ngAnimateChildren;d.isString(e)&&0===e.length?k.data("$$ngAnimateChildren",!0):H.$watch(e,function(d){k.data("$$ngAnimateChildren",!!d)})}}).factory("$$animateReflow",["$$rAF","$document",function(d,k){var e=k[0].body;return function(k){return d(function(){k(e.offsetWidth)})}}]).config(["$provide","$animateProvider",function(H,k){function e(d){for(var e=0;e=y&&b>=r&&d()}var k=e(b);a=b.data(v);if(-1!=k.getAttribute("class").indexOf(c)&&a){var l="";x(c.split(" "),function(a,b){l+=(0 + * + * See {@link ngCookies.$cookies `$cookies`} and + * {@link ngCookies.$cookieStore `$cookieStore`} for usage. + */ + + +angular.module('ngCookies', ['ng']). + /** + * @ngdoc service + * @name $cookies + * + * @description + * Provides read/write access to browser's cookies. + * + * Only a simple Object is exposed and by adding or removing properties to/from this object, new + * cookies are created/deleted at the end of current $eval. + * The object's properties can only be strings. + * + * Requires the {@link ngCookies `ngCookies`} module to be installed. + * + * @example + * + * ```js + * angular.module('cookiesExample', ['ngCookies']) + * .controller('ExampleController', ['$cookies', function($cookies) { + * // Retrieving a cookie + * var favoriteCookie = $cookies.myFavorite; + * // Setting a cookie + * $cookies.myFavorite = 'oatmeal'; + * }]); + * ``` + */ + factory('$cookies', ['$rootScope', '$browser', function ($rootScope, $browser) { + var cookies = {}, + lastCookies = {}, + lastBrowserCookies, + runEval = false, + copy = angular.copy, + isUndefined = angular.isUndefined; + + //creates a poller fn that copies all cookies from the $browser to service & inits the service + $browser.addPollFn(function() { + var currentCookies = $browser.cookies(); + if (lastBrowserCookies != currentCookies) { //relies on browser.cookies() impl + lastBrowserCookies = currentCookies; + copy(currentCookies, lastCookies); + copy(currentCookies, cookies); + if (runEval) $rootScope.$apply(); + } + })(); + + runEval = true; + + //at the end of each eval, push cookies + //TODO: this should happen before the "delayed" watches fire, because if some cookies are not + // strings or browser refuses to store some cookies, we update the model in the push fn. + $rootScope.$watch(push); + + return cookies; + + + /** + * Pushes all the cookies from the service to the browser and verifies if all cookies were + * stored. + */ + function push() { + var name, + value, + browserCookies, + updated; + + //delete any cookies deleted in $cookies + for (name in lastCookies) { + if (isUndefined(cookies[name])) { + $browser.cookies(name, undefined); + } + } + + //update all cookies updated in $cookies + for(name in cookies) { + value = cookies[name]; + if (!angular.isString(value)) { + value = '' + value; + cookies[name] = value; + } + if (value !== lastCookies[name]) { + $browser.cookies(name, value); + updated = true; + } + } + + //verify what was actually stored + if (updated){ + updated = false; + browserCookies = $browser.cookies(); + + for (name in cookies) { + if (cookies[name] !== browserCookies[name]) { + //delete or reset all cookies that the browser dropped from $cookies + if (isUndefined(browserCookies[name])) { + delete cookies[name]; + } else { + cookies[name] = browserCookies[name]; + } + updated = true; + } + } + } + } + }]). + + + /** + * @ngdoc service + * @name $cookieStore + * @requires $cookies + * + * @description + * Provides a key-value (string-object) storage, that is backed by session cookies. + * Objects put or retrieved from this storage are automatically serialized or + * deserialized by angular's toJson/fromJson. + * + * Requires the {@link ngCookies `ngCookies`} module to be installed. + * + * @example + * + * ```js + * angular.module('cookieStoreExample', ['ngCookies']) + * .controller('ExampleController', ['$cookieStore', function($cookieStore) { + * // Put cookie + * $cookieStore.put('myFavorite','oatmeal'); + * // Get cookie + * var favoriteCookie = $cookieStore.get('myFavorite'); + * // Removing a cookie + * $cookieStore.remove('myFavorite'); + * }]); + * ``` + */ + factory('$cookieStore', ['$cookies', function($cookies) { + + return { + /** + * @ngdoc method + * @name $cookieStore#get + * + * @description + * Returns the value of given cookie key + * + * @param {string} key Id to use for lookup. + * @returns {Object} Deserialized cookie value. + */ + get: function(key) { + var value = $cookies[key]; + return value ? angular.fromJson(value) : value; + }, + + /** + * @ngdoc method + * @name $cookieStore#put + * + * @description + * Sets a value for given cookie key + * + * @param {string} key Id for the `value`. + * @param {Object} value Value to be stored. + */ + put: function(key, value) { + $cookies[key] = angular.toJson(value); + }, + + /** + * @ngdoc method + * @name $cookieStore#remove + * + * @description + * Remove given cookie + * + * @param {string} key Id of the key-value pair to delete. + */ + remove: function(key) { + delete $cookies[key]; + } + }; + + }]); + + +})(window, window.angular); diff --git a/1.2.30/angular-cookies.min.js b/1.2.30/angular-cookies.min.js new file mode 100644 index 0000000000..55dd8eb1de --- /dev/null +++ b/1.2.30/angular-cookies.min.js @@ -0,0 +1,8 @@ +/* + AngularJS v1.2.30 + (c) 2010-2014 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(p,f,n){'use strict';f.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(e,b){var c={},g={},h,k=!1,l=f.copy,m=f.isUndefined;b.addPollFn(function(){var a=b.cookies();h!=a&&(h=a,l(a,g),l(a,c),k&&e.$apply())})();k=!0;e.$watch(function(){var a,d,e;for(a in g)m(c[a])&&b.cookies(a,n);for(a in c)d=c[a],f.isString(d)||(d=""+d,c[a]=d),d!==g[a]&&(b.cookies(a,d),e=!0);if(e)for(a in d=b.cookies(),c)c[a]!==d[a]&&(m(d[a])?delete c[a]:c[a]=d[a])});return c}]).factory("$cookieStore", +["$cookies",function(e){return{get:function(b){return(b=e[b])?f.fromJson(b):b},put:function(b,c){e[b]=f.toJson(c)},remove:function(b){delete e[b]}}}])})(window,window.angular); +//# sourceMappingURL=angular-cookies.min.js.map diff --git a/1.2.30/angular-cookies.min.js.map b/1.2.30/angular-cookies.min.js.map new file mode 100644 index 0000000000..26f3616897 --- /dev/null +++ b/1.2.30/angular-cookies.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular-cookies.min.js", +"lineCount":7, +"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CAmBtCD,CAAAE,OAAA,CAAe,WAAf,CAA4B,CAAC,IAAD,CAA5B,CAAAC,QAAA,CA0BW,UA1BX,CA0BuB,CAAC,YAAD,CAAe,UAAf,CAA2B,QAAS,CAACC,CAAD,CAAaC,CAAb,CAAuB,CAAA,IACxEC,EAAU,EAD8D,CAExEC,EAAc,EAF0D,CAGxEC,CAHwE,CAIxEC,EAAU,CAAA,CAJ8D,CAKxEC,EAAOV,CAAAU,KALiE,CAMxEC,EAAcX,CAAAW,YAGlBN,EAAAO,UAAA,CAAmB,QAAQ,EAAG,CAC5B,IAAIC,EAAiBR,CAAAC,QAAA,EACjBE,EAAJ,EAA0BK,CAA1B,GACEL,CAGA,CAHqBK,CAGrB,CAFAH,CAAA,CAAKG,CAAL,CAAqBN,CAArB,CAEA,CADAG,CAAA,CAAKG,CAAL,CAAqBP,CAArB,CACA,CAAIG,CAAJ,EAAaL,CAAAU,OAAA,EAJf,CAF4B,CAA9B,CAAA,EAUAL,EAAA,CAAU,CAAA,CAKVL,EAAAW,OAAA,CASAC,QAAa,EAAG,CAAA,IACVC,CADU,CAEVC,CAFU,CAIVC,CAGJ,KAAKF,CAAL,GAAaV,EAAb,CACMI,CAAA,CAAYL,CAAA,CAAQW,CAAR,CAAZ,CAAJ,EACEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBhB,CAAvB,CAKJ,KAAIgB,CAAJ,GAAYX,EAAZ,CACEY,CAKA,CALQZ,CAAA,CAAQW,CAAR,CAKR,CAJKjB,CAAAoB,SAAA,CAAiBF,CAAjB,CAIL,GAHEA,CACA,CADQ,EACR,CADaA,CACb,CAAAZ,CAAA,CAAQW,CAAR,CAAA,CAAgBC,CAElB,EAAIA,CAAJ,GAAcX,CAAA,CAAYU,CAAZ,CAAd,GACEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBC,CAAvB,CACA,CAAAC,CAAA,CAAU,CAAA,CAFZ,CAOF,IAAIA,CAAJ,CAIE,IAAKF,CAAL,GAFAI,EAEaf,CAFID,CAAAC,QAAA,EAEJA,CAAAA,CAAb,CACMA,CAAA,CAAQW,CAAR,CAAJ,GAAsBI,CAAA,CAAeJ,CAAf,CAAtB,GAEMN,CAAA,CAAYU,CAAA,CAAeJ,CAAf,CAAZ,CAAJ,CACE,OAAOX,CAAA,CAAQW,CAAR,CADT,CAGEX,CAAA,CAAQW,CAAR,CAHF,CAGkBI,CAAA,CAAeJ,CAAf,CALpB,CAhCU,CAThB,CAEA,OAAOX,EA1BqE,CAA3D,CA1BvB,CAAAH,QAAA,CAoIW,cApIX;AAoI2B,CAAC,UAAD,CAAa,QAAQ,CAACmB,CAAD,CAAW,CAErD,MAAO,KAWAC,QAAQ,CAACC,CAAD,CAAM,CAEjB,MAAO,CADHN,CACG,CADKI,CAAA,CAASE,CAAT,CACL,EAAQxB,CAAAyB,SAAA,CAAiBP,CAAjB,CAAR,CAAkCA,CAFxB,CAXd,KA0BAQ,QAAQ,CAACF,CAAD,CAAMN,CAAN,CAAa,CACxBI,CAAA,CAASE,CAAT,CAAA,CAAgBxB,CAAA2B,OAAA,CAAeT,CAAf,CADQ,CA1BrB,QAuCGU,QAAQ,CAACJ,CAAD,CAAM,CACpB,OAAOF,CAAA,CAASE,CAAT,CADa,CAvCjB,CAF8C,CAAhC,CApI3B,CAnBsC,CAArC,CAAA,CAwMEzB,MAxMF,CAwMUA,MAAAC,QAxMV;", +"sources":["angular-cookies.js"], +"names":["window","angular","undefined","module","factory","$rootScope","$browser","cookies","lastCookies","lastBrowserCookies","runEval","copy","isUndefined","addPollFn","currentCookies","$apply","$watch","push","name","value","updated","isString","browserCookies","$cookies","get","key","fromJson","put","toJson","remove"] +} diff --git a/1.2.30/angular-csp.css b/1.2.30/angular-csp.css new file mode 100644 index 0000000000..3abb3a0e66 --- /dev/null +++ b/1.2.30/angular-csp.css @@ -0,0 +1,24 @@ +/* Include this file in your html if you are using the CSP mode. */ + +@charset "UTF-8"; + +[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], +.ng-cloak, .x-ng-cloak, +.ng-hide { + display: none !important; +} + +ng\:form { + display: block; +} + +.ng-animate-block-transitions { + transition:0s all!important; + -webkit-transition:0s all!important; +} + +/* show the element during a show/hide animation when the + * animation is ongoing, but the .ng-hide class is active */ +.ng-hide-add-active, .ng-hide-remove { + display: block!important; +} diff --git a/1.2.30/angular-loader.js b/1.2.30/angular-loader.js new file mode 100644 index 0000000000..768640ebc2 --- /dev/null +++ b/1.2.30/angular-loader.js @@ -0,0 +1,415 @@ +/** + * @license AngularJS v1.2.30 + * (c) 2010-2014 Google, Inc. http://angularjs.org + * License: MIT + */ + +(function() {'use strict'; + +/** + * @description + * + * This object provides a utility for producing rich Error messages within + * Angular. It can be called as follows: + * + * var exampleMinErr = minErr('example'); + * throw exampleMinErr('one', 'This {0} is {1}', foo, bar); + * + * The above creates an instance of minErr in the example namespace. The + * resulting error will have a namespaced error code of example.one. The + * resulting error will replace {0} with the value of foo, and {1} with the + * value of bar. The object is not restricted in the number of arguments it can + * take. + * + * If fewer arguments are specified than necessary for interpolation, the extra + * interpolation markers will be preserved in the final string. + * + * Since data will be parsed statically during a build step, some restrictions + * are applied with respect to how minErr instances are created and called. + * Instances should have names of the form namespaceMinErr for a minErr created + * using minErr('namespace') . Error codes, namespaces and template strings + * should all be static strings, not variables or general expressions. + * + * @param {string} module The namespace to use for the new minErr instance. + * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance + */ + +function minErr(module) { + return function () { + var code = arguments[0], + prefix = '[' + (module ? module + ':' : '') + code + '] ', + template = arguments[1], + templateArgs = arguments, + stringify = function (obj) { + if (typeof obj === 'function') { + return obj.toString().replace(/ \{[\s\S]*$/, ''); + } else if (typeof obj === 'undefined') { + return 'undefined'; + } else if (typeof obj !== 'string') { + return JSON.stringify(obj); + } + return obj; + }, + message, i; + + message = prefix + template.replace(/\{\d+\}/g, function (match) { + var index = +match.slice(1, -1), arg; + + if (index + 2 < templateArgs.length) { + arg = templateArgs[index + 2]; + if (typeof arg === 'function') { + return arg.toString().replace(/ ?\{[\s\S]*$/, ''); + } else if (typeof arg === 'undefined') { + return 'undefined'; + } else if (typeof arg !== 'string') { + return toJson(arg); + } + return arg; + } + return match; + }); + + message = message + '\nhttp://errors.angularjs.org/1.2.30/' + + (module ? module + '/' : '') + code; + for (i = 2; i < arguments.length; i++) { + message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' + + encodeURIComponent(stringify(arguments[i])); + } + + return new Error(message); + }; +} + +/** + * @ngdoc type + * @name angular.Module + * @module ng + * @description + * + * Interface for configuring angular {@link angular.module modules}. + */ + +function setupModuleLoader(window) { + + var $injectorMinErr = minErr('$injector'); + var ngMinErr = minErr('ng'); + + function ensure(obj, name, factory) { + return obj[name] || (obj[name] = factory()); + } + + var angular = ensure(window, 'angular', Object); + + // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap + angular.$$minErr = angular.$$minErr || minErr; + + return ensure(angular, 'module', function() { + /** @type {Object.} */ + var modules = {}; + + /** + * @ngdoc function + * @name angular.module + * @module ng + * @description + * + * The `angular.module` is a global place for creating, registering and retrieving Angular + * modules. + * All modules (angular core or 3rd party) that should be available to an application must be + * registered using this mechanism. + * + * When passed two or more arguments, a new module is created. If passed only one argument, an + * existing module (the name passed as the first argument to `module`) is retrieved. + * + * + * # Module + * + * A module is a collection of services, directives, controllers, filters, and configuration information. + * `angular.module` is used to configure the {@link auto.$injector $injector}. + * + * ```js + * // Create a new module + * var myModule = angular.module('myModule', []); + * + * // register a new service + * myModule.value('appName', 'MyCoolApp'); + * + * // configure existing services inside initialization blocks. + * myModule.config(['$locationProvider', function($locationProvider) { + * // Configure existing providers + * $locationProvider.hashPrefix('!'); + * }]); + * ``` + * + * Then you can create an injector and load your modules like this: + * + * ```js + * var injector = angular.injector(['ng', 'myModule']) + * ``` + * + * However it's more likely that you'll just use + * {@link ng.directive:ngApp ngApp} or + * {@link angular.bootstrap} to simplify this process for you. + * + * @param {!string} name The name of the module to create or retrieve. + * @param {!Array.=} requires If specified then new module is being created. If + * unspecified then the module is being retrieved for further configuration. + * @param {Function=} configFn Optional configuration function for the module. Same as + * {@link angular.Module#config Module#config()}. + * @returns {module} new module with the {@link angular.Module} api. + */ + return function module(name, requires, configFn) { + var assertNotHasOwnProperty = function(name, context) { + if (name === 'hasOwnProperty') { + throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context); + } + }; + + assertNotHasOwnProperty(name, 'module'); + if (requires && modules.hasOwnProperty(name)) { + modules[name] = null; + } + return ensure(modules, name, function() { + if (!requires) { + throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " + + "the module name or forgot to load it. If registering a module ensure that you " + + "specify the dependencies as the second argument.", name); + } + + /** @type {!Array.>} */ + var invokeQueue = []; + + /** @type {!Array.} */ + var runBlocks = []; + + var config = invokeLater('$injector', 'invoke'); + + /** @type {angular.Module} */ + var moduleInstance = { + // Private state + _invokeQueue: invokeQueue, + _runBlocks: runBlocks, + + /** + * @ngdoc property + * @name angular.Module#requires + * @module ng + * + * @description + * Holds the list of modules which the injector will load before the current module is + * loaded. + */ + requires: requires, + + /** + * @ngdoc property + * @name angular.Module#name + * @module ng + * + * @description + * Name of the module. + */ + name: name, + + + /** + * @ngdoc method + * @name angular.Module#provider + * @module ng + * @param {string} name service name + * @param {Function} providerType Construction function for creating new instance of the + * service. + * @description + * See {@link auto.$provide#provider $provide.provider()}. + */ + provider: invokeLater('$provide', 'provider'), + + /** + * @ngdoc method + * @name angular.Module#factory + * @module ng + * @param {string} name service name + * @param {Function} providerFunction Function for creating new instance of the service. + * @description + * See {@link auto.$provide#factory $provide.factory()}. + */ + factory: invokeLater('$provide', 'factory'), + + /** + * @ngdoc method + * @name angular.Module#service + * @module ng + * @param {string} name service name + * @param {Function} constructor A constructor function that will be instantiated. + * @description + * See {@link auto.$provide#service $provide.service()}. + */ + service: invokeLater('$provide', 'service'), + + /** + * @ngdoc method + * @name angular.Module#value + * @module ng + * @param {string} name service name + * @param {*} object Service instance object. + * @description + * See {@link auto.$provide#value $provide.value()}. + */ + value: invokeLater('$provide', 'value'), + + /** + * @ngdoc method + * @name angular.Module#constant + * @module ng + * @param {string} name constant name + * @param {*} object Constant value. + * @description + * Because the constant are fixed, they get applied before other provide methods. + * See {@link auto.$provide#constant $provide.constant()}. + */ + constant: invokeLater('$provide', 'constant', 'unshift'), + + /** + * @ngdoc method + * @name angular.Module#animation + * @module ng + * @param {string} name animation name + * @param {Function} animationFactory Factory function for creating new instance of an + * animation. + * @description + * + * **NOTE**: animations take effect only if the **ngAnimate** module is loaded. + * + * + * Defines an animation hook that can be later used with + * {@link ngAnimate.$animate $animate} service and directives that use this service. + * + * ```js + * module.animation('.animation-name', function($inject1, $inject2) { + * return { + * eventName : function(element, done) { + * //code to run the animation + * //once complete, then run done() + * return function cancellationFunction(element) { + * //code to cancel the animation + * } + * } + * } + * }) + * ``` + * + * See {@link ngAnimate.$animateProvider#register $animateProvider.register()} and + * {@link ngAnimate ngAnimate module} for more information. + */ + animation: invokeLater('$animateProvider', 'register'), + + /** + * @ngdoc method + * @name angular.Module#filter + * @module ng + * @param {string} name Filter name. + * @param {Function} filterFactory Factory function for creating new instance of filter. + * @description + * See {@link ng.$filterProvider#register $filterProvider.register()}. + */ + filter: invokeLater('$filterProvider', 'register'), + + /** + * @ngdoc method + * @name angular.Module#controller + * @module ng + * @param {string|Object} name Controller name, or an object map of controllers where the + * keys are the names and the values are the constructors. + * @param {Function} constructor Controller constructor function. + * @description + * See {@link ng.$controllerProvider#register $controllerProvider.register()}. + */ + controller: invokeLater('$controllerProvider', 'register'), + + /** + * @ngdoc method + * @name angular.Module#directive + * @module ng + * @param {string|Object} name Directive name, or an object map of directives where the + * keys are the names and the values are the factories. + * @param {Function} directiveFactory Factory function for creating new instance of + * directives. + * @description + * See {@link ng.$compileProvider#directive $compileProvider.directive()}. + */ + directive: invokeLater('$compileProvider', 'directive'), + + /** + * @ngdoc method + * @name angular.Module#config + * @module ng + * @param {Function} configFn Execute this function on module load. Useful for service + * configuration. + * @description + * Use this method to register work which needs to be performed on module loading. + * For more about how to configure services, see + * {@link providers#providers_provider-recipe Provider Recipe}. + */ + config: config, + + /** + * @ngdoc method + * @name angular.Module#run + * @module ng + * @param {Function} initializationFn Execute this function after injector creation. + * Useful for application initialization. + * @description + * Use this method to register work which should be performed when the injector is done + * loading all modules. + */ + run: function(block) { + runBlocks.push(block); + return this; + } + }; + + if (configFn) { + config(configFn); + } + + return moduleInstance; + + /** + * @param {string} provider + * @param {string} method + * @param {String=} insertMethod + * @returns {angular.Module} + */ + function invokeLater(provider, method, insertMethod) { + return function() { + invokeQueue[insertMethod || 'push']([provider, method, arguments]); + return moduleInstance; + }; + } + }); + }; + }); + +} + +setupModuleLoader(window); +})(window); + +/** + * Closure compiler type information + * + * @typedef { { + * requires: !Array., + * invokeQueue: !Array.>, + * + * service: function(string, Function):angular.Module, + * factory: function(string, Function):angular.Module, + * value: function(string, *):angular.Module, + * + * filter: function(string, Function):angular.Module, + * + * init: function(Function):angular.Module + * } } + */ +angular.Module; + diff --git a/1.2.30/angular-loader.min.js b/1.2.30/angular-loader.min.js new file mode 100644 index 0000000000..bb12d1d2a2 --- /dev/null +++ b/1.2.30/angular-loader.min.js @@ -0,0 +1,9 @@ +/* + AngularJS v1.2.30 + (c) 2010-2014 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(){'use strict';function d(a){return function(){var c=arguments[0],b,c="["+(a?a+":":"")+c+"] http://errors.angularjs.org/1.2.30/"+(a?a+"/":"")+c;for(b=1;b 0 && iteration >= count) { + var fnIndex; + deferred.resolve(iteration); + + angular.forEach(repeatFns, function(fn, index) { + if (fn.id === promise.$$intervalId) fnIndex = index; + }); + + if (fnIndex !== undefined) { + repeatFns.splice(fnIndex, 1); + } + } + + if (!skipApply) $rootScope.$apply(); + } + + repeatFns.push({ + nextTime:(now + delay), + delay: delay, + fn: tick, + id: nextRepeatId, + deferred: deferred + }); + repeatFns.sort(function(a,b){ return a.nextTime - b.nextTime;}); + + nextRepeatId++; + return promise; + }; + /** + * @ngdoc method + * @name $interval#cancel + * + * @description + * Cancels a task associated with the `promise`. + * + * @param {promise} promise A promise from calling the `$interval` function. + * @returns {boolean} Returns `true` if the task was successfully cancelled. + */ + $interval.cancel = function(promise) { + if(!promise) return false; + var fnIndex; + + angular.forEach(repeatFns, function(fn, index) { + if (fn.id === promise.$$intervalId) fnIndex = index; + }); + + if (fnIndex !== undefined) { + repeatFns[fnIndex].deferred.reject('canceled'); + repeatFns.splice(fnIndex, 1); + return true; + } + + return false; + }; + + /** + * @ngdoc method + * @name $interval#flush + * @description + * + * Runs interval tasks scheduled to be run in the next `millis` milliseconds. + * + * @param {number=} millis maximum timeout amount to flush up until. + * + * @return {number} The amount of time moved forward. + */ + $interval.flush = function(millis) { + now += millis; + while (repeatFns.length && repeatFns[0].nextTime <= now) { + var task = repeatFns[0]; + task.fn(); + task.nextTime += task.delay; + repeatFns.sort(function(a,b){ return a.nextTime - b.nextTime;}); + } + return millis; + }; + + return $interval; + }]; +}; + + +/* jshint -W101 */ +/* The R_ISO8061_STR regex is never going to fit into the 100 char limit! + * This directive should go inside the anonymous function but a bug in JSHint means that it would + * not be enacted early enough to prevent the warning. + */ +var R_ISO8061_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?:\:?(\d\d)(?:\:?(\d\d)(?:\.(\d{3}))?)?)?(Z|([+-])(\d\d):?(\d\d)))?$/; + +function jsonStringToDate(string) { + var match; + if (match = string.match(R_ISO8061_STR)) { + var date = new Date(0), + tzHour = 0, + tzMin = 0; + if (match[9]) { + tzHour = int(match[9] + match[10]); + tzMin = int(match[9] + match[11]); + } + date.setUTCFullYear(int(match[1]), int(match[2]) - 1, int(match[3])); + date.setUTCHours(int(match[4]||0) - tzHour, + int(match[5]||0) - tzMin, + int(match[6]||0), + int(match[7]||0)); + return date; + } + return string; +} + +function int(str) { + return parseInt(str, 10); +} + +function padNumber(num, digits, trim) { + var neg = ''; + if (num < 0) { + neg = '-'; + num = -num; + } + num = '' + num; + while(num.length < digits) num = '0' + num; + if (trim) + num = num.substr(num.length - digits); + return neg + num; +} + + +/** + * @ngdoc type + * @name angular.mock.TzDate + * @description + * + * *NOTE*: this is not an injectable instance, just a globally available mock class of `Date`. + * + * Mock of the Date type which has its timezone specified via constructor arg. + * + * The main purpose is to create Date-like instances with timezone fixed to the specified timezone + * offset, so that we can test code that depends on local timezone settings without dependency on + * the time zone settings of the machine where the code is running. + * + * @param {number} offset Offset of the *desired* timezone in hours (fractions will be honored) + * @param {(number|string)} timestamp Timestamp representing the desired time in *UTC* + * + * @example + * !!!! WARNING !!!!! + * This is not a complete Date object so only methods that were implemented can be called safely. + * To make matters worse, TzDate instances inherit stuff from Date via a prototype. + * + * We do our best to intercept calls to "unimplemented" methods, but since the list of methods is + * incomplete we might be missing some non-standard methods. This can result in errors like: + * "Date.prototype.foo called on incompatible Object". + * + * ```js + * var newYearInBratislava = new TzDate(-1, '2009-12-31T23:00:00Z'); + * newYearInBratislava.getTimezoneOffset() => -60; + * newYearInBratislava.getFullYear() => 2010; + * newYearInBratislava.getMonth() => 0; + * newYearInBratislava.getDate() => 1; + * newYearInBratislava.getHours() => 0; + * newYearInBratislava.getMinutes() => 0; + * newYearInBratislava.getSeconds() => 0; + * ``` + * + */ +angular.mock.TzDate = function (offset, timestamp) { + var self = new Date(0); + if (angular.isString(timestamp)) { + var tsStr = timestamp; + + self.origDate = jsonStringToDate(timestamp); + + timestamp = self.origDate.getTime(); + if (isNaN(timestamp)) + throw { + name: "Illegal Argument", + message: "Arg '" + tsStr + "' passed into TzDate constructor is not a valid date string" + }; + } else { + self.origDate = new Date(timestamp); + } + + var localOffset = new Date(timestamp).getTimezoneOffset(); + self.offsetDiff = localOffset*60*1000 - offset*1000*60*60; + self.date = new Date(timestamp + self.offsetDiff); + + self.getTime = function() { + return self.date.getTime() - self.offsetDiff; + }; + + self.toLocaleDateString = function() { + return self.date.toLocaleDateString(); + }; + + self.getFullYear = function() { + return self.date.getFullYear(); + }; + + self.getMonth = function() { + return self.date.getMonth(); + }; + + self.getDate = function() { + return self.date.getDate(); + }; + + self.getHours = function() { + return self.date.getHours(); + }; + + self.getMinutes = function() { + return self.date.getMinutes(); + }; + + self.getSeconds = function() { + return self.date.getSeconds(); + }; + + self.getMilliseconds = function() { + return self.date.getMilliseconds(); + }; + + self.getTimezoneOffset = function() { + return offset * 60; + }; + + self.getUTCFullYear = function() { + return self.origDate.getUTCFullYear(); + }; + + self.getUTCMonth = function() { + return self.origDate.getUTCMonth(); + }; + + self.getUTCDate = function() { + return self.origDate.getUTCDate(); + }; + + self.getUTCHours = function() { + return self.origDate.getUTCHours(); + }; + + self.getUTCMinutes = function() { + return self.origDate.getUTCMinutes(); + }; + + self.getUTCSeconds = function() { + return self.origDate.getUTCSeconds(); + }; + + self.getUTCMilliseconds = function() { + return self.origDate.getUTCMilliseconds(); + }; + + self.getDay = function() { + return self.date.getDay(); + }; + + // provide this method only on browsers that already have it + if (self.toISOString) { + self.toISOString = function() { + return padNumber(self.origDate.getUTCFullYear(), 4) + '-' + + padNumber(self.origDate.getUTCMonth() + 1, 2) + '-' + + padNumber(self.origDate.getUTCDate(), 2) + 'T' + + padNumber(self.origDate.getUTCHours(), 2) + ':' + + padNumber(self.origDate.getUTCMinutes(), 2) + ':' + + padNumber(self.origDate.getUTCSeconds(), 2) + '.' + + padNumber(self.origDate.getUTCMilliseconds(), 3) + 'Z'; + }; + } + + //hide all methods not implemented in this mock that the Date prototype exposes + var unimplementedMethods = ['getUTCDay', + 'getYear', 'setDate', 'setFullYear', 'setHours', 'setMilliseconds', + 'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', 'setUTCFullYear', + 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds', + 'setYear', 'toDateString', 'toGMTString', 'toJSON', 'toLocaleFormat', 'toLocaleString', + 'toLocaleTimeString', 'toSource', 'toString', 'toTimeString', 'toUTCString', 'valueOf']; + + angular.forEach(unimplementedMethods, function(methodName) { + self[methodName] = function() { + throw new Error("Method '" + methodName + "' is not implemented in the TzDate mock"); + }; + }); + + return self; +}; + +//make "tzDateInstance instanceof Date" return true +angular.mock.TzDate.prototype = Date.prototype; +/* jshint +W101 */ + +angular.mock.animate = angular.module('ngAnimateMock', ['ng']) + + .config(['$provide', function($provide) { + + var reflowQueue = []; + $provide.value('$$animateReflow', function(fn) { + var index = reflowQueue.length; + reflowQueue.push(fn); + return function cancel() { + reflowQueue.splice(index, 1); + }; + }); + + $provide.decorator('$animate', function($delegate, $$asyncCallback) { + var animate = { + queue : [], + enabled : $delegate.enabled, + triggerCallbacks : function() { + $$asyncCallback.flush(); + }, + triggerReflow : function() { + angular.forEach(reflowQueue, function(fn) { + fn(); + }); + reflowQueue = []; + } + }; + + angular.forEach( + ['enter','leave','move','addClass','removeClass','setClass'], function(method) { + animate[method] = function() { + animate.queue.push({ + event : method, + element : arguments[0], + args : arguments + }); + $delegate[method].apply($delegate, arguments); + }; + }); + + return animate; + }); + + }]); + + +/** + * @ngdoc function + * @name angular.mock.dump + * @description + * + * *NOTE*: this is not an injectable instance, just a globally available function. + * + * Method for serializing common angular objects (scope, elements, etc..) into strings, useful for + * debugging. + * + * This method is also available on window, where it can be used to display objects on debug + * console. + * + * @param {*} object - any object to turn into string. + * @return {string} a serialized string of the argument + */ +angular.mock.dump = function(object) { + return serialize(object); + + function serialize(object) { + var out; + + if (angular.isElement(object)) { + object = angular.element(object); + out = angular.element('
'); + angular.forEach(object, function(element) { + out.append(angular.element(element).clone()); + }); + out = out.html(); + } else if (angular.isArray(object)) { + out = []; + angular.forEach(object, function(o) { + out.push(serialize(o)); + }); + out = '[ ' + out.join(', ') + ' ]'; + } else if (angular.isObject(object)) { + if (angular.isFunction(object.$eval) && angular.isFunction(object.$apply)) { + out = serializeScope(object); + } else if (object instanceof Error) { + out = object.stack || ('' + object.name + ': ' + object.message); + } else { + // TODO(i): this prevents methods being logged, + // we should have a better way to serialize objects + out = angular.toJson(object, true); + } + } else { + out = String(object); + } + + return out; + } + + function serializeScope(scope, offset) { + offset = offset || ' '; + var log = [offset + 'Scope(' + scope.$id + '): {']; + for ( var key in scope ) { + if (Object.prototype.hasOwnProperty.call(scope, key) && !key.match(/^(\$|this)/)) { + log.push(' ' + key + ': ' + angular.toJson(scope[key])); + } + } + var child = scope.$$childHead; + while(child) { + log.push(serializeScope(child, offset + ' ')); + child = child.$$nextSibling; + } + log.push('}'); + return log.join('\n' + offset); + } +}; + +/** + * @ngdoc service + * @name $httpBackend + * @description + * Fake HTTP backend implementation suitable for unit testing applications that use the + * {@link ng.$http $http service}. + * + * *Note*: For fake HTTP backend implementation suitable for end-to-end testing or backend-less + * development please see {@link ngMockE2E.$httpBackend e2e $httpBackend mock}. + * + * During unit testing, we want our unit tests to run quickly and have no external dependencies so + * we don’t want to send [XHR](https://developer.mozilla.org/en/xmlhttprequest) or + * [JSONP](http://en.wikipedia.org/wiki/JSONP) requests to a real server. All we really need is + * to verify whether a certain request has been sent or not, or alternatively just let the + * application make requests, respond with pre-trained responses and assert that the end result is + * what we expect it to be. + * + * This mock implementation can be used to respond with static or dynamic responses via the + * `expect` and `when` apis and their shortcuts (`expectGET`, `whenPOST`, etc). + * + * When an Angular application needs some data from a server, it calls the $http service, which + * sends the request to a real server using $httpBackend service. With dependency injection, it is + * easy to inject $httpBackend mock (which has the same API as $httpBackend) and use it to verify + * the requests and respond with some testing data without sending a request to a real server. + * + * There are two ways to specify what test data should be returned as http responses by the mock + * backend when the code under test makes http requests: + * + * - `$httpBackend.expect` - specifies a request expectation + * - `$httpBackend.when` - specifies a backend definition + * + * + * # Request Expectations vs Backend Definitions + * + * Request expectations provide a way to make assertions about requests made by the application and + * to define responses for those requests. The test will fail if the expected requests are not made + * or they are made in the wrong order. + * + * Backend definitions allow you to define a fake backend for your application which doesn't assert + * if a particular request was made or not, it just returns a trained response if a request is made. + * The test will pass whether or not the request gets made during testing. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Request expectationsBackend definitions
Syntax.expect(...).respond(...).when(...).respond(...)
Typical usagestrict unit testsloose (black-box) unit testing
Fulfills multiple requestsNOYES
Order of requests mattersYESNO
Request requiredYESNO
Response requiredoptional (see below)YES
+ * + * In cases where both backend definitions and request expectations are specified during unit + * testing, the request expectations are evaluated first. + * + * If a request expectation has no response specified, the algorithm will search your backend + * definitions for an appropriate response. + * + * If a request didn't match any expectation or if the expectation doesn't have the response + * defined, the backend definitions are evaluated in sequential order to see if any of them match + * the request. The response from the first matched definition is returned. + * + * + * # Flushing HTTP requests + * + * The $httpBackend used in production always responds to requests asynchronously. If we preserved + * this behavior in unit testing, we'd have to create async unit tests, which are hard to write, + * to follow and to maintain. But neither can the testing mock respond synchronously; that would + * change the execution of the code under test. For this reason, the mock $httpBackend has a + * `flush()` method, which allows the test to explicitly flush pending requests. This preserves + * the async api of the backend, while allowing the test to execute synchronously. + * + * + * # Unit testing with mock $httpBackend + * The following code shows how to setup and use the mock backend when unit testing a controller. + * First we create the controller under test: + * + ```js + // The controller code + function MyController($scope, $http) { + var authToken; + + $http.get('/auth.py').success(function(data, status, headers) { + authToken = headers('A-Token'); + $scope.user = data; + }); + + $scope.saveMessage = function(message) { + var headers = { 'Authorization': authToken }; + $scope.status = 'Saving...'; + + $http.post('/add-msg.py', message, { headers: headers } ).success(function(response) { + $scope.status = ''; + }).error(function() { + $scope.status = 'ERROR!'; + }); + }; + } + ``` + * + * Now we setup the mock backend and create the test specs: + * + ```js + // testing controller + describe('MyController', function() { + var $httpBackend, $rootScope, createController; + + beforeEach(inject(function($injector) { + // Set up the mock http service responses + $httpBackend = $injector.get('$httpBackend'); + // backend definition common for all tests + $httpBackend.when('GET', '/auth.py').respond({userId: 'userX'}, {'A-Token': 'xxx'}); + + // Get hold of a scope (i.e. the root scope) + $rootScope = $injector.get('$rootScope'); + // The $controller service is used to create instances of controllers + var $controller = $injector.get('$controller'); + + createController = function() { + return $controller('MyController', {'$scope' : $rootScope }); + }; + })); + + + afterEach(function() { + $httpBackend.verifyNoOutstandingExpectation(); + $httpBackend.verifyNoOutstandingRequest(); + }); + + + it('should fetch authentication token', function() { + $httpBackend.expectGET('/auth.py'); + var controller = createController(); + $httpBackend.flush(); + }); + + + it('should send msg to server', function() { + var controller = createController(); + $httpBackend.flush(); + + // now you don’t care about the authentication, but + // the controller will still send the request and + // $httpBackend will respond without you having to + // specify the expectation and response for this request + + $httpBackend.expectPOST('/add-msg.py', 'message content').respond(201, ''); + $rootScope.saveMessage('message content'); + expect($rootScope.status).toBe('Saving...'); + $httpBackend.flush(); + expect($rootScope.status).toBe(''); + }); + + + it('should send auth header', function() { + var controller = createController(); + $httpBackend.flush(); + + $httpBackend.expectPOST('/add-msg.py', undefined, function(headers) { + // check if the header was send, if it wasn't the expectation won't + // match the request and the test will fail + return headers['Authorization'] == 'xxx'; + }).respond(201, ''); + + $rootScope.saveMessage('whatever'); + $httpBackend.flush(); + }); + }); + ``` + */ +angular.mock.$HttpBackendProvider = function() { + this.$get = ['$rootScope', createHttpBackendMock]; +}; + +/** + * General factory function for $httpBackend mock. + * Returns instance for unit testing (when no arguments specified): + * - passing through is disabled + * - auto flushing is disabled + * + * Returns instance for e2e testing (when `$delegate` and `$browser` specified): + * - passing through (delegating request to real backend) is enabled + * - auto flushing is enabled + * + * @param {Object=} $delegate Real $httpBackend instance (allow passing through if specified) + * @param {Object=} $browser Auto-flushing enabled if specified + * @return {Object} Instance of $httpBackend mock + */ +function createHttpBackendMock($rootScope, $delegate, $browser) { + var definitions = [], + expectations = [], + responses = [], + responsesPush = angular.bind(responses, responses.push), + copy = angular.copy; + + function createResponse(status, data, headers, statusText) { + if (angular.isFunction(status)) return status; + + return function() { + return angular.isNumber(status) + ? [status, data, headers, statusText] + : [200, status, data]; + }; + } + + // TODO(vojta): change params to: method, url, data, headers, callback + function $httpBackend(method, url, data, callback, headers, timeout, withCredentials) { + var xhr = new MockXhr(), + expectation = expectations[0], + wasExpected = false; + + function prettyPrint(data) { + return (angular.isString(data) || angular.isFunction(data) || data instanceof RegExp) + ? data + : angular.toJson(data); + } + + function wrapResponse(wrapped) { + if (!$browser && timeout && timeout.then) timeout.then(handleTimeout); + + return handleResponse; + + function handleResponse() { + var response = wrapped.response(method, url, data, headers); + xhr.$$respHeaders = response[2]; + callback(copy(response[0]), copy(response[1]), xhr.getAllResponseHeaders(), + copy(response[3] || '')); + } + + function handleTimeout() { + for (var i = 0, ii = responses.length; i < ii; i++) { + if (responses[i] === handleResponse) { + responses.splice(i, 1); + callback(-1, undefined, ''); + break; + } + } + } + } + + if (expectation && expectation.match(method, url)) { + if (!expectation.matchData(data)) + throw new Error('Expected ' + expectation + ' with different data\n' + + 'EXPECTED: ' + prettyPrint(expectation.data) + '\nGOT: ' + data); + + if (!expectation.matchHeaders(headers)) + throw new Error('Expected ' + expectation + ' with different headers\n' + + 'EXPECTED: ' + prettyPrint(expectation.headers) + '\nGOT: ' + + prettyPrint(headers)); + + expectations.shift(); + + if (expectation.response) { + responses.push(wrapResponse(expectation)); + return; + } + wasExpected = true; + } + + var i = -1, definition; + while ((definition = definitions[++i])) { + if (definition.match(method, url, data, headers || {})) { + if (definition.response) { + // if $browser specified, we do auto flush all requests + ($browser ? $browser.defer : responsesPush)(wrapResponse(definition)); + } else if (definition.passThrough) { + $delegate(method, url, data, callback, headers, timeout, withCredentials); + } else throw new Error('No response defined !'); + return; + } + } + throw wasExpected ? + new Error('No response defined !') : + new Error('Unexpected request: ' + method + ' ' + url + '\n' + + (expectation ? 'Expected ' + expectation : 'No more request expected')); + } + + /** + * @ngdoc method + * @name $httpBackend#when + * @description + * Creates a new backend definition. + * + * @param {string} method HTTP method. + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives + * data string and returns true if the data is as expected. + * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header + * object and returns true if the headers match the current definition. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. + * + * - respond – + * `{function([status,] data[, headers, statusText]) + * | function(function(method, url, data, headers)}` + * – The respond method takes a set of static data to be returned or a function that can + * return an array containing response status (number), response data (string), response + * headers (Object), and the text for the status (string). + */ + $httpBackend.when = function(method, url, data, headers) { + var definition = new MockHttpExpectation(method, url, data, headers), + chain = { + respond: function(status, data, headers, statusText) { + definition.response = createResponse(status, data, headers, statusText); + } + }; + + if ($browser) { + chain.passThrough = function() { + definition.passThrough = true; + }; + } + + definitions.push(definition); + return chain; + }; + + /** + * @ngdoc method + * @name $httpBackend#whenGET + * @description + * Creates a new backend definition for GET requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#whenHEAD + * @description + * Creates a new backend definition for HEAD requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#whenDELETE + * @description + * Creates a new backend definition for DELETE requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#whenPOST + * @description + * Creates a new backend definition for POST requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives + * data string and returns true if the data is as expected. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#whenPUT + * @description + * Creates a new backend definition for PUT requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives + * data string and returns true if the data is as expected. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#whenPATCH + * @description + * Creates a new backend definition for PATCH requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives + * data string and returns true if the data is as expected. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#whenJSONP + * @description + * Creates a new backend definition for JSONP requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. + */ + createShortMethods('when'); + + + /** + * @ngdoc method + * @name $httpBackend#expect + * @description + * Creates a new request expectation. + * + * @param {string} method HTTP method. + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that + * receives data string and returns true if the data is as expected, or Object if request body + * is in JSON format. + * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header + * object and returns true if the headers match the current expectation. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. + * + * - respond – + * `{function([status,] data[, headers, statusText]) + * | function(function(method, url, data, headers)}` + * – The respond method takes a set of static data to be returned or a function that can + * return an array containing response status (number), response data (string), response + * headers (Object), and the text for the status (string). + */ + $httpBackend.expect = function(method, url, data, headers) { + var expectation = new MockHttpExpectation(method, url, data, headers); + expectations.push(expectation); + return { + respond: function (status, data, headers, statusText) { + expectation.response = createResponse(status, data, headers, statusText); + } + }; + }; + + + /** + * @ngdoc method + * @name $httpBackend#expectGET + * @description + * Creates a new request expectation for GET requests. For more info see `expect()`. + * + * @param {string|RegExp} url HTTP url. + * @param {Object=} headers HTTP headers. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. See #expect for more info. + */ + + /** + * @ngdoc method + * @name $httpBackend#expectHEAD + * @description + * Creates a new request expectation for HEAD requests. For more info see `expect()`. + * + * @param {string|RegExp} url HTTP url. + * @param {Object=} headers HTTP headers. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#expectDELETE + * @description + * Creates a new request expectation for DELETE requests. For more info see `expect()`. + * + * @param {string|RegExp} url HTTP url. + * @param {Object=} headers HTTP headers. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#expectPOST + * @description + * Creates a new request expectation for POST requests. For more info see `expect()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that + * receives data string and returns true if the data is as expected, or Object if request body + * is in JSON format. + * @param {Object=} headers HTTP headers. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#expectPUT + * @description + * Creates a new request expectation for PUT requests. For more info see `expect()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that + * receives data string and returns true if the data is as expected, or Object if request body + * is in JSON format. + * @param {Object=} headers HTTP headers. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#expectPATCH + * @description + * Creates a new request expectation for PATCH requests. For more info see `expect()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that + * receives data string and returns true if the data is as expected, or Object if request body + * is in JSON format. + * @param {Object=} headers HTTP headers. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#expectJSONP + * @description + * Creates a new request expectation for JSONP requests. For more info see `expect()`. + * + * @param {string|RegExp} url HTTP url. + * @returns {requestHandler} Returns an object with a `respond` method that controls how a matched + * request is handled. + */ + createShortMethods('expect'); + + + /** + * @ngdoc method + * @name $httpBackend#flush + * @description + * Flushes all pending requests using the trained responses. + * + * @param {number=} count Number of responses to flush (in the order they arrived). If undefined, + * all pending requests will be flushed. If there are no pending requests when the flush method + * is called an exception is thrown (as this typically a sign of programming error). + */ + $httpBackend.flush = function(count) { + $rootScope.$digest(); + if (!responses.length) throw new Error('No pending request to flush !'); + + if (angular.isDefined(count)) { + while (count--) { + if (!responses.length) throw new Error('No more pending request to flush !'); + responses.shift()(); + } + } else { + while (responses.length) { + responses.shift()(); + } + } + $httpBackend.verifyNoOutstandingExpectation(); + }; + + + /** + * @ngdoc method + * @name $httpBackend#verifyNoOutstandingExpectation + * @description + * Verifies that all of the requests defined via the `expect` api were made. If any of the + * requests were not made, verifyNoOutstandingExpectation throws an exception. + * + * Typically, you would call this method following each test case that asserts requests using an + * "afterEach" clause. + * + * ```js + * afterEach($httpBackend.verifyNoOutstandingExpectation); + * ``` + */ + $httpBackend.verifyNoOutstandingExpectation = function() { + $rootScope.$digest(); + if (expectations.length) { + throw new Error('Unsatisfied requests: ' + expectations.join(', ')); + } + }; + + + /** + * @ngdoc method + * @name $httpBackend#verifyNoOutstandingRequest + * @description + * Verifies that there are no outstanding requests that need to be flushed. + * + * Typically, you would call this method following each test case that asserts requests using an + * "afterEach" clause. + * + * ```js + * afterEach($httpBackend.verifyNoOutstandingRequest); + * ``` + */ + $httpBackend.verifyNoOutstandingRequest = function() { + if (responses.length) { + throw new Error('Unflushed requests: ' + responses.length); + } + }; + + + /** + * @ngdoc method + * @name $httpBackend#resetExpectations + * @description + * Resets all request expectations, but preserves all backend definitions. Typically, you would + * call resetExpectations during a multiple-phase test when you want to reuse the same instance of + * $httpBackend mock. + */ + $httpBackend.resetExpectations = function() { + expectations.length = 0; + responses.length = 0; + }; + + return $httpBackend; + + + function createShortMethods(prefix) { + angular.forEach(['GET', 'DELETE', 'JSONP', 'HEAD'], function(method) { + $httpBackend[prefix + method] = function(url, headers) { + return $httpBackend[prefix](method, url, undefined, headers); + }; + }); + + angular.forEach(['PUT', 'POST', 'PATCH'], function(method) { + $httpBackend[prefix + method] = function(url, data, headers) { + return $httpBackend[prefix](method, url, data, headers); + }; + }); + } +} + +function MockHttpExpectation(method, url, data, headers) { + + this.data = data; + this.headers = headers; + + this.match = function(m, u, d, h) { + if (method != m) return false; + if (!this.matchUrl(u)) return false; + if (angular.isDefined(d) && !this.matchData(d)) return false; + if (angular.isDefined(h) && !this.matchHeaders(h)) return false; + return true; + }; + + this.matchUrl = function(u) { + if (!url) return true; + if (angular.isFunction(url.test)) return url.test(u); + return url == u; + }; + + this.matchHeaders = function(h) { + if (angular.isUndefined(headers)) return true; + if (angular.isFunction(headers)) return headers(h); + return angular.equals(headers, h); + }; + + this.matchData = function(d) { + if (angular.isUndefined(data)) return true; + if (data && angular.isFunction(data.test)) return data.test(d); + if (data && angular.isFunction(data)) return data(d); + if (data && !angular.isString(data)) { + return angular.equals(angular.fromJson(angular.toJson(data)), angular.fromJson(d)); + } + return data == d; + }; + + this.toString = function() { + return method + ' ' + url; + }; +} + +function createMockXhr() { + return new MockXhr(); +} + +function MockXhr() { + + // hack for testing $http, $httpBackend + MockXhr.$$lastInstance = this; + + this.open = function(method, url, async) { + this.$$method = method; + this.$$url = url; + this.$$async = async; + this.$$reqHeaders = {}; + this.$$respHeaders = {}; + }; + + this.send = function(data) { + this.$$data = data; + }; + + this.setRequestHeader = function(key, value) { + this.$$reqHeaders[key] = value; + }; + + this.getResponseHeader = function(name) { + // the lookup must be case insensitive, + // that's why we try two quick lookups first and full scan last + var header = this.$$respHeaders[name]; + if (header) return header; + + name = angular.lowercase(name); + header = this.$$respHeaders[name]; + if (header) return header; + + header = undefined; + angular.forEach(this.$$respHeaders, function(headerVal, headerName) { + if (!header && angular.lowercase(headerName) == name) header = headerVal; + }); + return header; + }; + + this.getAllResponseHeaders = function() { + var lines = []; + + angular.forEach(this.$$respHeaders, function(value, key) { + lines.push(key + ': ' + value); + }); + return lines.join('\n'); + }; + + this.abort = angular.noop; +} + + +/** + * @ngdoc service + * @name $timeout + * @description + * + * This service is just a simple decorator for {@link ng.$timeout $timeout} service + * that adds a "flush" and "verifyNoPendingTasks" methods. + */ + +angular.mock.$TimeoutDecorator = function($delegate, $browser) { + + /** + * @ngdoc method + * @name $timeout#flush + * @description + * + * Flushes the queue of pending tasks. + * + * @param {number=} delay maximum timeout amount to flush up until + */ + $delegate.flush = function(delay) { + $browser.defer.flush(delay); + }; + + /** + * @ngdoc method + * @name $timeout#verifyNoPendingTasks + * @description + * + * Verifies that there are no pending tasks that need to be flushed. + */ + $delegate.verifyNoPendingTasks = function() { + if ($browser.deferredFns.length) { + throw new Error('Deferred tasks to flush (' + $browser.deferredFns.length + '): ' + + formatPendingTasksAsString($browser.deferredFns)); + } + }; + + function formatPendingTasksAsString(tasks) { + var result = []; + angular.forEach(tasks, function(task) { + result.push('{id: ' + task.id + ', ' + 'time: ' + task.time + '}'); + }); + + return result.join(', '); + } + + return $delegate; +}; + +angular.mock.$RAFDecorator = function($delegate) { + var queue = []; + var rafFn = function(fn) { + var index = queue.length; + queue.push(fn); + return function() { + queue.splice(index, 1); + }; + }; + + rafFn.supported = $delegate.supported; + + rafFn.flush = function() { + if(queue.length === 0) { + throw new Error('No rAF callbacks present'); + } + + var length = queue.length; + for(var i=0;i'); + }; +}; + +/** + * @ngdoc module + * @name ngMock + * @packageName angular-mocks + * @description + * + * # ngMock + * + * The `ngMock` module provides support to inject and mock Angular services into unit tests. + * In addition, ngMock also extends various core ng services such that they can be + * inspected and controlled in a synchronous manner within test code. + * + * + *
+ * + */ +angular.module('ngMock', ['ng']).provider({ + $browser: angular.mock.$BrowserProvider, + $exceptionHandler: angular.mock.$ExceptionHandlerProvider, + $log: angular.mock.$LogProvider, + $interval: angular.mock.$IntervalProvider, + $httpBackend: angular.mock.$HttpBackendProvider, + $rootElement: angular.mock.$RootElementProvider +}).config(['$provide', function($provide) { + $provide.decorator('$timeout', angular.mock.$TimeoutDecorator); + $provide.decorator('$$rAF', angular.mock.$RAFDecorator); + $provide.decorator('$$asyncCallback', angular.mock.$AsyncCallbackDecorator); +}]); + +/** + * @ngdoc module + * @name ngMockE2E + * @module ngMockE2E + * @packageName angular-mocks + * @description + * + * The `ngMockE2E` is an angular module which contains mocks suitable for end-to-end testing. + * Currently there is only one mock present in this module - + * the {@link ngMockE2E.$httpBackend e2e $httpBackend} mock. + */ +angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) { + $provide.decorator('$httpBackend', angular.mock.e2e.$httpBackendDecorator); +}]); + +/** + * @ngdoc service + * @name $httpBackend + * @module ngMockE2E + * @description + * Fake HTTP backend implementation suitable for end-to-end testing or backend-less development of + * applications that use the {@link ng.$http $http service}. + * + * *Note*: For fake http backend implementation suitable for unit testing please see + * {@link ngMock.$httpBackend unit-testing $httpBackend mock}. + * + * This implementation can be used to respond with static or dynamic responses via the `when` api + * and its shortcuts (`whenGET`, `whenPOST`, etc) and optionally pass through requests to the + * real $httpBackend for specific requests (e.g. to interact with certain remote apis or to fetch + * templates from a webserver). + * + * As opposed to unit-testing, in an end-to-end testing scenario or in scenario when an application + * is being developed with the real backend api replaced with a mock, it is often desirable for + * certain category of requests to bypass the mock and issue a real http request (e.g. to fetch + * templates or static files from the webserver). To configure the backend with this behavior + * use the `passThrough` request handler of `when` instead of `respond`. + * + * Additionally, we don't want to manually have to flush mocked out requests like we do during unit + * testing. For this reason the e2e $httpBackend flushes mocked out requests + * automatically, closely simulating the behavior of the XMLHttpRequest object. + * + * To setup the application to run with this http backend, you have to create a module that depends + * on the `ngMockE2E` and your application modules and defines the fake backend: + * + * ```js + * myAppDev = angular.module('myAppDev', ['myApp', 'ngMockE2E']); + * myAppDev.run(function($httpBackend) { + * phones = [{name: 'phone1'}, {name: 'phone2'}]; + * + * // returns the current list of phones + * $httpBackend.whenGET('/phones').respond(phones); + * + * // adds a new phone to the phones array + * $httpBackend.whenPOST('/phones').respond(function(method, url, data) { + * var phone = angular.fromJson(data); + * phones.push(phone); + * return [200, phone, {}]; + * }); + * $httpBackend.whenGET(/^\/templates\//).passThrough(); + * //... + * }); + * ``` + * + * Afterwards, bootstrap your app with this new module. + */ + +/** + * @ngdoc method + * @name $httpBackend#when + * @module ngMockE2E + * @description + * Creates a new backend definition. + * + * @param {string} method HTTP method. + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp)=} data HTTP request body. + * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header + * object and returns true if the headers match the current definition. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * controls how a matched request is handled. + * + * - respond – + * `{function([status,] data[, headers, statusText]) + * | function(function(method, url, data, headers)}` + * – The respond method takes a set of static data to be returned or a function that can return + * an array containing response status (number), response data (string), response headers + * (Object), and the text for the status (string). + * - passThrough – `{function()}` – Any request matching a backend definition with + * `passThrough` handler will be passed through to the real backend (an XHR request will be made + * to the server.) + */ + +/** + * @ngdoc method + * @name $httpBackend#whenGET + * @module ngMockE2E + * @description + * Creates a new backend definition for GET requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * controls how a matched request is handled. + */ + +/** + * @ngdoc method + * @name $httpBackend#whenHEAD + * @module ngMockE2E + * @description + * Creates a new backend definition for HEAD requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * controls how a matched request is handled. + */ + +/** + * @ngdoc method + * @name $httpBackend#whenDELETE + * @module ngMockE2E + * @description + * Creates a new backend definition for DELETE requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * controls how a matched request is handled. + */ + +/** + * @ngdoc method + * @name $httpBackend#whenPOST + * @module ngMockE2E + * @description + * Creates a new backend definition for POST requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp)=} data HTTP request body. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * controls how a matched request is handled. + */ + +/** + * @ngdoc method + * @name $httpBackend#whenPUT + * @module ngMockE2E + * @description + * Creates a new backend definition for PUT requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp)=} data HTTP request body. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * controls how a matched request is handled. + */ + +/** + * @ngdoc method + * @name $httpBackend#whenPATCH + * @module ngMockE2E + * @description + * Creates a new backend definition for PATCH requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp)=} data HTTP request body. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * controls how a matched request is handled. + */ + +/** + * @ngdoc method + * @name $httpBackend#whenJSONP + * @module ngMockE2E + * @description + * Creates a new backend definition for JSONP requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * controls how a matched request is handled. + */ +angular.mock.e2e = {}; +angular.mock.e2e.$httpBackendDecorator = + ['$rootScope', '$delegate', '$browser', createHttpBackendMock]; + + +angular.mock.clearDataCache = function() { + var key, + cache = angular.element.cache; + + for(key in cache) { + if (Object.prototype.hasOwnProperty.call(cache,key)) { + var handle = cache[key].handle; + + handle && angular.element(handle.elem).off(); + delete cache[key]; + } + } +}; + + +if(window.jasmine || window.mocha) { + + var currentSpec = null, + isSpecRunning = function() { + return !!currentSpec; + }; + + + (window.beforeEach || window.setup)(function() { + currentSpec = this; + }); + + (window.afterEach || window.teardown)(function() { + var injector = currentSpec.$injector; + + angular.forEach(currentSpec.$modules, function(module) { + if (module && module.$$hashKey) { + module.$$hashKey = undefined; + } + }); + + currentSpec.$injector = null; + currentSpec.$modules = null; + currentSpec = null; + + if (injector) { + injector.get('$rootElement').off(); + injector.get('$browser').pollFns.length = 0; + } + + angular.mock.clearDataCache(); + + // clean up jquery's fragment cache + angular.forEach(angular.element.fragments, function(val, key) { + delete angular.element.fragments[key]; + }); + + MockXhr.$$lastInstance = null; + + angular.forEach(angular.callbacks, function(val, key) { + delete angular.callbacks[key]; + }); + angular.callbacks.counter = 0; + }); + + /** + * @ngdoc function + * @name angular.mock.module + * @description + * + * *NOTE*: This function is also published on window for easy access.
+ * *NOTE*: This function is declared ONLY WHEN running tests with jasmine or mocha + * + * This function registers a module configuration code. It collects the configuration information + * which will be used when the injector is created by {@link angular.mock.inject inject}. + * + * See {@link angular.mock.inject inject} for usage example + * + * @param {...(string|Function|Object)} fns any number of modules which are represented as string + * aliases or as anonymous module initialization functions. The modules are used to + * configure the injector. The 'ng' and 'ngMock' modules are automatically loaded. If an + * object literal is passed they will be registered as values in the module, the key being + * the module name and the value being what is returned. + */ + window.module = angular.mock.module = function() { + var moduleFns = Array.prototype.slice.call(arguments, 0); + return isSpecRunning() ? workFn() : workFn; + ///////////////////// + function workFn() { + if (currentSpec.$injector) { + throw new Error('Injector already created, can not register a module!'); + } else { + var modules = currentSpec.$modules || (currentSpec.$modules = []); + angular.forEach(moduleFns, function(module) { + if (angular.isObject(module) && !angular.isArray(module)) { + modules.push(function($provide) { + angular.forEach(module, function(value, key) { + $provide.value(key, value); + }); + }); + } else { + modules.push(module); + } + }); + } + } + }; + + /** + * @ngdoc function + * @name angular.mock.inject + * @description + * + * *NOTE*: This function is also published on window for easy access.
+ * *NOTE*: This function is declared ONLY WHEN running tests with jasmine or mocha + * + * The inject function wraps a function into an injectable function. The inject() creates new + * instance of {@link auto.$injector $injector} per test, which is then used for + * resolving references. + * + * + * ## Resolving References (Underscore Wrapping) + * Often, we would like to inject a reference once, in a `beforeEach()` block and reuse this + * in multiple `it()` clauses. To be able to do this we must assign the reference to a variable + * that is declared in the scope of the `describe()` block. Since we would, most likely, want + * the variable to have the same name of the reference we have a problem, since the parameter + * to the `inject()` function would hide the outer variable. + * + * To help with this, the injected parameters can, optionally, be enclosed with underscores. + * These are ignored by the injector when the reference name is resolved. + * + * For example, the parameter `_myService_` would be resolved as the reference `myService`. + * Since it is available in the function body as _myService_, we can then assign it to a variable + * defined in an outer scope. + * + * ``` + * // Defined out reference variable outside + * var myService; + * + * // Wrap the parameter in underscores + * beforeEach( inject( function(_myService_){ + * myService = _myService_; + * })); + * + * // Use myService in a series of tests. + * it('makes use of myService', function() { + * myService.doStuff(); + * }); + * + * ``` + * + * See also {@link angular.mock.module angular.mock.module} + * + * ## Example + * Example of what a typical jasmine tests looks like with the inject method. + * ```js + * + * angular.module('myApplicationModule', []) + * .value('mode', 'app') + * .value('version', 'v1.0.1'); + * + * + * describe('MyApp', function() { + * + * // You need to load modules that you want to test, + * // it loads only the "ng" module by default. + * beforeEach(module('myApplicationModule')); + * + * + * // inject() is used to inject arguments of all given functions + * it('should provide a version', inject(function(mode, version) { + * expect(version).toEqual('v1.0.1'); + * expect(mode).toEqual('app'); + * })); + * + * + * // The inject and module method can also be used inside of the it or beforeEach + * it('should override a version and test the new version is injected', function() { + * // module() takes functions or strings (module aliases) + * module(function($provide) { + * $provide.value('version', 'overridden'); // override version here + * }); + * + * inject(function(version) { + * expect(version).toEqual('overridden'); + * }); + * }); + * }); + * + * ``` + * + * @param {...Function} fns any number of functions which will be injected using the injector. + */ + + + + var ErrorAddingDeclarationLocationStack = function(e, errorForStack) { + this.message = e.message; + this.name = e.name; + if (e.line) this.line = e.line; + if (e.sourceId) this.sourceId = e.sourceId; + if (e.stack && errorForStack) + this.stack = e.stack + '\n' + errorForStack.stack; + if (e.stackArray) this.stackArray = e.stackArray; + }; + ErrorAddingDeclarationLocationStack.prototype.toString = Error.prototype.toString; + + window.inject = angular.mock.inject = function() { + var blockFns = Array.prototype.slice.call(arguments, 0); + var errorForStack = new Error('Declaration Location'); + return isSpecRunning() ? workFn.call(currentSpec) : workFn; + ///////////////////// + function workFn() { + var modules = currentSpec.$modules || []; + + modules.unshift('ngMock'); + modules.unshift('ng'); + var injector = currentSpec.$injector; + if (!injector) { + injector = currentSpec.$injector = angular.injector(modules); + } + for(var i = 0, ii = blockFns.length; i < ii; i++) { + try { + /* jshint -W040 *//* Jasmine explicitly provides a `this` object when calling functions */ + injector.invoke(blockFns[i] || angular.noop, this); + /* jshint +W040 */ + } catch (e) { + if (e.stack && errorForStack) { + throw new ErrorAddingDeclarationLocationStack(e, errorForStack); + } + throw e; + } finally { + errorForStack = null; + } + } + } + }; +} + + +})(window, window.angular); diff --git a/1.2.30/angular-resource.js b/1.2.30/angular-resource.js new file mode 100644 index 0000000000..ba5a8d3f26 --- /dev/null +++ b/1.2.30/angular-resource.js @@ -0,0 +1,627 @@ +/** + * @license AngularJS v1.2.30 + * (c) 2010-2014 Google, Inc. http://angularjs.org + * License: MIT + */ +(function(window, angular, undefined) {'use strict'; + +var $resourceMinErr = angular.$$minErr('$resource'); + +// Helper functions and regex to lookup a dotted path on an object +// stopping at undefined/null. The path must be composed of ASCII +// identifiers (just like $parse) +var MEMBER_NAME_REGEX = /^(\.[a-zA-Z_$][0-9a-zA-Z_$]*)+$/; + +function isValidDottedPath(path) { + return (path != null && path !== '' && path !== 'hasOwnProperty' && + MEMBER_NAME_REGEX.test('.' + path)); +} + +function lookupDottedPath(obj, path) { + if (!isValidDottedPath(path)) { + throw $resourceMinErr('badmember', 'Dotted member path "@{0}" is invalid.', path); + } + var keys = path.split('.'); + for (var i = 0, ii = keys.length; i < ii && obj !== undefined; i++) { + var key = keys[i]; + obj = (obj !== null) ? obj[key] : undefined; + } + return obj; +} + +/** + * Create a shallow copy of an object and clear other fields from the destination + */ +function shallowClearAndCopy(src, dst) { + dst = dst || {}; + + angular.forEach(dst, function(value, key){ + delete dst[key]; + }); + + for (var key in src) { + if (src.hasOwnProperty(key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) { + dst[key] = src[key]; + } + } + + return dst; +} + +/** + * @ngdoc module + * @name ngResource + * @description + * + * # ngResource + * + * The `ngResource` module provides interaction support with RESTful services + * via the $resource service. + * + * + *
+ * + * See {@link ngResource.$resource `$resource`} for usage. + */ + +/** + * @ngdoc service + * @name $resource + * @requires $http + * + * @description + * A factory which creates a resource object that lets you interact with + * [RESTful](http://en.wikipedia.org/wiki/Representational_State_Transfer) server-side data sources. + * + * The returned resource object has action methods which provide high-level behaviors without + * the need to interact with the low level {@link ng.$http $http} service. + * + * Requires the {@link ngResource `ngResource`} module to be installed. + * + * @param {string} url A parametrized URL template with parameters prefixed by `:` as in + * `/user/:username`. If you are using a URL with a port number (e.g. + * `http://example.com:8080/api`), it will be respected. + * + * If you are using a url with a suffix, just add the suffix, like this: + * `$resource('http://example.com/resource.json')` or `$resource('http://example.com/:id.json')` + * or even `$resource('http://example.com/resource/:resource_id.:format')` + * If the parameter before the suffix is empty, :resource_id in this case, then the `/.` will be + * collapsed down to a single `.`. If you need this sequence to appear and not collapse then you + * can escape it with `/\.`. + * + * @param {Object=} paramDefaults Default values for `url` parameters. These can be overridden in + * `actions` methods. If any of the parameter value is a function, it will be executed every time + * when a param value needs to be obtained for a request (unless the param was overridden). + * + * Each key value in the parameter object is first bound to url template if present and then any + * excess keys are appended to the url search query after the `?`. + * + * Given a template `/path/:verb` and parameter `{verb:'greet', salutation:'Hello'}` results in + * URL `/path/greet?salutation=Hello`. + * + * If the parameter value is prefixed with `@` then the value for that parameter will be extracted + * from the corresponding property on the `data` object (provided when calling an action method). For + * example, if the `defaultParam` object is `{someParam: '@someProp'}` then the value of `someParam` + * will be `data.someProp`. + * + * @param {Object.=} actions Hash with declaration of custom action that should extend + * the default set of resource actions. The declaration should be created in the format of {@link + * ng.$http#usage_parameters $http.config}: + * + * {action1: {method:?, params:?, isArray:?, headers:?, ...}, + * action2: {method:?, params:?, isArray:?, headers:?, ...}, + * ...} + * + * Where: + * + * - **`action`** – {string} – The name of action. This name becomes the name of the method on + * your resource object. + * - **`method`** – {string} – Case insensitive HTTP method (e.g. `GET`, `POST`, `PUT`, + * `DELETE`, `JSONP`, etc). + * - **`params`** – {Object=} – Optional set of pre-bound parameters for this action. If any of + * the parameter value is a function, it will be executed every time when a param value needs to + * be obtained for a request (unless the param was overridden). + * - **`url`** – {string} – action specific `url` override. The url templating is supported just + * like for the resource-level urls. + * - **`isArray`** – {boolean=} – If true then the returned object for this action is an array, + * see `returns` section. + * - **`transformRequest`** – + * `{function(data, headersGetter)|Array.}` – + * transform function or an array of such functions. The transform function takes the http + * request body and headers and returns its transformed (typically serialized) version. + * By default, transformRequest will contain one function that checks if the request data is + * an object and serializes to using `angular.toJson`. To prevent this behavior, set + * `transformRequest` to an empty array: `transformRequest: []` + * - **`transformResponse`** – + * `{function(data, headersGetter)|Array.}` – + * transform function or an array of such functions. The transform function takes the http + * response body and headers and returns its transformed (typically deserialized) version. + * By default, transformResponse will contain one function that checks if the response looks like + * a JSON string and deserializes it using `angular.fromJson`. To prevent this behavior, set + * `transformResponse` to an empty array: `transformResponse: []` + * - **`cache`** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the + * GET request, otherwise if a cache instance built with + * {@link ng.$cacheFactory $cacheFactory}, this cache will be used for + * caching. + * - **`timeout`** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise} that + * should abort the request when resolved. + * - **`withCredentials`** - `{boolean}` - whether to set the `withCredentials` flag on the + * XHR object. See + * [requests with credentials](https://developer.mozilla.org/en/http_access_control#section_5) + * for more information. + * - **`responseType`** - `{string}` - see + * [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType). + * - **`interceptor`** - `{Object=}` - The interceptor object has two optional methods - + * `response` and `responseError`. Both `response` and `responseError` interceptors get called + * with `http response` object. See {@link ng.$http $http interceptors}. + * + * @returns {Object} A resource "class" object with methods for the default set of resource actions + * optionally extended with custom `actions`. The default set contains these actions: + * ```js + * { 'get': {method:'GET'}, + * 'save': {method:'POST'}, + * 'query': {method:'GET', isArray:true}, + * 'remove': {method:'DELETE'}, + * 'delete': {method:'DELETE'} }; + * ``` + * + * Calling these methods invoke an {@link ng.$http} with the specified http method, + * destination and parameters. When the data is returned from the server then the object is an + * instance of the resource class. The actions `save`, `remove` and `delete` are available on it + * as methods with the `$` prefix. This allows you to easily perform CRUD operations (create, + * read, update, delete) on server-side data like this: + * ```js + * var User = $resource('/user/:userId', {userId:'@id'}); + * var user = User.get({userId:123}, function() { + * user.abc = true; + * user.$save(); + * }); + * ``` + * + * It is important to realize that invoking a $resource object method immediately returns an + * empty reference (object or array depending on `isArray`). Once the data is returned from the + * server the existing reference is populated with the actual data. This is a useful trick since + * usually the resource is assigned to a model which is then rendered by the view. Having an empty + * object results in no rendering, once the data arrives from the server then the object is + * populated with the data and the view automatically re-renders itself showing the new data. This + * means that in most cases one never has to write a callback function for the action methods. + * + * The action methods on the class object or instance object can be invoked with the following + * parameters: + * + * - HTTP GET "class" actions: `Resource.action([parameters], [success], [error])` + * - non-GET "class" actions: `Resource.action([parameters], postData, [success], [error])` + * - non-GET instance actions: `instance.$action([parameters], [success], [error])` + * + * Success callback is called with (value, responseHeaders) arguments. Error callback is called + * with (httpResponse) argument. + * + * Class actions return empty instance (with additional properties below). + * Instance actions return promise of the action. + * + * The Resource instances and collection have these additional properties: + * + * - `$promise`: the {@link ng.$q promise} of the original server interaction that created this + * instance or collection. + * + * On success, the promise is resolved with the same resource instance or collection object, + * updated with data from server. This makes it easy to use in + * {@link ngRoute.$routeProvider resolve section of $routeProvider.when()} to defer view + * rendering until the resource(s) are loaded. + * + * On failure, the promise is resolved with the {@link ng.$http http response} object, without + * the `resource` property. + * + * If an interceptor object was provided, the promise will instead be resolved with the value + * returned by the interceptor. + * + * - `$resolved`: `true` after first server interaction is completed (either with success or + * rejection), `false` before that. Knowing if the Resource has been resolved is useful in + * data-binding. + * + * @example + * + * # Credit card resource + * + * ```js + // Define CreditCard class + var CreditCard = $resource('/user/:userId/card/:cardId', + {userId:123, cardId:'@id'}, { + charge: {method:'POST', params:{charge:true}} + }); + + // We can retrieve a collection from the server + var cards = CreditCard.query(function() { + // GET: /user/123/card + // server returns: [ {id:456, number:'1234', name:'Smith'} ]; + + var card = cards[0]; + // each item is an instance of CreditCard + expect(card instanceof CreditCard).toEqual(true); + card.name = "J. Smith"; + // non GET methods are mapped onto the instances + card.$save(); + // POST: /user/123/card/456 {id:456, number:'1234', name:'J. Smith'} + // server returns: {id:456, number:'1234', name: 'J. Smith'}; + + // our custom method is mapped as well. + card.$charge({amount:9.99}); + // POST: /user/123/card/456?amount=9.99&charge=true {id:456, number:'1234', name:'J. Smith'} + }); + + // we can create an instance as well + var newCard = new CreditCard({number:'0123'}); + newCard.name = "Mike Smith"; + newCard.$save(); + // POST: /user/123/card {number:'0123', name:'Mike Smith'} + // server returns: {id:789, number:'0123', name: 'Mike Smith'}; + expect(newCard.id).toEqual(789); + * ``` + * + * The object returned from this function execution is a resource "class" which has "static" method + * for each action in the definition. + * + * Calling these methods invoke `$http` on the `url` template with the given `method`, `params` and + * `headers`. + * When the data is returned from the server then the object is an instance of the resource type and + * all of the non-GET methods are available with `$` prefix. This allows you to easily support CRUD + * operations (create, read, update, delete) on server-side data. + + ```js + var User = $resource('/user/:userId', {userId:'@id'}); + User.get({userId:123}, function(user) { + user.abc = true; + user.$save(); + }); + ``` + * + * It's worth noting that the success callback for `get`, `query` and other methods gets passed + * in the response that came from the server as well as $http header getter function, so one + * could rewrite the above example and get access to http headers as: + * + ```js + var User = $resource('/user/:userId', {userId:'@id'}); + User.get({userId:123}, function(u, getResponseHeaders){ + u.abc = true; + u.$save(function(u, putResponseHeaders) { + //u => saved user object + //putResponseHeaders => $http header getter + }); + }); + ``` + * + * You can also access the raw `$http` promise via the `$promise` property on the object returned + * + ``` + var User = $resource('/user/:userId', {userId:'@id'}); + User.get({userId:123}) + .$promise.then(function(user) { + $scope.user = user; + }); + ``` + + * # Creating a custom 'PUT' request + * In this example we create a custom method on our resource to make a PUT request + * ```js + * var app = angular.module('app', ['ngResource', 'ngRoute']); + * + * // Some APIs expect a PUT request in the format URL/object/ID + * // Here we are creating an 'update' method + * app.factory('Notes', ['$resource', function($resource) { + * return $resource('/notes/:id', null, + * { + * 'update': { method:'PUT' } + * }); + * }]); + * + * // In our controller we get the ID from the URL using ngRoute and $routeParams + * // We pass in $routeParams and our Notes factory along with $scope + * app.controller('NotesCtrl', ['$scope', '$routeParams', 'Notes', + function($scope, $routeParams, Notes) { + * // First get a note object from the factory + * var note = Notes.get({ id:$routeParams.id }); + * $id = note.id; + * + * // Now call update passing in the ID first then the object you are updating + * Notes.update({ id:$id }, note); + * + * // This will PUT /notes/ID with the note object in the request payload + * }]); + * ``` + */ +angular.module('ngResource', ['ng']). + factory('$resource', ['$http', '$q', function($http, $q) { + + var DEFAULT_ACTIONS = { + 'get': {method:'GET'}, + 'save': {method:'POST'}, + 'query': {method:'GET', isArray:true}, + 'remove': {method:'DELETE'}, + 'delete': {method:'DELETE'} + }; + var noop = angular.noop, + forEach = angular.forEach, + extend = angular.extend, + copy = angular.copy, + isFunction = angular.isFunction; + + /** + * We need our custom method because encodeURIComponent is too aggressive and doesn't follow + * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path + * segments: + * segment = *pchar + * pchar = unreserved / pct-encoded / sub-delims / ":" / "@" + * pct-encoded = "%" HEXDIG HEXDIG + * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" + * sub-delims = "!" / "$" / "&" / "'" / "(" / ")" + * / "*" / "+" / "," / ";" / "=" + */ + function encodeUriSegment(val) { + return encodeUriQuery(val, true). + replace(/%26/gi, '&'). + replace(/%3D/gi, '='). + replace(/%2B/gi, '+'); + } + + + /** + * This method is intended for encoding *key* or *value* parts of query component. We need a + * custom method because encodeURIComponent is too aggressive and encodes stuff that doesn't + * have to be encoded per http://tools.ietf.org/html/rfc3986: + * query = *( pchar / "/" / "?" ) + * pchar = unreserved / pct-encoded / sub-delims / ":" / "@" + * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" + * pct-encoded = "%" HEXDIG HEXDIG + * sub-delims = "!" / "$" / "&" / "'" / "(" / ")" + * / "*" / "+" / "," / ";" / "=" + */ + function encodeUriQuery(val, pctEncodeSpaces) { + return encodeURIComponent(val). + replace(/%40/gi, '@'). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, (pctEncodeSpaces ? '%20' : '+')); + } + + function Route(template, defaults) { + this.template = template; + this.defaults = defaults || {}; + this.urlParams = {}; + } + + Route.prototype = { + setUrlParams: function(config, params, actionUrl) { + var self = this, + url = actionUrl || self.template, + val, + encodedVal; + + var urlParams = self.urlParams = {}; + forEach(url.split(/\W/), function(param){ + if (param === 'hasOwnProperty') { + throw $resourceMinErr('badname', "hasOwnProperty is not a valid parameter name."); + } + if (!(new RegExp("^\\d+$").test(param)) && param && + (new RegExp("(^|[^\\\\]):" + param + "(\\W|$)").test(url))) { + urlParams[param] = true; + } + }); + url = url.replace(/\\:/g, ':'); + + params = params || {}; + forEach(self.urlParams, function(_, urlParam){ + val = params.hasOwnProperty(urlParam) ? params[urlParam] : self.defaults[urlParam]; + if (angular.isDefined(val) && val !== null) { + encodedVal = encodeUriSegment(val); + url = url.replace(new RegExp(":" + urlParam + "(\\W|$)", "g"), function(match, p1) { + return encodedVal + p1; + }); + } else { + url = url.replace(new RegExp("(\/?):" + urlParam + "(\\W|$)", "g"), function(match, + leadingSlashes, tail) { + if (tail.charAt(0) == '/') { + return tail; + } else { + return leadingSlashes + tail; + } + }); + } + }); + + // strip trailing slashes and set the url + url = url.replace(/\/+$/, '') || '/'; + // then replace collapse `/.` if found in the last URL path segment before the query + // E.g. `http://url.com/id./format?q=x` becomes `http://url.com/id.format?q=x` + url = url.replace(/\/\.(?=\w+($|\?))/, '.'); + // replace escaped `/\.` with `/.` + config.url = url.replace(/\/\\\./, '/.'); + + + // set params - delegate param encoding to $http + forEach(params, function(value, key){ + if (!self.urlParams[key]) { + config.params = config.params || {}; + config.params[key] = value; + } + }); + } + }; + + + function resourceFactory(url, paramDefaults, actions) { + var route = new Route(url); + + actions = extend({}, DEFAULT_ACTIONS, actions); + + function extractParams(data, actionParams){ + var ids = {}; + actionParams = extend({}, paramDefaults, actionParams); + forEach(actionParams, function(value, key){ + if (isFunction(value)) { value = value(); } + ids[key] = value && value.charAt && value.charAt(0) == '@' ? + lookupDottedPath(data, value.substr(1)) : value; + }); + return ids; + } + + function defaultResponseInterceptor(response) { + return response.resource; + } + + function Resource(value){ + shallowClearAndCopy(value || {}, this); + } + + forEach(actions, function(action, name) { + var hasBody = /^(POST|PUT|PATCH)$/i.test(action.method); + + Resource[name] = function(a1, a2, a3, a4) { + var params = {}, data, success, error; + + /* jshint -W086 */ /* (purposefully fall through case statements) */ + switch(arguments.length) { + case 4: + error = a4; + success = a3; + //fallthrough + case 3: + case 2: + if (isFunction(a2)) { + if (isFunction(a1)) { + success = a1; + error = a2; + break; + } + + success = a2; + error = a3; + //fallthrough + } else { + params = a1; + data = a2; + success = a3; + break; + } + case 1: + if (isFunction(a1)) success = a1; + else if (hasBody) data = a1; + else params = a1; + break; + case 0: break; + default: + throw $resourceMinErr('badargs', + "Expected up to 4 arguments [params, data, success, error], got {0} arguments", + arguments.length); + } + /* jshint +W086 */ /* (purposefully fall through case statements) */ + + var isInstanceCall = this instanceof Resource; + var value = isInstanceCall ? data : (action.isArray ? [] : new Resource(data)); + var httpConfig = {}; + var responseInterceptor = action.interceptor && action.interceptor.response || + defaultResponseInterceptor; + var responseErrorInterceptor = action.interceptor && action.interceptor.responseError || + undefined; + + forEach(action, function(value, key) { + if (key != 'params' && key != 'isArray' && key != 'interceptor') { + httpConfig[key] = copy(value); + } + }); + + if (hasBody) httpConfig.data = data; + route.setUrlParams(httpConfig, + extend({}, extractParams(data, action.params || {}), params), + action.url); + + var promise = $http(httpConfig).then(function (response) { + var data = response.data, + promise = value.$promise; + + if (data) { + // Need to convert action.isArray to boolean in case it is undefined + // jshint -W018 + if (angular.isArray(data) !== (!!action.isArray)) { + throw $resourceMinErr('badcfg', + 'Error in resource configuration. Expected ' + + 'response to contain an {0} but got an {1}', + action.isArray ? 'array' : 'object', + angular.isArray(data) ? 'array' : 'object'); + } + // jshint +W018 + if (action.isArray) { + value.length = 0; + forEach(data, function (item) { + if (typeof item === "object") { + value.push(new Resource(item)); + } else { + // Valid JSON values may be string literals, and these should not be converted + // into objects. These items will not have access to the Resource prototype + // methods, but unfortunately there + value.push(item); + } + }); + } else { + shallowClearAndCopy(data, value); + value.$promise = promise; + } + } + + value.$resolved = true; + + response.resource = value; + + return response; + }, function(response) { + value.$resolved = true; + + (error||noop)(response); + + return $q.reject(response); + }); + + promise = promise.then( + function(response) { + var value = responseInterceptor(response); + (success||noop)(value, response.headers); + return value; + }, + responseErrorInterceptor); + + if (!isInstanceCall) { + // we are creating instance / collection + // - set the initial promise + // - return the instance / collection + value.$promise = promise; + value.$resolved = false; + + return value; + } + + // instance call + return promise; + }; + + + Resource.prototype['$' + name] = function(params, success, error) { + if (isFunction(params)) { + error = success; success = params; params = {}; + } + var result = Resource[name].call(this, params, this, success, error); + return result.$promise || result; + }; + }); + + Resource.bind = function(additionalParamDefaults){ + return resourceFactory(url, extend({}, paramDefaults, additionalParamDefaults), actions); + }; + + return Resource; + } + + return resourceFactory; + }]); + + +})(window, window.angular); diff --git a/1.2.30/angular-resource.min.js b/1.2.30/angular-resource.min.js new file mode 100644 index 0000000000..4f8239997c --- /dev/null +++ b/1.2.30/angular-resource.min.js @@ -0,0 +1,13 @@ +/* + AngularJS v1.2.30 + (c) 2010-2014 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(H,a,A){'use strict';function D(p,g){g=g||{};a.forEach(g,function(a,c){delete g[c]});for(var c in p)!p.hasOwnProperty(c)||"$"===c.charAt(0)&&"$"===c.charAt(1)||(g[c]=p[c]);return g}var v=a.$$minErr("$resource"),C=/^(\.[a-zA-Z_$][0-9a-zA-Z_$]*)+$/;a.module("ngResource",["ng"]).factory("$resource",["$http","$q",function(p,g){function c(a,c){this.template=a;this.defaults=c||{};this.urlParams={}}function t(n,w,l){function r(h,d){var e={};d=x({},w,d);s(d,function(b,d){u(b)&&(b=b());var k;if(b&& +b.charAt&&"@"==b.charAt(0)){k=h;var a=b.substr(1);if(null==a||""===a||"hasOwnProperty"===a||!C.test("."+a))throw v("badmember",a);for(var a=a.split("."),f=0,c=a.length;f + */ + /* global -ngRouteModule */ +var ngRouteModule = angular.module('ngRoute', ['ng']). + provider('$route', $RouteProvider); + +/** + * @ngdoc provider + * @name $routeProvider + * @kind function + * + * @description + * + * Used for configuring routes. + * + * ## Example + * See {@link ngRoute.$route#example $route} for an example of configuring and using `ngRoute`. + * + * ## Dependencies + * Requires the {@link ngRoute `ngRoute`} module to be installed. + */ +function $RouteProvider(){ + function inherit(parent, extra) { + return angular.extend(new (angular.extend(function() {}, {prototype:parent}))(), extra); + } + + var routes = {}; + + /** + * @ngdoc method + * @name $routeProvider#when + * + * @param {string} path Route path (matched against `$location.path`). If `$location.path` + * contains redundant trailing slash or is missing one, the route will still match and the + * `$location.path` will be updated to add or drop the trailing slash to exactly match the + * route definition. + * + * * `path` can contain named groups starting with a colon: e.g. `:name`. All characters up + * to the next slash are matched and stored in `$routeParams` under the given `name` + * when the route matches. + * * `path` can contain named groups starting with a colon and ending with a star: + * e.g.`:name*`. All characters are eagerly stored in `$routeParams` under the given `name` + * when the route matches. + * * `path` can contain optional named groups with a question mark: e.g.`:name?`. + * + * For example, routes like `/color/:color/largecode/:largecode*\/edit` will match + * `/color/brown/largecode/code/with/slashes/edit` and extract: + * + * * `color: brown` + * * `largecode: code/with/slashes`. + * + * + * @param {Object} route Mapping information to be assigned to `$route.current` on route + * match. + * + * Object properties: + * + * - `controller` – `{(string|function()=}` – Controller fn that should be associated with + * newly created scope or the name of a {@link angular.Module#controller registered + * controller} if passed as a string. + * - `controllerAs` – `{string=}` – A controller alias name. If present the controller will be + * published to scope under the `controllerAs` name. + * - `template` – `{string=|function()=}` – html template as a string or a function that + * returns an html template as a string which should be used by {@link + * ngRoute.directive:ngView ngView} or {@link ng.directive:ngInclude ngInclude} directives. + * This property takes precedence over `templateUrl`. + * + * If `template` is a function, it will be called with the following parameters: + * + * - `{Array.}` - route parameters extracted from the current + * `$location.path()` by applying the current route + * + * - `templateUrl` – `{string=|function()=}` – path or function that returns a path to an html + * template that should be used by {@link ngRoute.directive:ngView ngView}. + * + * If `templateUrl` is a function, it will be called with the following parameters: + * + * - `{Array.}` - route parameters extracted from the current + * `$location.path()` by applying the current route + * + * - `resolve` - `{Object.=}` - An optional map of dependencies which should + * be injected into the controller. If any of these dependencies are promises, the router + * will wait for them all to be resolved or one to be rejected before the controller is + * instantiated. + * If all the promises are resolved successfully, the values of the resolved promises are + * injected and {@link ngRoute.$route#$routeChangeSuccess $routeChangeSuccess} event is + * fired. If any of the promises are rejected the + * {@link ngRoute.$route#$routeChangeError $routeChangeError} event is fired. The map object + * is: + * + * - `key` – `{string}`: a name of a dependency to be injected into the controller. + * - `factory` - `{string|function}`: If `string` then it is an alias for a service. + * Otherwise if function, then it is {@link auto.$injector#invoke injected} + * and the return value is treated as the dependency. If the result is a promise, it is + * resolved before its value is injected into the controller. Be aware that + * `ngRoute.$routeParams` will still refer to the previous route within these resolve + * functions. Use `$route.current.params` to access the new route parameters, instead. + * + * - `redirectTo` – {(string|function())=} – value to update + * {@link ng.$location $location} path with and trigger route redirection. + * + * If `redirectTo` is a function, it will be called with the following parameters: + * + * - `{Object.}` - route parameters extracted from the current + * `$location.path()` by applying the current route templateUrl. + * - `{string}` - current `$location.path()` + * - `{Object}` - current `$location.search()` + * + * The custom `redirectTo` function is expected to return a string which will be used + * to update `$location.path()` and `$location.search()`. + * + * - `[reloadOnSearch=true]` - {boolean=} - reload route when only `$location.search()` + * or `$location.hash()` changes. + * + * If the option is set to `false` and url in the browser changes, then + * `$routeUpdate` event is broadcasted on the root scope. + * + * - `[caseInsensitiveMatch=false]` - {boolean=} - match routes without being case sensitive + * + * If the option is set to `true`, then the particular route can be matched without being + * case sensitive + * + * @returns {Object} self + * + * @description + * Adds a new route definition to the `$route` service. + */ + this.when = function(path, route) { + routes[path] = angular.extend( + {reloadOnSearch: true}, + route, + path && pathRegExp(path, route) + ); + + // create redirection for trailing slashes + if (path) { + var redirectPath = (path[path.length-1] == '/') + ? path.substr(0, path.length-1) + : path +'/'; + + routes[redirectPath] = angular.extend( + {redirectTo: path}, + pathRegExp(redirectPath, route) + ); + } + + return this; + }; + + /** + * @param path {string} path + * @param opts {Object} options + * @return {?Object} + * + * @description + * Normalizes the given path, returning a regular expression + * and the original path. + * + * Inspired by pathRexp in visionmedia/express/lib/utils.js. + */ + function pathRegExp(path, opts) { + var insensitive = opts.caseInsensitiveMatch, + ret = { + originalPath: path, + regexp: path + }, + keys = ret.keys = []; + + path = path + .replace(/([().])/g, '\\$1') + .replace(/(\/)?:(\w+)([\?\*])?/g, function(_, slash, key, option){ + var optional = option === '?' ? option : null; + var star = option === '*' ? option : null; + keys.push({ name: key, optional: !!optional }); + slash = slash || ''; + return '' + + (optional ? '' : slash) + + '(?:' + + (optional ? slash : '') + + (star && '(.+?)' || '([^/]+)') + + (optional || '') + + ')' + + (optional || ''); + }) + .replace(/([\/$\*])/g, '\\$1'); + + ret.regexp = new RegExp('^' + path + '$', insensitive ? 'i' : ''); + return ret; + } + + /** + * @ngdoc method + * @name $routeProvider#otherwise + * + * @description + * Sets route definition that will be used on route change when no other route definition + * is matched. + * + * @param {Object} params Mapping information to be assigned to `$route.current`. + * @returns {Object} self + */ + this.otherwise = function(params) { + this.when(null, params); + return this; + }; + + + this.$get = ['$rootScope', + '$location', + '$routeParams', + '$q', + '$injector', + '$http', + '$templateCache', + '$sce', + function($rootScope, $location, $routeParams, $q, $injector, $http, $templateCache, $sce) { + + /** + * @ngdoc service + * @name $route + * @requires $location + * @requires $routeParams + * + * @property {Object} current Reference to the current route definition. + * The route definition contains: + * + * - `controller`: The controller constructor as define in route definition. + * - `locals`: A map of locals which is used by {@link ng.$controller $controller} service for + * controller instantiation. The `locals` contain + * the resolved values of the `resolve` map. Additionally the `locals` also contain: + * + * - `$scope` - The current route scope. + * - `$template` - The current route template HTML. + * + * @property {Object} routes Object with all route configuration Objects as its properties. + * + * @description + * `$route` is used for deep-linking URLs to controllers and views (HTML partials). + * It watches `$location.url()` and tries to map the path to an existing route definition. + * + * Requires the {@link ngRoute `ngRoute`} module to be installed. + * + * You can define routes through {@link ngRoute.$routeProvider $routeProvider}'s API. + * + * The `$route` service is typically used in conjunction with the + * {@link ngRoute.directive:ngView `ngView`} directive and the + * {@link ngRoute.$routeParams `$routeParams`} service. + * + * @example + * This example shows how changing the URL hash causes the `$route` to match a route against the + * URL, and the `ngView` pulls in the partial. + * + * + * + *
+ * Choose: + * Moby | + * Moby: Ch1 | + * Gatsby | + * Gatsby: Ch4 | + * Scarlet Letter
+ * + *
+ * + *
+ * + *
$location.path() = {{$location.path()}}
+ *
$route.current.templateUrl = {{$route.current.templateUrl}}
+ *
$route.current.params = {{$route.current.params}}
+ *
$route.current.scope.name = {{$route.current.scope.name}}
+ *
$routeParams = {{$routeParams}}
+ *
+ *
+ * + * + * controller: {{name}}
+ * Book Id: {{params.bookId}}
+ *
+ * + * + * controller: {{name}}
+ * Book Id: {{params.bookId}}
+ * Chapter Id: {{params.chapterId}} + *
+ * + * + * angular.module('ngRouteExample', ['ngRoute']) + * + * .controller('MainController', function($scope, $route, $routeParams, $location) { + * $scope.$route = $route; + * $scope.$location = $location; + * $scope.$routeParams = $routeParams; + * }) + * + * .controller('BookController', function($scope, $routeParams) { + * $scope.name = "BookController"; + * $scope.params = $routeParams; + * }) + * + * .controller('ChapterController', function($scope, $routeParams) { + * $scope.name = "ChapterController"; + * $scope.params = $routeParams; + * }) + * + * .config(function($routeProvider, $locationProvider) { + * $routeProvider + * .when('/Book/:bookId', { + * templateUrl: 'book.html', + * controller: 'BookController', + * resolve: { + * // I will cause a 1 second delay + * delay: function($q, $timeout) { + * var delay = $q.defer(); + * $timeout(delay.resolve, 1000); + * return delay.promise; + * } + * } + * }) + * .when('/Book/:bookId/ch/:chapterId', { + * templateUrl: 'chapter.html', + * controller: 'ChapterController' + * }); + * + * // configure html5 to get links working on jsfiddle + * $locationProvider.html5Mode(true); + * }); + * + * + * + * + * it('should load and compile correct template', function() { + * element(by.linkText('Moby: Ch1')).click(); + * var content = element(by.css('[ng-view]')).getText(); + * expect(content).toMatch(/controller\: ChapterController/); + * expect(content).toMatch(/Book Id\: Moby/); + * expect(content).toMatch(/Chapter Id\: 1/); + * + * element(by.partialLinkText('Scarlet')).click(); + * + * content = element(by.css('[ng-view]')).getText(); + * expect(content).toMatch(/controller\: BookController/); + * expect(content).toMatch(/Book Id\: Scarlet/); + * }); + * + *
+ */ + + /** + * @ngdoc event + * @name $route#$routeChangeStart + * @eventType broadcast on root scope + * @description + * Broadcasted before a route change. At this point the route services starts + * resolving all of the dependencies needed for the route change to occur. + * Typically this involves fetching the view template as well as any dependencies + * defined in `resolve` route property. Once all of the dependencies are resolved + * `$routeChangeSuccess` is fired. + * + * @param {Object} angularEvent Synthetic event object. + * @param {Route} next Future route information. + * @param {Route} current Current route information. + */ + + /** + * @ngdoc event + * @name $route#$routeChangeSuccess + * @eventType broadcast on root scope + * @description + * Broadcasted after a route dependencies are resolved. + * {@link ngRoute.directive:ngView ngView} listens for the directive + * to instantiate the controller and render the view. + * + * @param {Object} angularEvent Synthetic event object. + * @param {Route} current Current route information. + * @param {Route|Undefined} previous Previous route information, or undefined if current is + * first route entered. + */ + + /** + * @ngdoc event + * @name $route#$routeChangeError + * @eventType broadcast on root scope + * @description + * Broadcasted if any of the resolve promises are rejected. + * + * @param {Object} angularEvent Synthetic event object + * @param {Route} current Current route information. + * @param {Route} previous Previous route information. + * @param {Route} rejection Rejection of the promise. Usually the error of the failed promise. + */ + + /** + * @ngdoc event + * @name $route#$routeUpdate + * @eventType broadcast on root scope + * @description + * + * The `reloadOnSearch` property has been set to false, and we are reusing the same + * instance of the Controller. + */ + + var forceReload = false, + $route = { + routes: routes, + + /** + * @ngdoc method + * @name $route#reload + * + * @description + * Causes `$route` service to reload the current route even if + * {@link ng.$location $location} hasn't changed. + * + * As a result of that, {@link ngRoute.directive:ngView ngView} + * creates new scope, reinstantiates the controller. + */ + reload: function() { + forceReload = true; + $rootScope.$evalAsync(updateRoute); + } + }; + + $rootScope.$on('$locationChangeSuccess', updateRoute); + + return $route; + + ///////////////////////////////////////////////////// + + /** + * @param on {string} current url + * @param route {Object} route regexp to match the url against + * @return {?Object} + * + * @description + * Check if the route matches the current url. + * + * Inspired by match in + * visionmedia/express/lib/router/router.js. + */ + function switchRouteMatcher(on, route) { + var keys = route.keys, + params = {}; + + if (!route.regexp) return null; + + var m = route.regexp.exec(on); + if (!m) return null; + + for (var i = 1, len = m.length; i < len; ++i) { + var key = keys[i - 1]; + + var val = m[i]; + + if (key && val) { + params[key.name] = val; + } + } + return params; + } + + function updateRoute() { + var next = parseRoute(), + last = $route.current; + + if (next && last && next.$$route === last.$$route + && angular.equals(next.pathParams, last.pathParams) + && !next.reloadOnSearch && !forceReload) { + last.params = next.params; + angular.copy(last.params, $routeParams); + $rootScope.$broadcast('$routeUpdate', last); + } else if (next || last) { + forceReload = false; + $rootScope.$broadcast('$routeChangeStart', next, last); + $route.current = next; + if (next) { + if (next.redirectTo) { + if (angular.isString(next.redirectTo)) { + $location.path(interpolate(next.redirectTo, next.params)).search(next.params) + .replace(); + } else { + $location.url(next.redirectTo(next.pathParams, $location.path(), $location.search())) + .replace(); + } + } + } + + $q.when(next). + then(function() { + if (next) { + var locals = angular.extend({}, next.resolve), + template, templateUrl; + + angular.forEach(locals, function(value, key) { + locals[key] = angular.isString(value) ? + $injector.get(value) : $injector.invoke(value); + }); + + if (angular.isDefined(template = next.template)) { + if (angular.isFunction(template)) { + template = template(next.params); + } + } else if (angular.isDefined(templateUrl = next.templateUrl)) { + if (angular.isFunction(templateUrl)) { + templateUrl = templateUrl(next.params); + } + templateUrl = $sce.getTrustedResourceUrl(templateUrl); + if (angular.isDefined(templateUrl)) { + next.loadedTemplateUrl = templateUrl; + template = $http.get(templateUrl, {cache: $templateCache}). + then(function(response) { return response.data; }); + } + } + if (angular.isDefined(template)) { + locals['$template'] = template; + } + return $q.all(locals); + } + }). + // after route change + then(function(locals) { + if (next == $route.current) { + if (next) { + next.locals = locals; + angular.copy(next.params, $routeParams); + } + $rootScope.$broadcast('$routeChangeSuccess', next, last); + } + }, function(error) { + if (next == $route.current) { + $rootScope.$broadcast('$routeChangeError', next, last, error); + } + }); + } + } + + + /** + * @returns {Object} the current active route, by matching it against the URL + */ + function parseRoute() { + // Match a route + var params, match; + angular.forEach(routes, function(route, path) { + if (!match && (params = switchRouteMatcher($location.path(), route))) { + match = inherit(route, { + params: angular.extend({}, $location.search(), params), + pathParams: params}); + match.$$route = route; + } + }); + // No route matched; fallback to "otherwise" route + return match || routes[null] && inherit(routes[null], {params: {}, pathParams:{}}); + } + + /** + * @returns {string} interpolation of the redirect path with the parameters + */ + function interpolate(string, params) { + var result = []; + angular.forEach((string||'').split(':'), function(segment, i) { + if (i === 0) { + result.push(segment); + } else { + var segmentMatch = segment.match(/(\w+)(?:[?*])?(.*)/); + var key = segmentMatch[1]; + result.push(params[key]); + result.push(segmentMatch[2] || ''); + delete params[key]; + } + }); + return result.join(''); + } + }]; +} + +ngRouteModule.provider('$routeParams', $RouteParamsProvider); + + +/** + * @ngdoc service + * @name $routeParams + * @requires $route + * + * @description + * The `$routeParams` service allows you to retrieve the current set of route parameters. + * + * Requires the {@link ngRoute `ngRoute`} module to be installed. + * + * The route parameters are a combination of {@link ng.$location `$location`}'s + * {@link ng.$location#search `search()`} and {@link ng.$location#path `path()`}. + * The `path` parameters are extracted when the {@link ngRoute.$route `$route`} path is matched. + * + * In case of parameter name collision, `path` params take precedence over `search` params. + * + * The service guarantees that the identity of the `$routeParams` object will remain unchanged + * (but its properties will likely change) even when a route change occurs. + * + * Note that the `$routeParams` are only updated *after* a route change completes successfully. + * This means that you cannot rely on `$routeParams` being correct in route resolve functions. + * Instead you can use `$route.current.params` to access the new route's parameters. + * + * @example + * ```js + * // Given: + * // URL: http://server.com/index.html#/Chapter/1/Section/2?search=moby + * // Route: /Chapter/:chapterId/Section/:sectionId + * // + * // Then + * $routeParams ==> {chapterId:'1', sectionId:'2', search:'moby'} + * ``` + */ +function $RouteParamsProvider() { + this.$get = function() { return {}; }; +} + +ngRouteModule.directive('ngView', ngViewFactory); +ngRouteModule.directive('ngView', ngViewFillContentFactory); + + +/** + * @ngdoc directive + * @name ngView + * @restrict ECA + * + * @description + * # Overview + * `ngView` is a directive that complements the {@link ngRoute.$route $route} service by + * including the rendered template of the current route into the main layout (`index.html`) file. + * Every time the current route changes, the included view changes with it according to the + * configuration of the `$route` service. + * + * Requires the {@link ngRoute `ngRoute`} module to be installed. + * + * @animations + * enter - animation is used to bring new content into the browser. + * leave - animation is used to animate existing content away. + * + * The enter and leave animation occur concurrently. + * + * @scope + * @priority 400 + * @param {string=} onload Expression to evaluate whenever the view updates. + * + * @param {string=} autoscroll Whether `ngView` should call {@link ng.$anchorScroll + * $anchorScroll} to scroll the viewport after the view is updated. + * + * - If the attribute is not set, disable scrolling. + * - If the attribute is set without value, enable scrolling. + * - Otherwise enable scrolling only if the `autoscroll` attribute value evaluated + * as an expression yields a truthy value. + * @example + + +
+ Choose: + Moby | + Moby: Ch1 | + Gatsby | + Gatsby: Ch4 | + Scarlet Letter
+ +
+
+
+
+ +
$location.path() = {{main.$location.path()}}
+
$route.current.templateUrl = {{main.$route.current.templateUrl}}
+
$route.current.params = {{main.$route.current.params}}
+
$route.current.scope.name = {{main.$route.current.scope.name}}
+
$routeParams = {{main.$routeParams}}
+
+
+ + +
+ controller: {{book.name}}
+ Book Id: {{book.params.bookId}}
+
+
+ + +
+ controller: {{chapter.name}}
+ Book Id: {{chapter.params.bookId}}
+ Chapter Id: {{chapter.params.chapterId}} +
+
+ + + .view-animate-container { + position:relative; + height:100px!important; + position:relative; + background:white; + border:1px solid black; + height:40px; + overflow:hidden; + } + + .view-animate { + padding:10px; + } + + .view-animate.ng-enter, .view-animate.ng-leave { + -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s; + transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s; + + display:block; + width:100%; + border-left:1px solid black; + + position:absolute; + top:0; + left:0; + right:0; + bottom:0; + padding:10px; + } + + .view-animate.ng-enter { + left:100%; + } + .view-animate.ng-enter.ng-enter-active { + left:0; + } + .view-animate.ng-leave.ng-leave-active { + left:-100%; + } + + + + angular.module('ngViewExample', ['ngRoute', 'ngAnimate']) + .config(['$routeProvider', '$locationProvider', + function($routeProvider, $locationProvider) { + $routeProvider + .when('/Book/:bookId', { + templateUrl: 'book.html', + controller: 'BookCtrl', + controllerAs: 'book' + }) + .when('/Book/:bookId/ch/:chapterId', { + templateUrl: 'chapter.html', + controller: 'ChapterCtrl', + controllerAs: 'chapter' + }); + + $locationProvider.html5Mode(true); + }]) + .controller('MainCtrl', ['$route', '$routeParams', '$location', + function($route, $routeParams, $location) { + this.$route = $route; + this.$location = $location; + this.$routeParams = $routeParams; + }]) + .controller('BookCtrl', ['$routeParams', function($routeParams) { + this.name = "BookCtrl"; + this.params = $routeParams; + }]) + .controller('ChapterCtrl', ['$routeParams', function($routeParams) { + this.name = "ChapterCtrl"; + this.params = $routeParams; + }]); + + + + + it('should load and compile correct template', function() { + element(by.linkText('Moby: Ch1')).click(); + var content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: ChapterCtrl/); + expect(content).toMatch(/Book Id\: Moby/); + expect(content).toMatch(/Chapter Id\: 1/); + + element(by.partialLinkText('Scarlet')).click(); + + content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: BookCtrl/); + expect(content).toMatch(/Book Id\: Scarlet/); + }); + +
+ */ + + +/** + * @ngdoc event + * @name ngView#$viewContentLoaded + * @eventType emit on the current ngView scope + * @description + * Emitted every time the ngView content is reloaded. + */ +ngViewFactory.$inject = ['$route', '$anchorScroll', '$animate']; +function ngViewFactory( $route, $anchorScroll, $animate) { + return { + restrict: 'ECA', + terminal: true, + priority: 400, + transclude: 'element', + link: function(scope, $element, attr, ctrl, $transclude) { + var currentScope, + currentElement, + previousElement, + autoScrollExp = attr.autoscroll, + onloadExp = attr.onload || ''; + + scope.$on('$routeChangeSuccess', update); + update(); + + function cleanupLastView() { + if(previousElement) { + previousElement.remove(); + previousElement = null; + } + if(currentScope) { + currentScope.$destroy(); + currentScope = null; + } + if(currentElement) { + $animate.leave(currentElement, function() { + previousElement = null; + }); + previousElement = currentElement; + currentElement = null; + } + } + + function update() { + var locals = $route.current && $route.current.locals, + template = locals && locals.$template; + + if (angular.isDefined(template)) { + var newScope = scope.$new(); + var current = $route.current; + + // Note: This will also link all children of ng-view that were contained in the original + // html. If that content contains controllers, ... they could pollute/change the scope. + // However, using ng-view on an element with additional content does not make sense... + // Note: We can't remove them in the cloneAttchFn of $transclude as that + // function is called before linking the content, which would apply child + // directives to non existing elements. + var clone = $transclude(newScope, function(clone) { + $animate.enter(clone, null, currentElement || $element, function onNgViewEnter () { + if (angular.isDefined(autoScrollExp) + && (!autoScrollExp || scope.$eval(autoScrollExp))) { + $anchorScroll(); + } + }); + cleanupLastView(); + }); + + currentElement = clone; + currentScope = current.scope = newScope; + currentScope.$emit('$viewContentLoaded'); + currentScope.$eval(onloadExp); + } else { + cleanupLastView(); + } + } + } + }; +} + +// This directive is called during the $transclude call of the first `ngView` directive. +// It will replace and compile the content of the element with the loaded template. +// We need this directive so that the element content is already filled when +// the link function of another directive on the same element as ngView +// is called. +ngViewFillContentFactory.$inject = ['$compile', '$controller', '$route']; +function ngViewFillContentFactory($compile, $controller, $route) { + return { + restrict: 'ECA', + priority: -400, + link: function(scope, $element) { + var current = $route.current, + locals = current.locals; + + $element.html(locals.$template); + + var link = $compile($element.contents()); + + if (current.controller) { + locals.$scope = scope; + var controller = $controller(current.controller, locals); + if (current.controllerAs) { + scope[current.controllerAs] = controller; + } + $element.data('$ngControllerController', controller); + $element.children().data('$ngControllerController', controller); + } + + link(scope); + } + }; +} + + +})(window, window.angular); diff --git a/1.2.30/angular-route.min.js b/1.2.30/angular-route.min.js new file mode 100644 index 0000000000..d2f7f7919f --- /dev/null +++ b/1.2.30/angular-route.min.js @@ -0,0 +1,14 @@ +/* + AngularJS v1.2.30 + (c) 2010-2014 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(n,e,A){'use strict';function x(s,g,h){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,c,b,f,w){function y(){p&&(p.remove(),p=null);k&&(k.$destroy(),k=null);l&&(h.leave(l,function(){p=null}),p=l,l=null)}function v(){var b=s.current&&s.current.locals;if(e.isDefined(b&&b.$template)){var b=a.$new(),d=s.current;l=w(b,function(d){h.enter(d,null,l||c,function(){!e.isDefined(t)||t&&!a.$eval(t)||g()});y()});k=d.scope=b;k.$emit("$viewContentLoaded");k.$eval(u)}else y()} +var k,l,p,t=b.autoscroll,u=b.onload||"";a.$on("$routeChangeSuccess",v);v()}}}function z(e,g,h){return{restrict:"ECA",priority:-400,link:function(a,c){var b=h.current,f=b.locals;c.html(f.$template);var w=e(c.contents());b.controller&&(f.$scope=a,f=g(b.controller,f),b.controllerAs&&(a[b.controllerAs]=f),c.data("$ngControllerController",f),c.children().data("$ngControllerController",f));w(a)}}}n=e.module("ngRoute",["ng"]).provider("$route",function(){function s(a,c){return e.extend(new (e.extend(function(){}, +{prototype:a})),c)}function g(a,e){var b=e.caseInsensitiveMatch,f={originalPath:a,regexp:a},h=f.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(a,e,b,c){a="?"===c?c:null;c="*"===c?c:null;h.push({name:b,optional:!!a});e=e||"";return""+(a?"":e)+"(?:"+(a?e:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");f.regexp=RegExp("^"+a+"$",b?"i":"");return f}var h={};this.when=function(a,c){h[a]=e.extend({reloadOnSearch:!0},c,a&&g(a,c));if(a){var b= +"/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";h[b]=e.extend({redirectTo:a},g(b,c))}return this};this.otherwise=function(a){this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(a,c,b,f,g,n,v,k){function l(){var d=p(),m=r.current;if(d&&m&&d.$$route===m.$$route&&e.equals(d.pathParams,m.pathParams)&&!d.reloadOnSearch&&!u)m.params=d.params,e.copy(m.params,b),a.$broadcast("$routeUpdate",m);else if(d||m)u=!1,a.$broadcast("$routeChangeStart", +d,m),(r.current=d)&&d.redirectTo&&(e.isString(d.redirectTo)?c.path(t(d.redirectTo,d.params)).search(d.params).replace():c.url(d.redirectTo(d.pathParams,c.path(),c.search())).replace()),f.when(d).then(function(){if(d){var a=e.extend({},d.resolve),c,b;e.forEach(a,function(d,c){a[c]=e.isString(d)?g.get(d):g.invoke(d)});e.isDefined(c=d.template)?e.isFunction(c)&&(c=c(d.params)):e.isDefined(b=d.templateUrl)&&(e.isFunction(b)&&(b=b(d.params)),b=k.getTrustedResourceUrl(b),e.isDefined(b)&&(d.loadedTemplateUrl= +b,c=n.get(b,{cache:v}).then(function(a){return a.data})));e.isDefined(c)&&(a.$template=c);return f.all(a)}}).then(function(c){d==r.current&&(d&&(d.locals=c,e.copy(d.params,b)),a.$broadcast("$routeChangeSuccess",d,m))},function(c){d==r.current&&a.$broadcast("$routeChangeError",d,m,c)})}function p(){var a,b;e.forEach(h,function(f,h){var q;if(q=!b){var g=c.path();q=f.keys;var l={};if(f.regexp)if(g=f.regexp.exec(g)){for(var k=1,p=g.length;k + * + * See {@link ngSanitize.$sanitize `$sanitize`} for usage. + */ + +/* + * HTML Parser By Misko Hevery (misko@hevery.com) + * based on: HTML Parser By John Resig (ejohn.org) + * Original code by Erik Arvidsson, Mozilla Public License + * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js + * + * // Use like so: + * htmlParser(htmlString, { + * start: function(tag, attrs, unary) {}, + * end: function(tag) {}, + * chars: function(text) {}, + * comment: function(text) {} + * }); + * + */ + + +/** + * @ngdoc service + * @name $sanitize + * @kind function + * + * @description + * The input is sanitized by parsing the html into tokens. All safe tokens (from a whitelist) are + * then serialized back to properly escaped html string. This means that no unsafe input can make + * it into the returned string, however, since our parser is more strict than a typical browser + * parser, it's possible that some obscure input, which would be recognized as valid HTML by a + * browser, won't make it through the sanitizer. + * The whitelist is configured using the functions `aHrefSanitizationWhitelist` and + * `imgSrcSanitizationWhitelist` of {@link ng.$compileProvider `$compileProvider`}. + * + * @param {string} html Html input. + * @returns {string} Sanitized html. + * + * @example + + + +
+ Snippet: + + + + + + + + + + + + + + + + + + + + + + + + + +
DirectiveHowSourceRendered
ng-bind-htmlAutomatically uses $sanitize
<div ng-bind-html="snippet">
</div>
ng-bind-htmlBypass $sanitize by explicitly trusting the dangerous value +
<div ng-bind-html="deliberatelyTrustDangerousSnippet()">
+</div>
+
ng-bindAutomatically escapes
<div ng-bind="snippet">
</div>
+
+
+ + it('should sanitize the html snippet by default', function() { + expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()). + toBe('

an html\nclick here\nsnippet

'); + }); + + it('should inline raw snippet if bound to a trusted value', function() { + expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()). + toBe("

an html\n" + + "click here\n" + + "snippet

"); + }); + + it('should escape snippet without any filter', function() { + expect(element(by.css('#bind-default div')).getInnerHtml()). + toBe("<p style=\"color:blue\">an html\n" + + "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" + + "snippet</p>"); + }); + + it('should update', function() { + element(by.model('snippet')).clear(); + element(by.model('snippet')).sendKeys('new text'); + expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()). + toBe('new text'); + expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).toBe( + 'new text'); + expect(element(by.css('#bind-default div')).getInnerHtml()).toBe( + "new <b onclick=\"alert(1)\">text</b>"); + }); +
+
+ */ +function $SanitizeProvider() { + this.$get = ['$$sanitizeUri', function($$sanitizeUri) { + return function(html) { + var buf = []; + htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) { + return !/^unsafe/.test($$sanitizeUri(uri, isImage)); + })); + return buf.join(''); + }; + }]; +} + +function sanitizeText(chars) { + var buf = []; + var writer = htmlSanitizeWriter(buf, angular.noop); + writer.chars(chars); + return buf.join(''); +} + + +// Regular Expressions for parsing tags and attributes +var START_TAG_REGEXP = + /^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/, + END_TAG_REGEXP = /^<\/\s*([\w:-]+)[^>]*>/, + ATTR_REGEXP = /([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g, + BEGIN_TAG_REGEXP = /^/g, + DOCTYPE_REGEXP = /]*?)>/i, + CDATA_REGEXP = //g, + SURROGATE_PAIR_REGEXP = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g, + // Match everything outside of normal chars and " (quote character) + NON_ALPHANUMERIC_REGEXP = /([^\#-~| |!])/g; + + +// Good source of info about elements and attributes +// http://dev.w3.org/html5/spec/Overview.html#semantics +// http://simon.html5.org/html-elements + +// Safe Void Elements - HTML5 +// http://dev.w3.org/html5/spec/Overview.html#void-elements +var voidElements = makeMap("area,br,col,hr,img,wbr"); + +// Elements that you can, intentionally, leave open (and which close themselves) +// http://dev.w3.org/html5/spec/Overview.html#optional-tags +var optionalEndTagBlockElements = makeMap("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"), + optionalEndTagInlineElements = makeMap("rp,rt"), + optionalEndTagElements = angular.extend({}, + optionalEndTagInlineElements, + optionalEndTagBlockElements); + +// Safe Block Elements - HTML5 +var blockElements = angular.extend({}, optionalEndTagBlockElements, makeMap("address,article," + + "aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5," + + "h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")); + +// Inline Elements - HTML5 +var inlineElements = angular.extend({}, optionalEndTagInlineElements, makeMap("a,abbr,acronym,b," + + "bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s," + + "samp,small,span,strike,strong,sub,sup,time,tt,u,var")); + + +// Special Elements (can contain anything) +var specialElements = makeMap("script,style"); + +var validElements = angular.extend({}, + voidElements, + blockElements, + inlineElements, + optionalEndTagElements); + +//Attributes that have href and hence need to be sanitized +var uriAttrs = makeMap("background,cite,href,longdesc,src"); +var validAttrs = angular.extend({}, uriAttrs, makeMap( + 'abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,'+ + 'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,'+ + 'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,'+ + 'scope,scrolling,shape,size,span,start,summary,target,title,type,'+ + 'valign,value,vspace,width')); + +function makeMap(str) { + var obj = {}, items = str.split(','), i; + for (i = 0; i < items.length; i++) obj[items[i]] = true; + return obj; +} + + +/** + * @example + * htmlParser(htmlString, { + * start: function(tag, attrs, unary) {}, + * end: function(tag) {}, + * chars: function(text) {}, + * comment: function(text) {} + * }); + * + * @param {string} html string + * @param {object} handler + */ +function htmlParser( html, handler ) { + if (typeof html !== 'string') { + if (html === null || typeof html === 'undefined') { + html = ''; + } else { + html = '' + html; + } + } + var index, chars, match, stack = [], last = html, text; + stack.last = function() { return stack[ stack.length - 1 ]; }; + + while ( html ) { + text = ''; + chars = true; + + // Make sure we're not in a script or style element + if ( !stack.last() || !specialElements[ stack.last() ] ) { + + // Comment + if ( html.indexOf("", index) === index) { + if (handler.comment) handler.comment( html.substring( 4, index ) ); + html = html.substring( index + 3 ); + chars = false; + } + // DOCTYPE + } else if ( DOCTYPE_REGEXP.test(html) ) { + match = html.match( DOCTYPE_REGEXP ); + + if ( match ) { + html = html.replace( match[0], ''); + chars = false; + } + // end tag + } else if ( BEGING_END_TAGE_REGEXP.test(html) ) { + match = html.match( END_TAG_REGEXP ); + + if ( match ) { + html = html.substring( match[0].length ); + match[0].replace( END_TAG_REGEXP, parseEndTag ); + chars = false; + } + + // start tag + } else if ( BEGIN_TAG_REGEXP.test(html) ) { + match = html.match( START_TAG_REGEXP ); + + if ( match ) { + // We only have a valid start-tag if there is a '>'. + if ( match[4] ) { + html = html.substring( match[0].length ); + match[0].replace( START_TAG_REGEXP, parseStartTag ); + } + chars = false; + } else { + // no ending tag found --- this piece should be encoded as an entity. + text += '<'; + html = html.substring(1); + } + } + + if ( chars ) { + index = html.indexOf("<"); + + text += index < 0 ? html : html.substring( 0, index ); + html = index < 0 ? "" : html.substring( index ); + + if (handler.chars) handler.chars( decodeEntities(text) ); + } + + } else { + html = html.replace(new RegExp("(.*)<\\s*\\/\\s*" + stack.last() + "[^>]*>", 'i'), + function(all, text){ + text = text.replace(COMMENT_REGEXP, "$1").replace(CDATA_REGEXP, "$1"); + + if (handler.chars) handler.chars( decodeEntities(text) ); + + return ""; + }); + + parseEndTag( "", stack.last() ); + } + + if ( html == last ) { + throw $sanitizeMinErr('badparse', "The sanitizer was unable to parse the following block " + + "of html: {0}", html); + } + last = html; + } + + // Clean up any remaining tags + parseEndTag(); + + function parseStartTag( tag, tagName, rest, unary ) { + tagName = angular.lowercase(tagName); + if ( blockElements[ tagName ] ) { + while ( stack.last() && inlineElements[ stack.last() ] ) { + parseEndTag( "", stack.last() ); + } + } + + if ( optionalEndTagElements[ tagName ] && stack.last() == tagName ) { + parseEndTag( "", tagName ); + } + + unary = voidElements[ tagName ] || !!unary; + + if ( !unary ) + stack.push( tagName ); + + var attrs = {}; + + rest.replace(ATTR_REGEXP, + function(match, name, doubleQuotedValue, singleQuotedValue, unquotedValue) { + var value = doubleQuotedValue + || singleQuotedValue + || unquotedValue + || ''; + + attrs[name] = decodeEntities(value); + }); + if (handler.start) handler.start( tagName, attrs, unary ); + } + + function parseEndTag( tag, tagName ) { + var pos = 0, i; + tagName = angular.lowercase(tagName); + if ( tagName ) + // Find the closest opened tag of the same type + for ( pos = stack.length - 1; pos >= 0; pos-- ) + if ( stack[ pos ] == tagName ) + break; + + if ( pos >= 0 ) { + // Close all the open elements, up the stack + for ( i = stack.length - 1; i >= pos; i-- ) + if (handler.end) handler.end( stack[ i ] ); + + // Remove the open elements from the stack + stack.length = pos; + } + } +} + +var hiddenPre=document.createElement("pre"); +var spaceRe = /^(\s*)([\s\S]*?)(\s*)$/; +/** + * decodes all entities into regular string + * @param value + * @returns {string} A string with decoded entities. + */ +function decodeEntities(value) { + if (!value) { return ''; } + + // Note: IE8 does not preserve spaces at the start/end of innerHTML + // so we must capture them and reattach them afterward + var parts = spaceRe.exec(value); + var spaceBefore = parts[1]; + var spaceAfter = parts[3]; + var content = parts[2]; + if (content) { + hiddenPre.innerHTML=content.replace(//g, '>'); +} + +/** + * create an HTML/XML writer which writes to buffer + * @param {Array} buf use buf.jain('') to get out sanitized html string + * @returns {object} in the form of { + * start: function(tag, attrs, unary) {}, + * end: function(tag) {}, + * chars: function(text) {}, + * comment: function(text) {} + * } + */ +function htmlSanitizeWriter(buf, uriValidator){ + var ignore = false; + var out = angular.bind(buf, buf.push); + return { + start: function(tag, attrs, unary){ + tag = angular.lowercase(tag); + if (!ignore && specialElements[tag]) { + ignore = tag; + } + if (!ignore && validElements[tag] === true) { + out('<'); + out(tag); + angular.forEach(attrs, function(value, key){ + var lkey=angular.lowercase(key); + var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background'); + if (validAttrs[lkey] === true && + (uriAttrs[lkey] !== true || uriValidator(value, isImage))) { + out(' '); + out(key); + out('="'); + out(encodeEntities(value)); + out('"'); + } + }); + out(unary ? '/>' : '>'); + } + }, + end: function(tag){ + tag = angular.lowercase(tag); + if (!ignore && validElements[tag] === true) { + out(''); + } + if (tag == ignore) { + ignore = false; + } + }, + chars: function(chars){ + if (!ignore) { + out(encodeEntities(chars)); + } + } + }; +} + + +// define ngSanitize module and register $sanitize service +angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider); + +/* global sanitizeText: false */ + +/** + * @ngdoc filter + * @name linky + * @kind function + * + * @description + * Finds links in text input and turns them into html links. Supports http/https/ftp/mailto and + * plain email address links. + * + * Requires the {@link ngSanitize `ngSanitize`} module to be installed. + * + * @param {string} text Input text. + * @param {string} target Window (_blank|_self|_parent|_top) or named frame to open links in. + * @returns {string} Html-linkified text. + * + * @usage + + * + * @example + + + +
+ Snippet: + + + + + + + + + + + + + + + + + + + + + +
FilterSourceRendered
linky filter +
<div ng-bind-html="snippet | linky">
</div>
+
+
+
linky target +
<div ng-bind-html="snippetWithTarget | linky:'_blank'">
</div>
+
+
+
no filter
<div ng-bind="snippet">
</div>
+ + + it('should linkify the snippet with urls', function() { + expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()). + toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' + + 'another@somewhere.org, and one more: ftp://127.0.0.1/.'); + expect(element.all(by.css('#linky-filter a')).count()).toEqual(4); + }); + + it('should not linkify snippet without the linky filter', function() { + expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()). + toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' + + 'another@somewhere.org, and one more: ftp://127.0.0.1/.'); + expect(element.all(by.css('#escaped-html a')).count()).toEqual(0); + }); + + it('should update', function() { + element(by.model('snippet')).clear(); + element(by.model('snippet')).sendKeys('new http://link.'); + expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()). + toBe('new http://link.'); + expect(element.all(by.css('#linky-filter a')).count()).toEqual(1); + expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()) + .toBe('new http://link.'); + }); + + it('should work with the target property', function() { + expect(element(by.id('linky-target')). + element(by.binding("snippetWithTarget | linky:'_blank'")).getText()). + toBe('http://angularjs.org/'); + expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank'); + }); + + + */ +angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) { + var LINKY_URL_REGEXP = + /((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"]/, + MAILTO_REGEXP = /^mailto:/; + + return function(text, target) { + if (!text) return text; + var match; + var raw = text; + var html = []; + var url; + var i; + while ((match = raw.match(LINKY_URL_REGEXP))) { + // We can not end in these as they are sometimes found at the end of the sentence + url = match[0]; + // if we did not match ftp/http/mailto then assume mailto + if (match[2] == match[3]) url = 'mailto:' + url; + i = match.index; + addText(raw.substr(0, i)); + addLink(url, match[0].replace(MAILTO_REGEXP, '')); + raw = raw.substring(i + match[0].length); + } + addText(raw); + return $sanitize(html.join('')); + + function addText(text) { + if (!text) { + return; + } + html.push(sanitizeText(text)); + } + + function addLink(url, text) { + html.push(''); + addText(text); + html.push(''); + } + }; +}]); + + +})(window, window.angular); diff --git a/1.2.30/angular-sanitize.min.js b/1.2.30/angular-sanitize.min.js new file mode 100644 index 0000000000..c91c0944db --- /dev/null +++ b/1.2.30/angular-sanitize.min.js @@ -0,0 +1,15 @@ +/* + AngularJS v1.2.30 + (c) 2010-2014 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(q,g,r){'use strict';function F(a){var d=[];t(d,g.noop).chars(a);return d.join("")}function l(a){var d={};a=a.split(",");var c;for(c=0;c=c;e--)d.end&&d.end(f[e]);f.length=c}}"string"!==typeof a&&(a=null===a||"undefined"===typeof a?"":""+a);var b,k,f=[],n=a,h;for(f.last=function(){return f[f.length-1]};a;){h="";k=!0;if(f.last()&&y[f.last()])a=a.replace(RegExp("(.*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(a,b){b=b.replace(I,"$1").replace(J,"$1");d.chars&&d.chars(s(b));return""}),e("",f.last());else{if(0===a.indexOf("\x3c!--"))b=a.indexOf("--",4),0<=b&&a.lastIndexOf("--\x3e",b)===b&&(d.comment&&d.comment(a.substring(4, +b)),a=a.substring(b+3),k=!1);else if(z.test(a)){if(b=a.match(z))a=a.replace(b[0],""),k=!1}else if(K.test(a)){if(b=a.match(A))a=a.substring(b[0].length),b[0].replace(A,e),k=!1}else L.test(a)&&((b=a.match(B))?(b[4]&&(a=a.substring(b[0].length),b[0].replace(B,c)),k=!1):(h+="<",a=a.substring(1)));k&&(b=a.indexOf("<"),h+=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),d.chars&&d.chars(s(h)))}if(a==n)throw M("badparse",a);n=a}e()}function s(a){if(!a)return"";var d=N.exec(a);a=d[1];var c=d[3];if(d=d[2])p.innerHTML= +d.replace(//g,">")}function t(a,d){var c=!1,e=g.bind(a,a.push);return{start:function(a,k,f){a=g.lowercase(a);!c&&y[a]&&(c=a);c||!0!==D[a]||(e("<"),e(a),g.forEach(k,function(c,f){var m= +g.lowercase(f),k="img"===a&&"src"===m||"background"===m;!0!==Q[m]||!0===E[m]&&!d(c,k)||(e(" "),e(f),e('="'),e(C(c)),e('"'))}),e(f?"/>":">"))},end:function(a){a=g.lowercase(a);c||!0!==D[a]||(e(""));a==c&&(c=!1)},chars:function(a){c||e(C(a))}}}var M=g.$$minErr("$sanitize"),B=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,A=/^<\/\s*([\w:-]+)[^>]*>/,H=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,L=/^]*?)>/i,J=/"]/,c=/^mailto:/;return function(e,b){function k(a){a&&m.push(F(a))}function f(a,c){m.push("');k(c);m.push("")} +if(!e)return e;for(var n,h=e,m=[],l,p;n=h.match(d);)l=n[0],n[2]==n[3]&&(l="mailto:"+l),p=n.index,k(h.substr(0,p)),f(l,n[0].replace(c,"")),h=h.substring(p+n[0].length);k(h);return a(m.join(""))}}])})(window,window.angular); +//# sourceMappingURL=angular-sanitize.min.js.map diff --git a/1.2.30/angular-sanitize.min.js.map b/1.2.30/angular-sanitize.min.js.map new file mode 100644 index 0000000000..b17c02b0cd --- /dev/null +++ b/1.2.30/angular-sanitize.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular-sanitize.min.js", +"lineCount":14, +"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CAkJtCC,QAASA,EAAY,CAACC,CAAD,CAAQ,CAC3B,IAAIC,EAAM,EACGC,EAAAC,CAAmBF,CAAnBE,CAAwBN,CAAAO,KAAxBD,CACbH,MAAA,CAAaA,CAAb,CACA,OAAOC,EAAAI,KAAA,CAAS,EAAT,CAJoB,CAoE7BC,QAASA,EAAO,CAACC,CAAD,CAAM,CAAA,IAChBC,EAAM,EAAIC,EAAAA,CAAQF,CAAAG,MAAA,CAAU,GAAV,CAAtB,KAAsCC,CACtC,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBF,CAAAG,OAAhB,CAA8BD,CAAA,EAA9B,CAAmCH,CAAA,CAAIC,CAAA,CAAME,CAAN,CAAJ,CAAA,CAAgB,CAAA,CACnD,OAAOH,EAHa,CAmBtBK,QAASA,EAAU,CAAEC,CAAF,CAAQC,CAAR,CAAkB,CAgGnCC,QAASA,EAAa,CAAEC,CAAF,CAAOC,CAAP,CAAgBC,CAAhB,CAAsBC,CAAtB,CAA8B,CAClDF,CAAA,CAAUrB,CAAAwB,UAAA,CAAkBH,CAAlB,CACV,IAAKI,CAAA,CAAeJ,CAAf,CAAL,CACE,IAAA,CAAQK,CAAAC,KAAA,EAAR,EAAwBC,CAAA,CAAgBF,CAAAC,KAAA,EAAhB,CAAxB,CAAA,CACEE,CAAA,CAAa,EAAb,CAAiBH,CAAAC,KAAA,EAAjB,CAICG,EAAA,CAAwBT,CAAxB,CAAL,EAA0CK,CAAAC,KAAA,EAA1C,EAA0DN,CAA1D,EACEQ,CAAA,CAAa,EAAb,CAAiBR,CAAjB,CAKF,EAFAE,CAEA,CAFQQ,CAAA,CAAcV,CAAd,CAER,EAFmC,CAAC,CAACE,CAErC,GACEG,CAAAM,KAAA,CAAYX,CAAZ,CAEF,KAAIY,EAAQ,EAEZX,EAAAY,QAAA,CAAaC,CAAb,CACE,QAAQ,CAACC,CAAD,CAAQC,CAAR,CAAcC,CAAd,CAAiCC,CAAjC,CAAoDC,CAApD,CAAmE,CAMzEP,CAAA,CAAMI,CAAN,CAAA,CAAcI,CAAA,CALFH,CAKE,EAJTC,CAIS,EAHTC,CAGS,EAFT,EAES,CAN2D,CAD7E,CASItB,EAAAwB,MAAJ,EAAmBxB,CAAAwB,MAAA,CAAerB,CAAf,CAAwBY,CAAxB,CAA+BV,CAA/B,CA5B+B,CA+BpDM,QAASA,EAAW,CAAET,CAAF,CAAOC,CAAP,CAAiB,CAAA,IAC/BsB,EAAM,CADyB,CACtB7B,CAEb,IADAO,CACA,CADUrB,CAAAwB,UAAA,CAAkBH,CAAlB,CACV,CAEE,IAAMsB,CAAN,CAAYjB,CAAAX,OAAZ,CAA2B,CAA3B,CAAqC,CAArC,EAA8B4B,CAA9B,EACOjB,CAAA,CAAOiB,CAAP,CADP,EACuBtB,CADvB,CAAwCsB,CAAA,EAAxC;AAIF,GAAY,CAAZ,EAAKA,CAAL,CAAgB,CAEd,IAAM7B,CAAN,CAAUY,CAAAX,OAAV,CAAyB,CAAzB,CAA4BD,CAA5B,EAAiC6B,CAAjC,CAAsC7B,CAAA,EAAtC,CACMI,CAAA0B,IAAJ,EAAiB1B,CAAA0B,IAAA,CAAalB,CAAA,CAAOZ,CAAP,CAAb,CAGnBY,EAAAX,OAAA,CAAe4B,CAND,CATmB,CA9HjB,QAApB,GAAI,MAAO1B,EAAX,GAEIA,CAFJ,CACe,IAAb,GAAIA,CAAJ,EAAqC,WAArC,GAAqB,MAAOA,EAA5B,CACS,EADT,CAGS,EAHT,CAGcA,CAJhB,CADmC,KAQ/B4B,CAR+B,CAQxB1C,CARwB,CAQVuB,EAAQ,EARE,CAQEC,EAAOV,CART,CAQe6B,CAGlD,KAFApB,CAAAC,KAEA,CAFaoB,QAAQ,EAAG,CAAE,MAAOrB,EAAA,CAAOA,CAAAX,OAAP,CAAsB,CAAtB,CAAT,CAExB,CAAQE,CAAR,CAAA,CAAe,CACb6B,CAAA,CAAO,EACP3C,EAAA,CAAQ,CAAA,CAGR,IAAMuB,CAAAC,KAAA,EAAN,EAAuBqB,CAAA,CAAiBtB,CAAAC,KAAA,EAAjB,CAAvB,CA0DEV,CASA,CATOA,CAAAiB,QAAA,CAAiBe,MAAJ,CAAW,kBAAX,CAAgCvB,CAAAC,KAAA,EAAhC,CAA+C,QAA/C,CAAyD,GAAzD,CAAb,CACL,QAAQ,CAACuB,CAAD,CAAMJ,CAAN,CAAW,CACjBA,CAAA,CAAOA,CAAAZ,QAAA,CAAaiB,CAAb,CAA6B,IAA7B,CAAAjB,QAAA,CAA2CkB,CAA3C,CAAyD,IAAzD,CAEHlC,EAAAf,MAAJ,EAAmBe,CAAAf,MAAA,CAAesC,CAAA,CAAeK,CAAf,CAAf,CAEnB,OAAO,EALU,CADd,CASP,CAAAjB,CAAA,CAAa,EAAb,CAAiBH,CAAAC,KAAA,EAAjB,CAnEF,KAAyD,CAGvD,GAA8B,CAA9B,GAAKV,CAAAoC,QAAA,CAAa,SAAb,CAAL,CAEER,CAEA,CAFQ5B,CAAAoC,QAAA,CAAa,IAAb,CAAmB,CAAnB,CAER,CAAc,CAAd,EAAKR,CAAL,EAAmB5B,CAAAqC,YAAA,CAAiB,QAAjB,CAAwBT,CAAxB,CAAnB,GAAsDA,CAAtD,GACM3B,CAAAqC,QAEJ,EAFqBrC,CAAAqC,QAAA,CAAiBtC,CAAAuC,UAAA,CAAgB,CAAhB;AAAmBX,CAAnB,CAAjB,CAErB,CADA5B,CACA,CADOA,CAAAuC,UAAA,CAAgBX,CAAhB,CAAwB,CAAxB,CACP,CAAA1C,CAAA,CAAQ,CAAA,CAHV,CAJF,KAUO,IAAKsD,CAAAC,KAAA,CAAoBzC,CAApB,CAAL,CAGL,IAFAmB,CAEA,CAFQnB,CAAAmB,MAAA,CAAYqB,CAAZ,CAER,CACExC,CACA,CADOA,CAAAiB,QAAA,CAAcE,CAAA,CAAM,CAAN,CAAd,CAAwB,EAAxB,CACP,CAAAjC,CAAA,CAAQ,CAAA,CAFV,CAHK,IAQA,IAAKwD,CAAAD,KAAA,CAA4BzC,CAA5B,CAAL,CAGL,IAFAmB,CAEA,CAFQnB,CAAAmB,MAAA,CAAYwB,CAAZ,CAER,CACE3C,CAEA,CAFOA,CAAAuC,UAAA,CAAgBpB,CAAA,CAAM,CAAN,CAAArB,OAAhB,CAEP,CADAqB,CAAA,CAAM,CAAN,CAAAF,QAAA,CAAkB0B,CAAlB,CAAkC/B,CAAlC,CACA,CAAA1B,CAAA,CAAQ,CAAA,CAHV,CAHK,IAUK0D,EAAAH,KAAA,CAAsBzC,CAAtB,CAAL,GAGL,CAFAmB,CAEA,CAFQnB,CAAAmB,MAAA,CAAY0B,CAAZ,CAER,GAEO1B,CAAA,CAAM,CAAN,CAIL,GAHEnB,CACA,CADOA,CAAAuC,UAAA,CAAgBpB,CAAA,CAAM,CAAN,CAAArB,OAAhB,CACP,CAAAqB,CAAA,CAAM,CAAN,CAAAF,QAAA,CAAkB4B,CAAlB,CAAoC3C,CAApC,CAEF,EAAAhB,CAAA,CAAQ,CAAA,CANV,GASE2C,CACA,EADQ,GACR,CAAA7B,CAAA,CAAOA,CAAAuC,UAAA,CAAe,CAAf,CAVT,CAHK,CAiBFrD,EAAL,GACE0C,CAKA,CALQ5B,CAAAoC,QAAA,CAAa,GAAb,CAKR,CAHAP,CAGA,EAHgB,CAAR,CAAAD,CAAA,CAAY5B,CAAZ,CAAmBA,CAAAuC,UAAA,CAAgB,CAAhB,CAAmBX,CAAnB,CAG3B,CAFA5B,CAEA,CAFe,CAAR,CAAA4B,CAAA,CAAY,EAAZ,CAAiB5B,CAAAuC,UAAA,CAAgBX,CAAhB,CAExB,CAAI3B,CAAAf,MAAJ,EAAmBe,CAAAf,MAAA,CAAesC,CAAA,CAAeK,CAAf,CAAf,CANrB,CAhDuD,CAsEzD,GAAK7B,CAAL,EAAaU,CAAb,CACE,KAAMoC,EAAA,CAAgB,UAAhB,CAC4C9C,CAD5C,CAAN,CAGFU,CAAA,CAAOV,CA/EM,CAmFfY,CAAA,EA9FmC,CA0JrCY,QAASA,EAAc,CAACuB,CAAD,CAAQ,CAC7B,GAAI,CAACA,CAAL,CAAc,MAAO,EAIrB,KAAIC,EAAQC,CAAAC,KAAA,CAAaH,CAAb,CACRI,EAAAA,CAAcH,CAAA,CAAM,CAAN,CAClB,KAAII,EAAaJ,CAAA,CAAM,CAAN,CAEjB,IADIK,CACJ,CADcL,CAAA,CAAM,CAAN,CACd,CACEM,CAAAC,UAKA;AALoBF,CAAApC,QAAA,CAAgB,IAAhB,CAAqB,MAArB,CAKpB,CAAAoC,CAAA,CAAU,aAAA,EAAiBC,EAAjB,CACRA,CAAAE,YADQ,CACgBF,CAAAG,UAE5B,OAAON,EAAP,CAAqBE,CAArB,CAA+BD,CAlBF,CA4B/BM,QAASA,EAAc,CAACX,CAAD,CAAQ,CAC7B,MAAOA,EAAA9B,QAAA,CACG,IADH,CACS,OADT,CAAAA,QAAA,CAEG0C,CAFH,CAE0B,QAAS,CAACZ,CAAD,CAAQ,CAC9C,IAAIa,EAAKb,CAAAc,WAAA,CAAiB,CAAjB,CACLC,EAAAA,CAAMf,CAAAc,WAAA,CAAiB,CAAjB,CACV,OAAO,IAAP,EAAgC,IAAhC,EAAiBD,CAAjB,CAAsB,KAAtB,GAA0CE,CAA1C,CAAgD,KAAhD,EAA0D,KAA1D,EAAqE,GAHvB,CAF3C,CAAA7C,QAAA,CAOG8C,CAPH,CAO4B,QAAQ,CAAChB,CAAD,CAAO,CAC9C,MAAO,IAAP,CAAcA,CAAAc,WAAA,CAAiB,CAAjB,CAAd,CAAoC,GADU,CAP3C,CAAA5C,QAAA,CAUG,IAVH,CAUS,MAVT,CAAAA,QAAA,CAWG,IAXH,CAWS,MAXT,CADsB,CAyB/B7B,QAASA,EAAkB,CAACD,CAAD,CAAM6E,CAAN,CAAmB,CAC5C,IAAIC,EAAS,CAAA,CAAb,CACIC,EAAMnF,CAAAoF,KAAA,CAAahF,CAAb,CAAkBA,CAAA4B,KAAlB,CACV,OAAO,OACEU,QAAQ,CAACtB,CAAD,CAAMa,CAAN,CAAaV,CAAb,CAAmB,CAChCH,CAAA,CAAMpB,CAAAwB,UAAA,CAAkBJ,CAAlB,CACD8D,EAAAA,CAAL,EAAelC,CAAA,CAAgB5B,CAAhB,CAAf,GACE8D,CADF,CACW9D,CADX,CAGK8D,EAAL,EAAsC,CAAA,CAAtC,GAAeG,CAAA,CAAcjE,CAAd,CAAf,GACE+D,CAAA,CAAI,GAAJ,CAcA,CAbAA,CAAA,CAAI/D,CAAJ,CAaA,CAZApB,CAAAsF,QAAA,CAAgBrD,CAAhB,CAAuB,QAAQ,CAAC+B,CAAD,CAAQuB,CAAR,CAAY,CACzC,IAAIC;AAAKxF,CAAAwB,UAAA,CAAkB+D,CAAlB,CAAT,CACIE,EAAmB,KAAnBA,GAAWrE,CAAXqE,EAAqC,KAArCA,GAA4BD,CAA5BC,EAAyD,YAAzDA,GAAgDD,CAC3B,EAAA,CAAzB,GAAIE,CAAA,CAAWF,CAAX,CAAJ,EACsB,CAAA,CADtB,GACGG,CAAA,CAASH,CAAT,CADH,EAC8B,CAAAP,CAAA,CAAajB,CAAb,CAAoByB,CAApB,CAD9B,GAEEN,CAAA,CAAI,GAAJ,CAIA,CAHAA,CAAA,CAAII,CAAJ,CAGA,CAFAJ,CAAA,CAAI,IAAJ,CAEA,CADAA,CAAA,CAAIR,CAAA,CAAeX,CAAf,CAAJ,CACA,CAAAmB,CAAA,CAAI,GAAJ,CANF,CAHyC,CAA3C,CAYA,CAAAA,CAAA,CAAI5D,CAAA,CAAQ,IAAR,CAAe,GAAnB,CAfF,CALgC,CAD7B,KAwBAqB,QAAQ,CAACxB,CAAD,CAAK,CACdA,CAAA,CAAMpB,CAAAwB,UAAA,CAAkBJ,CAAlB,CACD8D,EAAL,EAAsC,CAAA,CAAtC,GAAeG,CAAA,CAAcjE,CAAd,CAAf,GACE+D,CAAA,CAAI,IAAJ,CAEA,CADAA,CAAA,CAAI/D,CAAJ,CACA,CAAA+D,CAAA,CAAI,GAAJ,CAHF,CAKI/D,EAAJ,EAAW8D,CAAX,GACEA,CADF,CACW,CAAA,CADX,CAPc,CAxBb,OAmCE/E,QAAQ,CAACA,CAAD,CAAO,CACb+E,CAAL,EACEC,CAAA,CAAIR,CAAA,CAAexE,CAAf,CAAJ,CAFgB,CAnCjB,CAHqC,CAtb9C,IAAI4D,EAAkB/D,CAAA4F,SAAA,CAAiB,WAAjB,CAAtB,CAyJI9B,EACG,wGA1JP,CA2JEF,EAAiB,wBA3JnB,CA4JEzB,EAAc,yEA5JhB,CA6JE0B,EAAmB,IA7JrB;AA8JEF,EAAyB,MA9J3B,CA+JER,EAAiB,qBA/JnB,CAgKEM,EAAiB,qBAhKnB,CAiKEL,EAAe,yBAjKjB,CAkKEwB,EAAwB,iCAlK1B,CAoKEI,EAA0B,gBApK5B,CA6KIjD,EAAetB,CAAA,CAAQ,wBAAR,CAIfoF,EAAAA,CAA8BpF,CAAA,CAAQ,gDAAR,CAC9BqF,EAAAA,CAA+BrF,CAAA,CAAQ,OAAR,CADnC,KAEIqB,EAAyB9B,CAAA+F,OAAA,CAAe,EAAf,CACeD,CADf,CAEeD,CAFf,CAF7B,CAOIpE,EAAgBzB,CAAA+F,OAAA,CAAe,EAAf,CAAmBF,CAAnB,CAAgDpF,CAAA,CAAQ,4KAAR,CAAhD,CAPpB,CAYImB,EAAiB5B,CAAA+F,OAAA,CAAe,EAAf,CAAmBD,CAAnB,CAAiDrF,CAAA,CAAQ,2JAAR,CAAjD,CAZrB;AAkBIuC,EAAkBvC,CAAA,CAAQ,cAAR,CAlBtB,CAoBI4E,EAAgBrF,CAAA+F,OAAA,CAAe,EAAf,CACehE,CADf,CAEeN,CAFf,CAGeG,CAHf,CAIeE,CAJf,CApBpB,CA2BI6D,EAAWlF,CAAA,CAAQ,mCAAR,CA3Bf,CA4BIiF,EAAa1F,CAAA+F,OAAA,CAAe,EAAf,CAAmBJ,CAAnB,CAA6BlF,CAAA,CAC1C,ySAD0C,CAA7B,CA5BjB,CAyMI8D,EAAUyB,QAAAC,cAAA,CAAuB,KAAvB,CAzMd,CA0MI/B,EAAU,wBA2GdlE,EAAAkG,OAAA,CAAe,YAAf,CAA6B,EAA7B,CAAAC,SAAA,CAA0C,WAA1C;AAlWAC,QAA0B,EAAG,CAC3B,IAAAC,KAAA,CAAY,CAAC,eAAD,CAAkB,QAAQ,CAACC,CAAD,CAAgB,CACpD,MAAO,SAAQ,CAACrF,CAAD,CAAO,CACpB,IAAIb,EAAM,EACVY,EAAA,CAAWC,CAAX,CAAiBZ,CAAA,CAAmBD,CAAnB,CAAwB,QAAQ,CAACmG,CAAD,CAAMd,CAAN,CAAe,CAC9D,MAAO,CAAC,SAAA/B,KAAA,CAAe4C,CAAA,CAAcC,CAAd,CAAmBd,CAAnB,CAAf,CADsD,CAA/C,CAAjB,CAGA,OAAOrF,EAAAI,KAAA,CAAS,EAAT,CALa,CAD8B,CAA1C,CADe,CAkW7B,CAwGAR,EAAAkG,OAAA,CAAe,YAAf,CAAAM,OAAA,CAAoC,OAApC,CAA6C,CAAC,WAAD,CAAc,QAAQ,CAACC,CAAD,CAAY,CAAA,IACzEC,EACE,oEAFuE,CAGzEC,EAAgB,UAEpB,OAAO,SAAQ,CAAC7D,CAAD,CAAO8D,CAAP,CAAe,CAoB5BC,QAASA,EAAO,CAAC/D,CAAD,CAAO,CAChBA,CAAL,EAGA7B,CAAAe,KAAA,CAAU9B,CAAA,CAAa4C,CAAb,CAAV,CAJqB,CAOvBgE,QAASA,EAAO,CAACC,CAAD,CAAMjE,CAAN,CAAY,CAC1B7B,CAAAe,KAAA,CAAU,KAAV,CACIhC,EAAAgH,UAAA,CAAkBJ,CAAlB,CAAJ,GACE3F,CAAAe,KAAA,CAAU,UAAV,CAEA,CADAf,CAAAe,KAAA,CAAU4E,CAAV,CACA,CAAA3F,CAAAe,KAAA,CAAU,IAAV,CAHF,CAKAf,EAAAe,KAAA,CAAU,QAAV,CACU+E,CAAA7E,QAAA,CAAY,GAAZ,CAAiB,QAAjB,CADV,CAEU,IAFV,CAGA2E,EAAA,CAAQ/D,CAAR,CACA7B,EAAAe,KAAA,CAAU,MAAV,CAX0B,CA3BA;AAC5B,GAAI,CAACc,CAAL,CAAW,MAAOA,EAMlB,KALA,IAAIV,CAAJ,CACI6E,EAAMnE,CADV,CAEI7B,EAAO,EAFX,CAGI8F,CAHJ,CAIIjG,CACJ,CAAQsB,CAAR,CAAgB6E,CAAA7E,MAAA,CAAUsE,CAAV,CAAhB,CAAA,CAEEK,CAMA,CANM3E,CAAA,CAAM,CAAN,CAMN,CAJIA,CAAA,CAAM,CAAN,CAIJ,EAJgBA,CAAA,CAAM,CAAN,CAIhB,GAJ0B2E,CAI1B,CAJgC,SAIhC,CAJ4CA,CAI5C,EAHAjG,CAGA,CAHIsB,CAAAS,MAGJ,CAFAgE,CAAA,CAAQI,CAAAC,OAAA,CAAW,CAAX,CAAcpG,CAAd,CAAR,CAEA,CADAgG,CAAA,CAAQC,CAAR,CAAa3E,CAAA,CAAM,CAAN,CAAAF,QAAA,CAAiByE,CAAjB,CAAgC,EAAhC,CAAb,CACA,CAAAM,CAAA,CAAMA,CAAAzD,UAAA,CAAc1C,CAAd,CAAkBsB,CAAA,CAAM,CAAN,CAAArB,OAAlB,CAER8F,EAAA,CAAQI,CAAR,CACA,OAAOR,EAAA,CAAUxF,CAAAT,KAAA,CAAU,EAAV,CAAV,CAlBqB,CAL+C,CAAlC,CAA7C,CAhlBsC,CAArC,CAAA,CAioBET,MAjoBF,CAioBUA,MAAAC,QAjoBV;", +"sources":["angular-sanitize.js"], +"names":["window","angular","undefined","sanitizeText","chars","buf","htmlSanitizeWriter","writer","noop","join","makeMap","str","obj","items","split","i","length","htmlParser","html","handler","parseStartTag","tag","tagName","rest","unary","lowercase","blockElements","stack","last","inlineElements","parseEndTag","optionalEndTagElements","voidElements","push","attrs","replace","ATTR_REGEXP","match","name","doubleQuotedValue","singleQuotedValue","unquotedValue","decodeEntities","start","pos","end","index","text","stack.last","specialElements","RegExp","all","COMMENT_REGEXP","CDATA_REGEXP","indexOf","lastIndexOf","comment","substring","DOCTYPE_REGEXP","test","BEGING_END_TAGE_REGEXP","END_TAG_REGEXP","BEGIN_TAG_REGEXP","START_TAG_REGEXP","$sanitizeMinErr","value","parts","spaceRe","exec","spaceBefore","spaceAfter","content","hiddenPre","innerHTML","textContent","innerText","encodeEntities","SURROGATE_PAIR_REGEXP","hi","charCodeAt","low","NON_ALPHANUMERIC_REGEXP","uriValidator","ignore","out","bind","validElements","forEach","key","lkey","isImage","validAttrs","uriAttrs","$$minErr","optionalEndTagBlockElements","optionalEndTagInlineElements","extend","document","createElement","module","provider","$SanitizeProvider","$get","$$sanitizeUri","uri","filter","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","target","addText","addLink","url","isDefined","raw","substr"] +} diff --git a/1.2.30/angular-scenario.js b/1.2.30/angular-scenario.js new file mode 100644 index 0000000000..757b472706 --- /dev/null +++ b/1.2.30/angular-scenario.js @@ -0,0 +1,34187 @@ +/*! + * jQuery JavaScript Library v1.10.2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-07-03T13:48Z + */ +(function( window, undefined ) {'use strict'; + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +// + +var + // The deferred used on DOM ready + readyList, + + // A central reference to the root jQuery(document) + rootjQuery, + + // Support: IE<10 + // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined` + core_strundefined = typeof undefined, + + // Use the correct document accordingly with window argument (sandbox) + location = window.location, + document = window.document, + docElem = document.documentElement, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // [[Class]] -> type pairs + class2type = {}, + + // List of deleted data cache ids, so we can reuse them + core_deletedIds = [], + + core_version = "1.10.2", + + // Save a reference to some core methods + core_concat = core_deletedIds.concat, + core_push = core_deletedIds.push, + core_slice = core_deletedIds.slice, + core_indexOf = core_deletedIds.indexOf, + core_toString = class2type.toString, + core_hasOwn = class2type.hasOwnProperty, + core_trim = core_version.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + + // Used for splitting on whitespace + core_rnotwhite = /\S+/g, + + // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // The ready event handler + completed = function( event ) { + + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } + }, + // Clean-up method for dom ready events + detach = function() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: core_version, + + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return core_slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), + + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + if ( obj == null ) { + return String( obj ); + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ core_toString.call(obj) ] || "object" : + typeof obj; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( jQuery.support.ownLast ) { + for ( key in obj ) { + return core_hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // keepScripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, keepScripts ) { + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + context = context || document; + + var parsed = rsingleTag.exec( data ), + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ); + if ( scripts ) { + jQuery( scripts ).remove(); + } + return jQuery.merge( [], parsed.childNodes ); + }, + + parseJSON: function( data ) { + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + if ( data === null ) { + return data; + } + + if ( typeof data === "string" ) { + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + if ( data ) { + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + } + } + } + + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + core_push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return core_concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations. + // Note: this method belongs to the css module but it's needed here for the support module. + // If support gets modularized, this method should be moved back to the css module. + swap: function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || type !== "function" && + ( length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj ); +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +/*! + * Sizzle CSS Selector Engine v1.10.2 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-07-03 + */ +(function( window, undefined ) { + +var i, + support, + cachedruns, + Expr, + getText, + isXML, + compile, + outermostContext, + sortInput, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + hasDuplicate = false, + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + return 0; + }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments quoted, + // then not containing pseudos/brackets, + // then attribute selectors/non-parenthetical expressions, + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rsibling = new RegExp( whitespace + "*[+~]" ), + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + // BMP codepoint + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( documentIsHTML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key += " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Detect xml + * @param {Element|Object} elem An element or a document + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.defaultView; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsHTML = !isXML( doc ); + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent.attachEvent && parent !== parent.top ) { + parent.attachEvent( "onbeforeunload", function() { + setDocument(); + }); + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if getElementsByClassName can be trusted + support.getElementsByClassName = assert(function( div ) { + div.innerHTML = "
"; + + // Support: Safari<4 + // Catch class over-caching + div.firstChild.className = "i"; + // Support: Opera<10 + // Catch gEBCN failure to find non-leading classes + return div.getElementsByClassName("i").length === 2; + }); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Support: Opera 10-12/IE8 + // ^= $= *= and empty values + // Should not select anything + // Support: Windows 8 Native Apps + // The type attribute is restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "t", "" ); + + if ( div.querySelectorAll("[t^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b ); + + if ( compare ) { + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } + + // Not directly comparable, sort on existence of method + return a.compareDocumentPosition ? -1 : 1; + } : + function( a, b ) { + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Parentless nodes are either documents or disconnected + } else if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val === undefined ? + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null : + val; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] && match[4] !== undefined ) { + match[2] = match[4]; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( tokens = [] ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var data, cache, outerCache, + dirkey = dirruns + " " + doneName; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { + if ( (data = cache[1]) === true || data === cachedruns ) { + return data === true; + } + } else { + cache = outerCache[ dir ] = [ dirkey ]; + cache[1] = matcher( elem, context, xml ) || cachedruns; + if ( cache[1] === true ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + // A counter to specify which element is currently being matched + var matcherCachedRuns = 0, + bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = matcherCachedRuns; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++matcherCachedRuns; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + match = tokenize( selector ); + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + } + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && context.parentNode || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) + ); + return results; +} + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + elem[ name ] === true ? name.toLowerCase() : null; + } + }); +} + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function( support ) { + + var all, a, input, select, fragment, opt, eventName, isSupported, i, + div = document.createElement("div"); + + // Setup + div.setAttribute( "className", "t" ); + div.innerHTML = "
a"; + + // Finish early in limited (non-browser) environments + all = div.getElementsByTagName("*") || []; + a = div.getElementsByTagName("a")[ 0 ]; + if ( !a || !a.style || !all.length ) { + return support; + } + + // First batch of tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + a.style.cssText = "top:1px;float:left;opacity:.5"; + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + support.getSetAttribute = div.className !== "t"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName("tbody").length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName("link").length; + + // Get the style information from getAttribute + // (IE uses .cssText instead) + support.style = /top/.test( a.getAttribute("style") ); + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + support.hrefNormalized = a.getAttribute("href") === "/a"; + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + support.opacity = /^0.5/.test( a.style.opacity ); + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + support.cssFloat = !!a.style.cssFloat; + + // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) + support.checkOn = !!input.value; + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + support.optSelected = opt.selected; + + // Tests for enctype support on a form (#6743) + support.enctype = !!document.createElement("form").enctype; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>"; + + // Will be defined later + support.inlineBlockNeedsLayout = false; + support.shrinkWrapBlocks = false; + support.pixelPosition = false; + support.deleteExpando = true; + support.noCloneEvent = true; + support.reliableMarginRight = true; + support.boxSizingReliable = true; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Support: IE<9 + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + // Check if we can trust getAttribute("value") + input = document.createElement("input"); + input.setAttribute( "value", "" ); + support.input = input.getAttribute( "value" ) === ""; + + // Check if an input maintains its value after becoming a radio + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "checked", "t" ); + input.setAttribute( "name", "t" ); + + fragment = document.createDocumentFragment(); + fragment.appendChild( input ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event) + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + for ( i in { submit: true, change: true, focusin: true }) { + div.setAttribute( eventName = "on" + i, "t" ); + + support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false; + } + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + // Support: IE<9 + // Iteration over object's inherited properties before its own. + for ( i in jQuery( support ) ) { + break; + } + support.ownLast = i !== "0"; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, marginDiv, tds, + divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; + + body.appendChild( container ).appendChild( div ); + + // Support: IE8 + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + div.innerHTML = "
t
"; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Support: IE8 + // Check if empty table cells still have offsetWidth/Height + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior. + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + + // Workaround failing boxSizing test due to offsetWidth returning wrong value + // with some non-1 values of body zoom, ticket #13543 + jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() { + support.boxSizing = div.offsetWidth === 4; + }); + + // Use window.getComputedStyle because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. (#3333) + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = div.appendChild( document.createElement("div") ); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + if ( typeof div.style.zoom !== core_strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Support: IE6 + // Check if elements with layout shrink-wrap their children + div.style.display = "block"; + div.innerHTML = "
"; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + if ( support.inlineBlockNeedsLayout ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); + + // Null elements to avoid leaks in IE + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + all = select = fragment = opt = a = input = null; + + return support; +})({}); + +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +function internalData( elem, name, data, pvt /* Internal Use Only */ ){ + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "applet": true, + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + // Do not set data on non-element because it will not be cleared (#8335). + if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) { + return false; + } + + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var attrs, name, + data = null, + i = 0, + elem = this[0]; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attrs = elem.attributes; + for ( ; i < attrs.length; i++ ) { + name = attrs[i].name; + + if ( name.indexOf("data-") === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data( this, key, value ); + }) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null; + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, + rclass = /[\t\r\n\f]/g, + rreturn = /\r/g, + rfocusable = /^(?:input|select|textarea|button|object)$/i, + rclickable = /^(?:a|area)$/i, + ruseDefault = /^(?:checked|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + getSetInput = jQuery.support.input; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call( this, j, this.className ) ); + }); + } + + if ( proceed ) { + // The disjunction here is for better compressibility (see removeClass) + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + " " + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + elem.className = jQuery.trim( cur ); + + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = arguments.length === 0 || typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call( this, j, this.className ) ); + }); + } + if ( proceed ) { + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + "" + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + elem.className = value ? jQuery.trim( cur ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + classNames = value.match( core_rnotwhite ) || []; + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( type === core_strundefined || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // If the element has a class name or if we're passed "false", + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var ret, hooks, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // Use proper attribute retrieval(#6932, #12072) + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + elem.text; + } + }, + select: { + get: function( elem ) { + var value, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // oldIE doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + // Don't return options that are disabled or in a disabled optgroup + ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && + ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) { + optionSet = true; + } + } + + // force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attr: function( elem, name, value ) { + var hooks, ret, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === core_strundefined ) { + return jQuery.prop( elem, name, value ); + } + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + + } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var name, propName, + i = 0, + attrNames = value && value.match( core_rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( (name = attrNames[i++]) ) { + propName = jQuery.propFix[ name ] || name; + + // Boolean attributes get special treatment (#10870) + if ( jQuery.expr.match.bool.test( name ) ) { + // Set corresponding property to false + if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + elem[ propName ] = false; + // Support: IE<9 + // Also clear defaultChecked/defaultSelected (if appropriate) + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = + elem[ propName ] = false; + } + + // See #9699 for explanation of this approach (setting first, then removal) + } else { + jQuery.attr( elem, name, "" ); + } + + elem.removeAttribute( getSetAttribute ? name : propName ); + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to default in case type is set after value during creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? + ret : + ( elem[ name ] = value ); + + } else { + return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? + ret : + elem[ name ]; + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + return tabindex ? + parseInt( tabindex, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + -1; + } + } + } +}); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + // IE<8 needs the *property* name + elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); + + // Use defaultChecked and defaultSelected for oldIE + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; + } + + return name; + } +}; +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr; + + jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ? + function( elem, name, isXML ) { + var fn = jQuery.expr.attrHandle[ name ], + ret = isXML ? + undefined : + /* jshint eqeqeq: false */ + (jQuery.expr.attrHandle[ name ] = undefined) != + getter( elem, name, isXML ) ? + + name.toLowerCase() : + null; + jQuery.expr.attrHandle[ name ] = fn; + return ret; + } : + function( elem, name, isXML ) { + return isXML ? + undefined : + elem[ jQuery.camelCase( "default-" + name ) ] ? + name.toLowerCase() : + null; + }; +}); + +// fix oldIE attroperties +if ( !getSetInput || !getSetAttribute ) { + jQuery.attrHooks.value = { + set: function( elem, value, name ) { + if ( jQuery.nodeName( elem, "input" ) ) { + // Does not return so that setAttribute is also used + elem.defaultValue = value; + } else { + // Use nodeHook if defined (#1954); otherwise setAttribute is fine + return nodeHook && nodeHook.set( elem, value, name ); + } + } + }; +} + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = { + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + elem.setAttributeNode( + (ret = elem.ownerDocument.createAttribute( name )) + ); + } + + ret.value = value += ""; + + // Break association with cloned elements by also using setAttribute (#9646) + return name === "value" || value === elem.getAttribute( name ) ? + value : + undefined; + } + }; + jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords = + // Some attributes are constructed with empty-string values when not defined + function( elem, name, isXML ) { + var ret; + return isXML ? + undefined : + (ret = elem.getAttributeNode( name )) && ret.value !== "" ? + ret.value : + null; + }; + jQuery.valHooks.button = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return ret && ret.specified ? + ret.value : + undefined; + }, + set: nodeHook.set + }; + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + set: function( elem, value, name ) { + nodeHook.set( elem, value === "" ? false : value, name ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }; + }); +} + + +// Some attributes require a special call on IE +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !jQuery.support.hrefNormalized ) { + // href/src property should get the full normalized URL (#10299/#12915) + jQuery.each([ "href", "src" ], function( i, name ) { + jQuery.propHooks[ name ] = { + get: function( elem ) { + return elem.getAttribute( name, 4 ); + } + }; + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Note: IE uppercases css property names, but if we were to .toLowerCase() + // .cssText, that would destroy case senstitivity in URL's, like in "background" + return elem.style.cssText || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }; +} + +jQuery.each([ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +}); + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }; + if ( !jQuery.support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + // Support: Webkit + // "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + }; + } +}); +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = core_hasOwn.call( event, "type" ) ? event.type : event, + namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = core_slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Even when returnValue equals to undefined Firefox will still show alert + if ( event.result !== undefined ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === core_strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); +var isSimple = /^.[^:#\[\.,]*$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + cur = ret.push( cur ); + break; + } + } + } + + return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( jQuery.unique(all) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.unique( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( isSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
", "
" ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + col: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var + // Snapshot the DOM in case .domManip sweeps something relevant into its fragment + args = jQuery.map( this, function( elem ) { + return [ elem.nextSibling, elem.parentNode ]; + }), + i = 0; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + var next = args[ i++ ], + parent = args[ i++ ]; + + if ( parent ) { + // Don't use the snapshot next if it has moved (#13810) + if ( next && next.parentNode !== parent ) { + next = this.nextSibling; + } + jQuery( this ).remove(); + parent.insertBefore( elem, next ); + } + // Allow new content to include elements from the context set + }, true ); + + // Force removal if there was no new content (e.g., from empty arguments) + return i ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback, allowIntersection ) { + + // Flatten any nested arrays + args = core_concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, self.html() ); + } + self.domManip( args, callback, allowIntersection ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[i], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Hope ajax is available... + jQuery._evalUrl( node.src ); + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + core_push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( manipulation_rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
" && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== core_strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + core_deletedIds.push( id ); + } + } + } + } + }, + + _evalUrl: function( url ) { + return jQuery.ajax({ + url: url, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } +}); +jQuery.fn.extend({ + wrapAll: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapAll( html.call(this, i) ); + }); + } + + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); + + if ( this[0].parentNode ) { + wrap.insertBefore( this[0] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function(i) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + } +}); +var iframe, getStyles, curCSS, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity\s*=\s*([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +function showHide( elements, show ) { + var display, elem, hidden, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + values[ index ] = jQuery._data( elem, "olddisplay" ); + display = elem.style.display; + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + + if ( !values[ index ] ) { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); + } + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + var len, styles, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each(function() { + if ( isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "columnCount": true, + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, + // but it would mean to define eight (for every problematic property) identical functions + if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var num, val, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + } +}); + +// NOTE: we've included the "window" in window.getComputedStyle +// because jsdom on node.js will break without it. +if ( window.getComputedStyle ) { + getStyles = function( elem ) { + return window.getComputedStyle( elem, null ); + }; + + curCSS = function( elem, name, _computed ) { + var width, minWidth, maxWidth, + computed = _computed || getStyles( elem ), + + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, + style = elem.style; + + if ( computed ) { + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + getStyles = function( elem ) { + return elem.currentStyle; + }; + + curCSS = function( elem, name, _computed ) { + var left, rs, rsLeft, + computed = _computed || getStyles( elem ), + ret = computed ? computed[ name ] : undefined, + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rs = elem.runtimeStyle; + rsLeft = rs && rs.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + rs.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + rs.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + // at this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var valueIsBorderBox = true, + val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + styles = getStyles( elem ), + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + // Use the already-created iframe if possible + iframe = ( iframe || + jQuery(" + + + + Light 300 +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz +
+ + Light 300 Italic +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz +
+ + Normal 400 +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz +
+ + Normal 400 Italic +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz +
+ + Semibold 600 +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz +
+ + Semibold 600 Italic +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz +
+ + Bold 700 +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz +
+ + Bold 700 Italic +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz +
+ + Extrabold 800 +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz +
+ + Extrabold 800 Italic +
+ AaBbCcDdEeFfGgHhJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz +
+ + \ No newline at end of file diff --git a/1.2.30/docs/components/open-sans-fontface-1.0.4/open-sans.css b/1.2.30/docs/components/open-sans-fontface-1.0.4/open-sans.css new file mode 100644 index 0000000000..76c36b935c --- /dev/null +++ b/1.2.30/docs/components/open-sans-fontface-1.0.4/open-sans.css @@ -0,0 +1,131 @@ +/* Open Sans @font-face kit */ + +/* BEGIN Light */ +@font-face { + font-family: 'Open Sans'; + src: url('fonts/Light/OpenSans-Light.eot'); + src: url('fonts/Light/OpenSans-Light.eot?#iefix') format('embedded-opentype'), + url('fonts/Light/OpenSans-Light.woff') format('woff'), + url('fonts/Light/OpenSans-Light.ttf') format('truetype'), + url('fonts/Light/OpenSans-Light.svg#OpenSansLight') format('svg'); + font-weight: 300; + font-style: normal; +} +/* END Light */ + +/* BEGIN Light Italic */ +@font-face { + font-family: 'Open Sans'; + src: url('fonts/LightItalic/OpenSans-LightItalic.eot'); + src: url('fonts/LightItalic/OpenSans-LightItalic.eot?#iefix') format('embedded-opentype'), + url('fonts/LightItalic/OpenSans-LightItalic.woff') format('woff'), + url('fonts/LightItalic/OpenSans-LightItalic.ttf') format('truetype'), + url('fonts/LightItalic/OpenSans-LightItalic.svg#OpenSansLightItalic') format('svg'); + font-weight: 300; + font-style: italic; +} +/* END Light Italic */ + +/* BEGIN Regular */ +@font-face { + font-family: 'Open Sans'; + src: url('fonts/Regular/OpenSans-Regular.eot'); + src: url('fonts/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), + url('fonts/Regular/OpenSans-Regular.woff') format('woff'), + url('fonts/Regular/OpenSans-Regular.ttf') format('truetype'), + url('fonts/Regular/OpenSans-Regular.svg#OpenSansRegular') format('svg'); + font-weight: normal; + font-style: normal; +} +/* END Regular */ + +/* BEGIN Italic */ +@font-face { + font-family: 'Open Sans'; + src: url('fonts/Italic/OpenSans-Italic.eot'); + src: url('fonts/Italic/OpenSans-Italic.eot?#iefix') format('embedded-opentype'), + url('fonts/Italic/OpenSans-Italic.woff') format('woff'), + url('fonts/Italic/OpenSans-Italic.ttf') format('truetype'), + url('fonts/Italic/OpenSans-Italic.svg#OpenSansItalic') format('svg'); + font-weight: normal; + font-style: italic; +} +/* END Italic */ + +/* BEGIN Semibold */ +@font-face { + font-family: 'Open Sans'; + src: url('fonts/Semibold/OpenSans-Semibold.eot'); + src: url('fonts/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), + url('fonts/Semibold/OpenSans-Semibold.woff') format('woff'), + url('fonts/Semibold/OpenSans-Semibold.ttf') format('truetype'), + url('fonts/Semibold/OpenSans-Semibold.svg#OpenSansSemibold') format('svg'); + font-weight: 600; + font-style: normal; +} +/* END Semibold */ + +/* BEGIN Semibold Italic */ +@font-face { + font-family: 'Open Sans'; + src: url('fonts/SemiboldItalic/OpenSans-SemiboldItalic.eot'); + src: url('fonts/SemiboldItalic/OpenSans-SemiboldItalic.eot?#iefix') format('embedded-opentype'), + url('fonts/SemiboldItalic/OpenSans-SemiboldItalic.woff') format('woff'), + url('fonts/SemiboldItalic/OpenSans-SemiboldItalic.ttf') format('truetype'), + url('fonts/SemiboldItalic/OpenSans-SemiboldItalic.svg#OpenSansSemiboldItalic') format('svg'); + font-weight: 600; + font-style: italic; +} +/* END Semibold Italic */ + +/* BEGIN Bold */ +@font-face { + font-family: 'Open Sans'; + src: url('fonts/Bold/OpenSans-Bold.eot'); + src: url('fonts/Bold/OpenSans-Bold.eot?#iefix') format('embedded-opentype'), + url('fonts/Bold/OpenSans-Bold.woff') format('woff'), + url('fonts/Bold/OpenSans-Bold.ttf') format('truetype'), + url('fonts/Bold/OpenSans-Bold.svg#OpenSansBold') format('svg'); + font-weight: bold; + font-style: normal; +} +/* END Bold */ + +/* BEGIN Bold Italic */ +@font-face { + font-family: 'Open Sans'; + src: url('fonts/BoldItalic/OpenSans-BoldItalic.eot'); + src: url('fonts/BoldItalic/OpenSans-BoldItalic.eot?#iefix') format('embedded-opentype'), + url('fonts/BoldItalic/OpenSans-BoldItalic.woff') format('woff'), + url('fonts/BoldItalic/OpenSans-BoldItalic.ttf') format('truetype'), + url('fonts/BoldItalic/OpenSans-BoldItalic.svg#OpenSansBoldItalic') format('svg'); + font-weight: bold; + font-style: italic; +} +/* END Bold Italic */ + +/* BEGIN Extrabold */ +@font-face { + font-family: 'Open Sans'; + src: url('fonts/ExtraBold/OpenSans-ExtraBold.eot'); + src: url('fonts/ExtraBold/OpenSans-ExtraBold.eot?#iefix') format('embedded-opentype'), + url('fonts/ExtraBold/OpenSans-ExtraBold.woff') format('woff'), + url('fonts/ExtraBold/OpenSans-ExtraBold.ttf') format('truetype'), + url('fonts/ExtraBold/OpenSans-ExtraBold.svg#OpenSansExtrabold') format('svg'); + font-weight: 800; + font-style: normal; +} +/* END Extrabold */ + +/* BEGIN Extrabold Italic */ +@font-face { + font-family: 'Open Sans'; + src: url('fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot'); + src: url('fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot?#iefix') format('embedded-opentype'), + url('fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.woff') format('woff'), + url('fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.ttf') format('truetype'), + url('fonts/ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg#OpenSansExtraboldItalic') format('svg'); + font-weight: 800; + font-style: italic; +} +/* END Extrabold Italic */ diff --git a/1.2.30/docs/components/open-sans-fontface-1.0.4/open-sans.less b/1.2.30/docs/components/open-sans-fontface-1.0.4/open-sans.less new file mode 100644 index 0000000000..236a402e96 --- /dev/null +++ b/1.2.30/docs/components/open-sans-fontface-1.0.4/open-sans.less @@ -0,0 +1,133 @@ +/* Open Sans @font-face kit */ + +@OpenSansPath: "./fonts"; + +/* BEGIN Light */ +@font-face { + font-family: 'Open Sans'; + src: url('@{OpenSansPath}/Light/OpenSans-Light.eot'); + src: url('@{OpenSansPath}/Light/OpenSans-Light.eot?#iefix') format('embedded-opentype'), + url('@{OpenSansPath}/Light/OpenSans-Light.woff') format('woff'), + url('@{OpenSansPath}/Light/OpenSans-Light.ttf') format('truetype'), + url('@{OpenSansPath}/Light/OpenSans-Light.svg#OpenSansLight') format('svg'); + font-weight: 300; + font-style: normal; +} +/* END Light */ + +/* BEGIN Light Italic */ +@font-face { + font-family: 'Open Sans'; + src: url('@{OpenSansPath}/LightItalic/OpenSans-LightItalic.eot'); + src: url('@{OpenSansPath}/LightItalic/OpenSans-LightItalic.eot?#iefix') format('embedded-opentype'), + url('@{OpenSansPath}/LightItalic/OpenSans-LightItalic.woff') format('woff'), + url('@{OpenSansPath}/LightItalic/OpenSans-LightItalic.ttf') format('truetype'), + url('@{OpenSansPath}/LightItalic/OpenSans-LightItalic.svg#OpenSansLightItalic') format('svg'); + font-weight: 300; + font-style: italic; +} +/* END Light Italic */ + +/* BEGIN Regular */ +@font-face { + font-family: 'Open Sans'; + src: url('@{OpenSansPath}/Regular/OpenSans-Regular.eot'); + src: url('@{OpenSansPath}/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), + url('@{OpenSansPath}/Regular/OpenSans-Regular.woff') format('woff'), + url('@{OpenSansPath}/Regular/OpenSans-Regular.ttf') format('truetype'), + url('@{OpenSansPath}/Regular/OpenSans-Regular.svg#OpenSansRegular') format('svg'); + font-weight: normal; + font-style: normal; +} +/* END Regular */ + +/* BEGIN Italic */ +@font-face { + font-family: 'Open Sans'; + src: url('@{OpenSansPath}/Italic/OpenSans-Italic.eot'); + src: url('@{OpenSansPath}/Italic/OpenSans-Italic.eot?#iefix') format('embedded-opentype'), + url('@{OpenSansPath}/Italic/OpenSans-Italic.woff') format('woff'), + url('@{OpenSansPath}/Italic/OpenSans-Italic.ttf') format('truetype'), + url('@{OpenSansPath}/Italic/OpenSans-Italic.svg#OpenSansItalic') format('svg'); + font-weight: normal; + font-style: italic; +} +/* END Italic */ + +/* BEGIN Semibold */ +@font-face { + font-family: 'Open Sans'; + src: url('@{OpenSansPath}/Semibold/OpenSans-Semibold.eot'); + src: url('@{OpenSansPath}/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), + url('@{OpenSansPath}/Semibold/OpenSans-Semibold.woff') format('woff'), + url('@{OpenSansPath}/Semibold/OpenSans-Semibold.ttf') format('truetype'), + url('@{OpenSansPath}/Semibold/OpenSans-Semibold.svg#OpenSansSemibold') format('svg'); + font-weight: 600; + font-style: normal; +} +/* END Semibold */ + +/* BEGIN Semibold Italic */ +@font-face { + font-family: 'Open Sans'; + src: url('@{OpenSansPath}/SemiboldItalic/OpenSans-SemiboldItalic.eot'); + src: url('@{OpenSansPath}/SemiboldItalic/OpenSans-SemiboldItalic.eot?#iefix') format('embedded-opentype'), + url('@{OpenSansPath}/SemiboldItalic/OpenSans-SemiboldItalic.woff') format('woff'), + url('@{OpenSansPath}/SemiboldItalic/OpenSans-SemiboldItalic.ttf') format('truetype'), + url('@{OpenSansPath}/SemiboldItalic/OpenSans-SemiboldItalic.svg#OpenSansSemiboldItalic') format('svg'); + font-weight: 600; + font-style: italic; +} +/* END Semibold Italic */ + +/* BEGIN Bold */ +@font-face { + font-family: 'Open Sans'; + src: url('@{OpenSansPath}/Bold/OpenSans-Bold.eot'); + src: url('@{OpenSansPath}/Bold/OpenSans-Bold.eot?#iefix') format('embedded-opentype'), + url('@{OpenSansPath}/Bold/OpenSans-Bold.woff') format('woff'), + url('@{OpenSansPath}/Bold/OpenSans-Bold.ttf') format('truetype'), + url('@{OpenSansPath}/Bold/OpenSans-Bold.svg#OpenSansBold') format('svg'); + font-weight: bold; + font-style: normal; +} +/* END Bold */ + +/* BEGIN Bold Italic */ +@font-face { + font-family: 'Open Sans'; + src: url('@{OpenSansPath}/BoldItalic/OpenSans-BoldItalic.eot'); + src: url('@{OpenSansPath}/BoldItalic/OpenSans-BoldItalic.eot?#iefix') format('embedded-opentype'), + url('@{OpenSansPath}/BoldItalic/OpenSans-BoldItalic.woff') format('woff'), + url('@{OpenSansPath}/BoldItalic/OpenSans-BoldItalic.ttf') format('truetype'), + url('@{OpenSansPath}/BoldItalic/OpenSans-BoldItalic.svg#OpenSansBoldItalic') format('svg'); + font-weight: bold; + font-style: italic; +} +/* END Bold Italic */ + +/* BEGIN Extrabold */ +@font-face { + font-family: 'Open Sans'; + src: url('@{OpenSansPath}/ExtraBold/OpenSans-ExtraBold.eot'); + src: url('@{OpenSansPath}/ExtraBold/OpenSans-ExtraBold.eot?#iefix') format('embedded-opentype'), + url('@{OpenSansPath}/ExtraBold/OpenSans-ExtraBold.woff') format('woff'), + url('@{OpenSansPath}/ExtraBold/OpenSans-ExtraBold.ttf') format('truetype'), + url('@{OpenSansPath}/ExtraBold/OpenSans-ExtraBold.svg#OpenSansExtrabold') format('svg'); + font-weight: 800; + font-style: normal; +} +/* END Extrabold */ + +/* BEGIN Extrabold Italic */ +@font-face { + font-family: 'Open Sans'; + src: url('@{OpenSansPath}/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot'); + src: url('@{OpenSansPath}/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot?#iefix') format('embedded-opentype'), + url('@{OpenSansPath}/ExtraBoldItalic/OpenSans-ExtraBoldItalic.woff') format('woff'), + url('@{OpenSansPath}/ExtraBoldItalic/OpenSans-ExtraBoldItalic.ttf') format('truetype'), + url('@{OpenSansPath}/ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg#OpenSansExtraboldItalic') format('svg'); + font-weight: 800; + font-style: italic; +} +/* END Extrabold Italic */ diff --git a/1.2.30/docs/components/open-sans-fontface-1.0.4/open-sans.scss b/1.2.30/docs/components/open-sans-fontface-1.0.4/open-sans.scss new file mode 100644 index 0000000000..a46063fbb3 --- /dev/null +++ b/1.2.30/docs/components/open-sans-fontface-1.0.4/open-sans.scss @@ -0,0 +1,133 @@ +/* Open Sans @font-face kit */ + +$OpenSansPath: "./fonts" !default; + +/* BEGIN Light */ +@font-face { + font-family: 'Open Sans'; + src: url('#{$OpenSansPath}/Light/OpenSans-Light.eot'); + src: url('#{$OpenSansPath}/Light/OpenSans-Light.eot?#iefix') format('embedded-opentype'), + url('#{$OpenSansPath}/Light/OpenSans-Light.woff') format('woff'), + url('#{$OpenSansPath}/Light/OpenSans-Light.ttf') format('truetype'), + url('#{$OpenSansPath}/Light/OpenSans-Light.svg#OpenSansLight') format('svg'); + font-weight: 300; + font-style: normal; +} +/* END Light */ + +/* BEGIN Light Italic */ +@font-face { + font-family: 'Open Sans'; + src: url('#{$OpenSansPath}/LightItalic/OpenSans-LightItalic.eot'); + src: url('#{$OpenSansPath}/LightItalic/OpenSans-LightItalic.eot?#iefix') format('embedded-opentype'), + url('#{$OpenSansPath}/LightItalic/OpenSans-LightItalic.woff') format('woff'), + url('#{$OpenSansPath}/LightItalic/OpenSans-LightItalic.ttf') format('truetype'), + url('#{$OpenSansPath}/LightItalic/OpenSans-LightItalic.svg#OpenSansLightItalic') format('svg'); + font-weight: 300; + font-style: italic; +} +/* END Light Italic */ + +/* BEGIN Regular */ +@font-face { + font-family: 'Open Sans'; + src: url('#{$OpenSansPath}/Regular/OpenSans-Regular.eot'); + src: url('#{$OpenSansPath}/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), + url('#{$OpenSansPath}/Regular/OpenSans-Regular.woff') format('woff'), + url('#{$OpenSansPath}/Regular/OpenSans-Regular.ttf') format('truetype'), + url('#{$OpenSansPath}/Regular/OpenSans-Regular.svg#OpenSansRegular') format('svg'); + font-weight: normal; + font-style: normal; +} +/* END Regular */ + +/* BEGIN Italic */ +@font-face { + font-family: 'Open Sans'; + src: url('#{$OpenSansPath}/Italic/OpenSans-Italic.eot'); + src: url('#{$OpenSansPath}/Italic/OpenSans-Italic.eot?#iefix') format('embedded-opentype'), + url('#{$OpenSansPath}/Italic/OpenSans-Italic.woff') format('woff'), + url('#{$OpenSansPath}/Italic/OpenSans-Italic.ttf') format('truetype'), + url('#{$OpenSansPath}/Italic/OpenSans-Italic.svg#OpenSansItalic') format('svg'); + font-weight: normal; + font-style: italic; +} +/* END Italic */ + +/* BEGIN Semibold */ +@font-face { + font-family: 'Open Sans'; + src: url('#{$OpenSansPath}/Semibold/OpenSans-Semibold.eot'); + src: url('#{$OpenSansPath}/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), + url('#{$OpenSansPath}/Semibold/OpenSans-Semibold.woff') format('woff'), + url('#{$OpenSansPath}/Semibold/OpenSans-Semibold.ttf') format('truetype'), + url('#{$OpenSansPath}/Semibold/OpenSans-Semibold.svg#OpenSansSemibold') format('svg'); + font-weight: 600; + font-style: normal; +} +/* END Semibold */ + +/* BEGIN Semibold Italic */ +@font-face { + font-family: 'Open Sans'; + src: url('#{$OpenSansPath}/SemiboldItalic/OpenSans-SemiboldItalic.eot'); + src: url('#{$OpenSansPath}/SemiboldItalic/OpenSans-SemiboldItalic.eot?#iefix') format('embedded-opentype'), + url('#{$OpenSansPath}/SemiboldItalic/OpenSans-SemiboldItalic.woff') format('woff'), + url('#{$OpenSansPath}/SemiboldItalic/OpenSans-SemiboldItalic.ttf') format('truetype'), + url('#{$OpenSansPath}/SemiboldItalic/OpenSans-SemiboldItalic.svg#OpenSansSemiboldItalic') format('svg'); + font-weight: 600; + font-style: italic; +} +/* END Semibold Italic */ + +/* BEGIN Bold */ +@font-face { + font-family: 'Open Sans'; + src: url('#{$OpenSansPath}/Bold/OpenSans-Bold.eot'); + src: url('#{$OpenSansPath}/Bold/OpenSans-Bold.eot?#iefix') format('embedded-opentype'), + url('#{$OpenSansPath}/Bold/OpenSans-Bold.woff') format('woff'), + url('#{$OpenSansPath}/Bold/OpenSans-Bold.ttf') format('truetype'), + url('#{$OpenSansPath}/Bold/OpenSans-Bold.svg#OpenSansBold') format('svg'); + font-weight: bold; + font-style: normal; +} +/* END Bold */ + +/* BEGIN Bold Italic */ +@font-face { + font-family: 'Open Sans'; + src: url('#{$OpenSansPath}/BoldItalic/OpenSans-BoldItalic.eot'); + src: url('#{$OpenSansPath}/BoldItalic/OpenSans-BoldItalic.eot?#iefix') format('embedded-opentype'), + url('#{$OpenSansPath}/BoldItalic/OpenSans-BoldItalic.woff') format('woff'), + url('#{$OpenSansPath}/BoldItalic/OpenSans-BoldItalic.ttf') format('truetype'), + url('#{$OpenSansPath}/BoldItalic/OpenSans-BoldItalic.svg#OpenSansBoldItalic') format('svg'); + font-weight: bold; + font-style: italic; +} +/* END Bold Italic */ + +/* BEGIN Extrabold */ +@font-face { + font-family: 'Open Sans'; + src: url('#{$OpenSansPath}/ExtraBold/OpenSans-ExtraBold.eot'); + src: url('#{$OpenSansPath}/ExtraBold/OpenSans-ExtraBold.eot?#iefix') format('embedded-opentype'), + url('#{$OpenSansPath}/ExtraBold/OpenSans-ExtraBold.woff') format('woff'), + url('#{$OpenSansPath}/ExtraBold/OpenSans-ExtraBold.ttf') format('truetype'), + url('#{$OpenSansPath}/ExtraBold/OpenSans-ExtraBold.svg#OpenSansExtrabold') format('svg'); + font-weight: 800; + font-style: normal; +} +/* END Extrabold */ + +/* BEGIN Extrabold Italic */ +@font-face { + font-family: 'Open Sans'; + src: url('#{$OpenSansPath}/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot'); + src: url('#{$OpenSansPath}/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot?#iefix') format('embedded-opentype'), + url('#{$OpenSansPath}/ExtraBoldItalic/OpenSans-ExtraBoldItalic.woff') format('woff'), + url('#{$OpenSansPath}/ExtraBoldItalic/OpenSans-ExtraBoldItalic.ttf') format('truetype'), + url('#{$OpenSansPath}/ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg#OpenSansExtraboldItalic') format('svg'); + font-weight: 800; + font-style: italic; +} +/* END Extrabold Italic */ diff --git a/1.2.30/docs/css/animations.css b/1.2.30/docs/css/animations.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/1.2.30/docs/css/doc_widgets.css b/1.2.30/docs/css/doc_widgets.css new file mode 100644 index 0000000000..587d5a7e3c --- /dev/null +++ b/1.2.30/docs/css/doc_widgets.css @@ -0,0 +1,150 @@ +ul.doc-example { + list-style-type: none; + position: relative; + font-size: 14px; +} + +ul.doc-example > li { + border: 2px solid gray; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + background-color: white; + margin-bottom: 20px; +} + +ul.doc-example > li.doc-example-heading { + border: none; + border-radius: 0; + margin-bottom: -10px; +} + +span.nojsfiddle { + float: right; + font-size: 14px; + margin-right:10px; + margin-top: 10px; +} + +form.jsfiddle { + position: absolute; + right: 0; + z-index: 1; + height: 14px; +} + +form.jsfiddle button { + cursor: pointer; + padding: 4px 10px; + margin: 10px; + background-color: #FFF; + font-weight: bold; + color: #7989D6; + border-color: #7989D6; + -moz-border-radius: 8px; + -webkit-border-radius:8px; + border-radius: 8px; +} + +form.jsfiddle textarea, form.jsfiddle input { + display: none; +} + +li.doc-example-live { + padding: 10px; + font-size: 1.2em; +} + +div.syntaxhighlighter { + padding-bottom: 1px !important; /* fix to remove unnecessary scrollbars http://is.gd/gSMgC */ +} + +/* TABS - tutorial environment navigation */ + +div.tabs-nav { + height: 25px; + position: relative; +} + +div.tabs-nav ul li { + list-style: none; + display: inline-block; + padding: 5px 10px; +} + +div.tabs-nav ul li.current a { + color: white; + text-decoration: none; +} + +div.tabs-nav ul li.current { + background: #7989D6; + -moz-box-shadow: 4px 4px 6px #48577D; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + box-shadow: 4px 4px 6px #48577D; + border-radius-topright: 8px; + border-radius-topleft: 8px; + -webkit-box-shadow: 4px 4px 6px #48577D; + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + border-top-right-radius: 8px; + border-top-left-radius: 8px; +} + +div.tabs-content { + padding: 4px; + position: relative; + background: #7989D6; + -moz-border-radius: 8px; + border-radius: 8px; + -webkit-border-radius: 8px; +} + +div.tabs-content-inner { + margin: 1px; + padding: 10px; + background: white; + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; +} + + +/* Tutorial Nav Bar */ + +#tutorial-nav { + margin: 0.5em 0 1em 0; + padding: 0; + list-style-type: none; + background: #7989D6; + + -moz-border-radius: 15px; + -webkit-border-radius: 15px; + border-radius: 15px; + + -moz-box-shadow: 4px 4px 6px #48577D; + -webkit-box-shadow: 4px 4px 6px #48577D; + box-shadow: 4px 4px 6px #48577D; +} + + +#tutorial-nav li { + display: inline; +} + + +#tutorial-nav a:link, #tutorial-nav a:visited { + font-size: 1.2em; + color: #FFF; + text-decoration: none; + text-align: center; + display: inline-block; + width: 11em; + padding: 0.2em 0; +} + + +#tutorial-nav a:hover { + color: #000; +} diff --git a/1.2.30/docs/css/docs.css b/1.2.30/docs/css/docs.css new file mode 100644 index 0000000000..72249876df --- /dev/null +++ b/1.2.30/docs/css/docs.css @@ -0,0 +1,692 @@ +html, body { + position:relative; + height:100%; +} + +#wrapper { + min-height:100%; + position:relative; + padding-bottom:120px; +} + +.footer { + border-top:20px solid white; + position:absolute; + bottom:0; + left:0; + right:0; + z-index:100; + padding-top: 2em; + background-color: #333; + color: white; + padding-bottom: 2em; +} + +.header-fixed { + position:fixed; + z-index:1000; + top:0; + left:0; + right:0; +} + +.header-branding { + min-height:41px!important; +} + +.docs-navbar-primary { + border-radius:0!important; + margin-bottom:0!important; +} + +/* Logo */ +/*.dropdown-menu { + display:none; +} +*/ +h1,h2,h3,h4,h5,h6 { + font-family: "Open Sans"; +} + +.subnav-body { + margin:70px 0 20px; +} + +.header .brand { + padding-top: 6px; + padding-bottom: 0px; +} + +.header .brand img { + margin-top:5px; + height: 30px; +} + +.docs-search { + margin:10px 0; + padding:4px 0 4px 20px; + background:white; + border-radius:20px; + vertical-align:middle; +} + +.docs-search > .search-query { + font-size:14px; + border:0; + width:80%; + color:#555; +} + +.docs-search > .search-icon { + font-size:15px; + margin-right:10px; +} + +.docs-search > .search-query:focus { + outline:0; +} + +/* end: Logo */ + + +.spacer { + height: 1em; +} + + +.icon-cog { + line-height: 13px; +} + +.naked-list, +.naked-list ul, +.naked-list li { + list-style:none; + margin:0; + padding:0; +} + +.nav-index-section a { + font-weight:bold; + font-family: "Open Sans"; + color:black!important; + margin-top:10px; + display:block; +} + +.nav-index-group { + margin-bottom:20px!important; +} + +.nav-index-group-heading { + color:#6F0101; + font-weight:bold; + font-size:1.2em; + padding:0; + margin:0; + border-bottom:1px soild #aaa; + margin-bottom:5px; +} + +.nav-breadcrumb { + margin:4px 0; + padding:0; +} + +.nav-breadcrumb-entry { + font-family: "Open Sans"; + padding:0; + margin:0; + font-size:18px; + display:inline-block; + vertical-align:middle; +} + +.nav-breadcrumb-entry > .divider { + color:#555; + display:inline-block; + padding-left:8px; +} + +.nav-breadcrumb-entry > span, +.nav-breadcrumb-entry > a { + color:#6F0101; +} + +.step-list > li:nth-child(1) { + padding-left:20px; +} + +.step-list > li:nth-child(2) { + padding-left:40px; +} + +.step-list > li:nth-child(3) { + padding-left:60px; +} + +.api-profile-header-heading { + margin:0; + padding:0; +} + +.api-profile-header-structure, +.api-profile-header-structure a { + font-family: "Open Sans"; + font-weight:bold; + color:#999; +} + +.api-profile-section { + margin-top:30px; + padding-top:30px; + border-top:1px solid #aaa; +} + +pre { + white-space: pre-wrap; + word-break: normal; +} + +.aside-nav a, +.aside-nav a:link, +.aside-nav a:visited, +.aside-nav a:active { + color:#999; +} +.aside-nav a:hover { + color:black; +} + +.api-profile-description > p:first-child { + margin:15px 0; + font-size:18px; +} + +p > code, +code.highlighted { + background:#f4f4f4; + border-radius:5px; + padding:2px 5px; + color:maroon; +} + +ul + p { + margin-top: 10px; +} + +.docs-version-jump { + min-width:100%; + max-width:100%; +} + +.picker { + position: relative; + width: auto; + display: inline-block; + margin: 0 0 2px 1.2%; + overflow: hidden; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -ms-border-radius: 4px; + -o-border-radius: 4px; + border-radius: 4px; + font-family: "Open Sans"; + font-weight: 600; + height: auto; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #f2f2f2)); + background-image: -webkit-linear-gradient(#ffffff, #f2f2f2); + background-image: -moz-linear-gradient(#ffffff, #f2f2f2); + background-image: -o-linear-gradient(#ffffff, #f2f2f2); + background-image: linear-gradient(#ffffff, #f2f2f2); +} + +.picker select { + position: relative; + display: block; + min-width: 100%; + width: 120%; + height: 34px; + padding: 6px 30px 6px 15px; + color: #555555; + border: none; + background: transparent; + outline: none; + -webkit-appearance: none; + z-index: 99; + cursor: pointer; + font-size: 16px; + -moz-appearance: none; + text-indent: 0.01px; + text-overflow: ''; +} + +.picker:after { + content:""; + position: absolute; + right: 8%; + top: 50%; + z-index: 0; + color: #999; + width: 0; + margin-top:-2px; + height: 0; + border-top: 6px solid; + border-right: 6px solid transparent; + border-left: 6px solid transparent; +} + +iframe.example { + width: 100%; + border: 1px solid black; +} + +.search-results-frame { + clear:both; + display:table; + width:100%; +} + +.search-results.ng-hide { + display:none; +} + +.search-results-container { + padding-bottom:1em; + border-top:1px solid #111; + background:#181818; + box-shadow:inset 0 0 10px #111; +} + +.search-results-container .search-results-group { + vertical-align:top; + padding:10px 10px; + display:inline-block; +} + +.search-results-group-heading { + font-family: "Open Sans"; + padding-left:10px; + color:white; +} + +.search-results-frame > .search-results-group:first-child > .search-results { + border-right:1px solid #050505; +} + +.search-results-group.col-group-api { width:30%; } +.search-results-group.col-group-guide, +.search-results-group.col-group-tutorial { width:20%; } +.search-results-group.col-group-misc, +.search-results-group.col-group-error { width:15%; float: right; } + + +.search-results-group.col-group-api .search-result { + width:48%; + display:inline-block; +} + +.search-close { + position: absolute; + bottom: 0; + left: 50%; + margin-left: -100px; + color: white; + text-align: center; + padding: 5px; + background: #333; + border-top-right-radius: 5px; + border-top-left-radius: 5px; + width: 200px; + box-shadow:0 0 10px #111; +} + +.variables-matrix { + border:1px solid #ddd; + width:100%; + margin:10px 0; +} + +.variables-matrix td, +.variables-matrix th { + padding:10px; +} + +.variables-matrix td { + border-top:1px solid #eee; +} + +.variables-matrix td + td, +.variables-matrix th + th { + border-left:1px solid #eee; +} + +.variables-matrix tr:nth-child(even) td { + background:#f5f5f5; +} + +.variables-matrix th { + background:#f1f1f1; +} + +.sup-header { + padding-top:10px; + padding-bottom:5px; + background:rgba(245,245,245,0.88); + box-shadow:0 0 2px #999; +} + +.main-body-grid { + margin-top:120px; + position:relative; +} + +.main-body-grid > .grid-left, +.main-body-grid > .grid-right { + padding:20px 0; +} + +.main-body-grid > .grid-left { + position:fixed; + top:120px; + bottom:0; + overflow:auto; +} + +.main-header-grid > .grid-left, +.main-body-grid > .grid-left { + width:260px; +} + +.main-header-grid > .grid-right, +.main-body-grid > .grid-right { + margin-left:270px; + position:relative; +} + +.main-header-grid > .grid-left { + float:left; +} + +.main-body-grid .side-navigation { + position:relative; + padding-bottom:120px; +} + +.main-body-grid .side-navigation.ng-hide { + display:block!important; +} + +.variables-matrix td { + vertical-align:top; + padding:5px; +} + +.type-hint { + display:inline-block; + background: gray; +} + +.variables-matrix .type-hint { + text-align:center; + min-width:60px; + margin:1px 5px; +} + +.type-hint + .type-hint { + margin-top:5px; +} + +.type-hint-expression { + background:purple; +} + +.type-hint-date { + background:pink; +} + +.type-hint-string { + background:#3a87ad; +} + +.type-hint-function { + background:green; +} + +.type-hint-object { + background:#999; +} + +.type-hint-array { + background:#F90;; +} + +.type-hint-boolean { + background:rgb(18, 131, 39); +} + +.type-hint-number { + background:rgb(189, 63, 66); +} + +.type-hint-regexp { + background: rgb(90, 84, 189); +} + +.type-hint-domelement { + background: rgb(95, 158, 160); +} + +.runnable-example-frame { + width:100%; + height:300px; + border: 1px solid #ddd; + border-radius:5px; +} + +.runnable-example-tabs { + margin-top:10px; + margin-bottom:20px; +} + +.tutorial-nav { + display:block; +} + +h1 + ul, h1 + ul > li, +h2 + ul, h2 + ul > li, +ul.tutorial-nav, ul.tutorial-nav > li, +.usage > ul, .usage > ul > li, +ul.methods, ul.methods > li, +ul.events, ul.events > li { + list-style:none; + padding:0; +} + +h2 { + border-top:1px solid #eee; + margin-top:30px; + padding-top:30px; +} + +h4 { + margin-top:20px; + padding-top:20px; +} + +.btn { + color:#428bca; + position: relative; + width: auto; + display: inline-block; + margin: 0 0 2px; + overflow: hidden; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -ms-border-radius: 4px; + -o-border-radius: 4px; + border-radius: 4px; + font-family: "Open Sans"; + font-weight: 600; + height: auto; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #f2f2f2)); + background-image: -webkit-linear-gradient(#ffffff, #f2f2f2); + background-image: -moz-linear-gradient(#ffffff, #f2f2f2); + background-image: -o-linear-gradient(#ffffff, #f2f2f2); + background-image: linear-gradient(#ffffff, #f2f2f2); +} + +.btn + .btn { + margin-left:10px; +} + +.btn:hover { + color:black!important; + border: 1px solid #ddd!important; + background:white!important; +} + +.view-source, .improve-docs { + position:relative; + z-index:100; +} + +.view-source { + margin-right:10px; +} + +.improve-docs { + float:right; +} + +.return-arguments, +.return-arguments th, +.return-arguments th + th, +.return-arguments td, +.return-arguments td + td { + border-radius:0; + border:0; +} + +.return-arguments td:first-child { + width:100px; +} + +ul.methods > li, +ul.events > li { + margin-bottom:40px; +} + +@media only screen and (min-width: 769px) and (max-width: 991px) { + .main-body-grid { + margin-top: 160px; + } + .main-body-grid > .grid-left { + top: 160px; + } +} + +@media only screen and (max-width : 768px) { + .picker, .picker select { + width:auto; + display:block; + margin-bottom:10px; + } + .docs-navbar-primary { + text-align:center; + } + .main-body-grid { + margin-top:0; + } + .main-header-grid > .grid-left, + .main-body-grid > .grid-left, + .main-header-grid > .grid-right, + .main-body-grid > .grid-right { + display:block; + float:none; + width:auto!important; + margin-left:0; + } + .main-body-grid > .grid-left, + .header-fixed, .footer { + position:static!important; + } + .main-body-grid > .grid-left { + background:#efefef; + margin-left:-1em; + margin-right:-1em; + padding:1em; + width:auto!important; + overflow:visible; + } + .main-header-grid > .grid-right, + .main-body-grid > .grid-right { + margin-left:0; + } + .main-body-grid .side-navigation { + display:block!important; + } + .main-body-grid .side-navigation.ng-hide { + display:none!important; + } + .nav-index-group .nav-index-listing { + display:inline-block; + padding:3px 0; + } + .nav-index-group .nav-index-listing:not(.nav-index-section):after { + padding-right:5px; + margin-left:-3px; + content:", "; + } + .nav-index-group .nav-index-listing:last-child:after { + content:""; + display:inline-block; + } + .nav-index-group .nav-index-section { + display:block; + } + .toc-toggle { + margin-bottom:20px; + } + .toc-close { + position: absolute; + bottom: -50px; + left: 50%; + margin-left: -50%; + text-align: center; + padding: 5px; + background: #eee; + border-radius: 5px; + width: 90%; + border:1px solid #ddd; + box-shadow:0 0 10px #bbb; + } + .navbar-brand { + float:none; + text-align:center; + } + .search-results-container { + padding-bottom:60px; + text-align:left; + } + .search-results-group { + float:none!important; + display:block!important; + width:auto!important; + border:0!important; + padding:0!important; + } + .search-results-group .search-result { + display:inline-block!important; + padding:0 5px; + width:auto!important; + } + .search-results-group .search-result:after { + content:", "; + } + #wrapper { + padding-bottom:0px; + } +} diff --git a/1.2.30/docs/css/prettify-theme.css b/1.2.30/docs/css/prettify-theme.css new file mode 100644 index 0000000000..7308e1ec71 --- /dev/null +++ b/1.2.30/docs/css/prettify-theme.css @@ -0,0 +1,142 @@ +/* GitHub Theme */ +.prettyprint { + background: white; + font-family: Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Consolas, monospace; + font-size: 12px; + line-height: 1.5; +} + +.lang-text * { + color: #333333!important; +} + +.pln { + color: #333333; +} + +@media screen { + .str { + color: #dd1144; + } + + .kwd { + color: #333333; + } + + .com { + color: #999988; + } + + .typ { + color: #445588; + } + + .lit { + color: #445588; + } + + .pun { + color: #333333; + } + + .opn { + color: #333333; + } + + .clo { + color: #333333; + } + + .tag { + color: navy; + } + + .atn { + color: teal; + } + + .atv { + color: #dd1144; + } + + .dec { + color: #333333; + } + + .var { + color: teal; + } + + .fun { + color: #990000; + } +} +@media print, projection { + .str { + color: #006600; + } + + .kwd { + color: #006; + font-weight: bold; + } + + .com { + color: #600; + font-style: italic; + } + + .typ { + color: #404; + font-weight: bold; + } + + .lit { + color: #004444; + } + + .pun, .opn, .clo { + color: #444400; + } + + .tag { + color: #006; + font-weight: bold; + } + + .atn { + color: #440044; + } + + .atv { + color: #006600; + } +} +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; +} + +/* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L4, +li.L5, +li.L6, +li.L7, +li.L8, +li.L9 { + /* */ +} + +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + /* */ +} diff --git a/1.2.30/docs/css/prettify.css b/1.2.30/docs/css/prettify.css new file mode 100644 index 0000000000..354bbd544f --- /dev/null +++ b/1.2.30/docs/css/prettify.css @@ -0,0 +1,51 @@ +.pln { color: #000 } /* plain text */ + +@media screen { + .str { color: #080 } /* string content */ + .kwd { color: #008 } /* a keyword */ + .com { color: #800 } /* a comment */ + .typ { color: #606 } /* a type name */ + .lit { color: #066 } /* a literal value */ + /* punctuation, lisp open bracket, lisp close bracket */ + .pun, .opn, .clo { color: #660 } + .tag { color: #008 } /* a markup tag name */ + .atn { color: #606 } /* a markup attribute name */ + .atv { color: #080 } /* a markup attribute value */ + .dec, .var { color: #606 } /* a declaration; a variable name */ + .fun { color: red } /* a function name */ +} + +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { color: #060 } + .kwd { color: #006; font-weight: bold } + .com { color: #600; font-style: italic } + .typ { color: #404; font-weight: bold } + .lit { color: #044 } + .pun, .opn, .clo { color: #440 } + .tag { color: #006; font-weight: bold } + .atn { color: #404 } + .atv { color: #060 } +} + +pre.prettyprint { + padding: 8px; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} +pre.prettyprint.linenums { + -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; +} +ol.linenums { + margin: 0 0 0 33px; /* IE indents via margin-left */ +} +ol.linenums li { + padding-left: 12px; + font-size:12px; + color: #bebec5; + line-height: 18px; + text-shadow: 0 1px 0 #fff; + list-style-type:decimal!important; +} diff --git a/1.2.30/docs/examples/example-$filter/index-debug.html b/1.2.30/docs/examples/example-$filter/index-debug.html new file mode 100644 index 0000000000..51bf6e5058 --- /dev/null +++ b/1.2.30/docs/examples/example-$filter/index-debug.html @@ -0,0 +1,20 @@ + + + + + Example - example-$filter-debug + + + + + + + + + +
+

{{ originalText }}

+

{{ filteredText }}

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-$filter/index-jquery.html b/1.2.30/docs/examples/example-$filter/index-jquery.html new file mode 100644 index 0000000000..ab55dc6a3e --- /dev/null +++ b/1.2.30/docs/examples/example-$filter/index-jquery.html @@ -0,0 +1,21 @@ + + + + + Example - example-$filter-jquery + + + + + + + + + + +
+

{{ originalText }}

+

{{ filteredText }}

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-$filter/index-production.html b/1.2.30/docs/examples/example-$filter/index-production.html new file mode 100644 index 0000000000..154148a3e1 --- /dev/null +++ b/1.2.30/docs/examples/example-$filter/index-production.html @@ -0,0 +1,20 @@ + + + + + Example - example-$filter-production + + + + + + + + + +
+

{{ originalText }}

+

{{ filteredText }}

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-$filter/index.html b/1.2.30/docs/examples/example-$filter/index.html new file mode 100644 index 0000000000..b4924a6f9c --- /dev/null +++ b/1.2.30/docs/examples/example-$filter/index.html @@ -0,0 +1,20 @@ + + + + + Example - example-$filter + + + + + + + + + +
+

{{ originalText }}

+

{{ filteredText }}

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-$filter/manifest.json b/1.2.30/docs/examples/example-$filter/manifest.json new file mode 100644 index 0000000000..0d2a67bb53 --- /dev/null +++ b/1.2.30/docs/examples/example-$filter/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-$filter", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-$filter/script.js b/1.2.30/docs/examples/example-$filter/script.js new file mode 100644 index 0000000000..1fa286a06b --- /dev/null +++ b/1.2.30/docs/examples/example-$filter/script.js @@ -0,0 +1,5 @@ + angular.module('filterExample', []) + .controller('MainCtrl', function($scope, $filter) { + $scope.originalText = 'hello'; + $scope.filteredText = $filter('uppercase')($scope.originalText); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-$route-service/book.html b/1.2.30/docs/examples/example-$route-service/book.html new file mode 100644 index 0000000000..94e4b4bf95 --- /dev/null +++ b/1.2.30/docs/examples/example-$route-service/book.html @@ -0,0 +1,2 @@ + controller: {{name}}
+ Book Id: {{params.bookId}}
\ No newline at end of file diff --git a/1.2.30/docs/examples/example-$route-service/chapter.html b/1.2.30/docs/examples/example-$route-service/chapter.html new file mode 100644 index 0000000000..43b15f580f --- /dev/null +++ b/1.2.30/docs/examples/example-$route-service/chapter.html @@ -0,0 +1,3 @@ + controller: {{name}}
+ Book Id: {{params.bookId}}
+ Chapter Id: {{params.chapterId}} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-$route-service/index-debug.html b/1.2.30/docs/examples/example-$route-service/index-debug.html new file mode 100644 index 0000000000..2c2b009094 --- /dev/null +++ b/1.2.30/docs/examples/example-$route-service/index-debug.html @@ -0,0 +1,37 @@ + + + + + Example - example-$route-service-debug + + + + + + + + + + +
+ Choose: + Moby | + Moby: Ch1 | + Gatsby | + Gatsby: Ch4 | + Scarlet Letter
+ +
+ +
+ +
$location.path() = {{$location.path()}}
+
$route.current.templateUrl = {{$route.current.templateUrl}}
+
$route.current.params = {{$route.current.params}}
+
$route.current.scope.name = {{$route.current.scope.name}}
+
$routeParams = {{$routeParams}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-$route-service/index-jquery.html b/1.2.30/docs/examples/example-$route-service/index-jquery.html new file mode 100644 index 0000000000..c88c9c586e --- /dev/null +++ b/1.2.30/docs/examples/example-$route-service/index-jquery.html @@ -0,0 +1,38 @@ + + + + + Example - example-$route-service-jquery + + + + + + + + + + + +
+ Choose: + Moby | + Moby: Ch1 | + Gatsby | + Gatsby: Ch4 | + Scarlet Letter
+ +
+ +
+ +
$location.path() = {{$location.path()}}
+
$route.current.templateUrl = {{$route.current.templateUrl}}
+
$route.current.params = {{$route.current.params}}
+
$route.current.scope.name = {{$route.current.scope.name}}
+
$routeParams = {{$routeParams}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-$route-service/index-production.html b/1.2.30/docs/examples/example-$route-service/index-production.html new file mode 100644 index 0000000000..88e613681b --- /dev/null +++ b/1.2.30/docs/examples/example-$route-service/index-production.html @@ -0,0 +1,37 @@ + + + + + Example - example-$route-service-production + + + + + + + + + + +
+ Choose: + Moby | + Moby: Ch1 | + Gatsby | + Gatsby: Ch4 | + Scarlet Letter
+ +
+ +
+ +
$location.path() = {{$location.path()}}
+
$route.current.templateUrl = {{$route.current.templateUrl}}
+
$route.current.params = {{$route.current.params}}
+
$route.current.scope.name = {{$route.current.scope.name}}
+
$routeParams = {{$routeParams}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-$route-service/index.html b/1.2.30/docs/examples/example-$route-service/index.html new file mode 100644 index 0000000000..fa84e3127e --- /dev/null +++ b/1.2.30/docs/examples/example-$route-service/index.html @@ -0,0 +1,37 @@ + + + + + Example - example-$route-service + + + + + + + + + + +
+ Choose: + Moby | + Moby: Ch1 | + Gatsby | + Gatsby: Ch4 | + Scarlet Letter
+ +
+ +
+ +
$location.path() = {{$location.path()}}
+
$route.current.templateUrl = {{$route.current.templateUrl}}
+
$route.current.params = {{$route.current.params}}
+
$route.current.scope.name = {{$route.current.scope.name}}
+
$routeParams = {{$routeParams}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-$route-service/manifest.json b/1.2.30/docs/examples/example-$route-service/manifest.json new file mode 100644 index 0000000000..0156fd11f9 --- /dev/null +++ b/1.2.30/docs/examples/example-$route-service/manifest.json @@ -0,0 +1,10 @@ +{ + "name": "example-$route-service", + "files": [ + "index-production.html", + "book.html", + "chapter.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-$route-service/protractor.js b/1.2.30/docs/examples/example-$route-service/protractor.js new file mode 100644 index 0000000000..a0512ced9a --- /dev/null +++ b/1.2.30/docs/examples/example-$route-service/protractor.js @@ -0,0 +1,13 @@ + it('should load and compile correct template', function() { + element(by.linkText('Moby: Ch1')).click(); + var content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: ChapterController/); + expect(content).toMatch(/Book Id\: Moby/); + expect(content).toMatch(/Chapter Id\: 1/); + + element(by.partialLinkText('Scarlet')).click(); + + content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: BookController/); + expect(content).toMatch(/Book Id\: Scarlet/); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-$route-service/script.js b/1.2.30/docs/examples/example-$route-service/script.js new file mode 100644 index 0000000000..0c77c4d097 --- /dev/null +++ b/1.2.30/docs/examples/example-$route-service/script.js @@ -0,0 +1,40 @@ + angular.module('ngRouteExample', ['ngRoute']) + + .controller('MainController', function($scope, $route, $routeParams, $location) { + $scope.$route = $route; + $scope.$location = $location; + $scope.$routeParams = $routeParams; + }) + + .controller('BookController', function($scope, $routeParams) { + $scope.name = "BookController"; + $scope.params = $routeParams; + }) + + .controller('ChapterController', function($scope, $routeParams) { + $scope.name = "ChapterController"; + $scope.params = $routeParams; + }) + + .config(function($routeProvider, $locationProvider) { + $routeProvider + .when('/Book/:bookId', { + templateUrl: 'book.html', + controller: 'BookController', + resolve: { + // I will cause a 1 second delay + delay: function($q, $timeout) { + var delay = $q.defer(); + $timeout(delay.resolve, 1000); + return delay.promise; + } + } + }) + .when('/Book/:bookId/ch/:chapterId', { + templateUrl: 'chapter.html', + controller: 'ChapterController' + }); + + // configure html5 to get links working on jsfiddle + $locationProvider.html5Mode(true); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-NgModelController/index-debug.html b/1.2.30/docs/examples/example-NgModelController/index-debug.html new file mode 100644 index 0000000000..c9a5be58dc --- /dev/null +++ b/1.2.30/docs/examples/example-NgModelController/index-debug.html @@ -0,0 +1,27 @@ + + + + + Example - example-NgModelController-debug + + + + + + + + + + + + +
Change me!
+ Required! +
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-NgModelController/index-jquery.html b/1.2.30/docs/examples/example-NgModelController/index-jquery.html new file mode 100644 index 0000000000..78a10c8899 --- /dev/null +++ b/1.2.30/docs/examples/example-NgModelController/index-jquery.html @@ -0,0 +1,28 @@ + + + + + Example - example-NgModelController-jquery + + + + + + + + + + + + + +
Change me!
+ Required! +
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-NgModelController/index-production.html b/1.2.30/docs/examples/example-NgModelController/index-production.html new file mode 100644 index 0000000000..54945e7d36 --- /dev/null +++ b/1.2.30/docs/examples/example-NgModelController/index-production.html @@ -0,0 +1,27 @@ + + + + + Example - example-NgModelController-production + + + + + + + + + + + + +
Change me!
+ Required! +
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-NgModelController/index.html b/1.2.30/docs/examples/example-NgModelController/index.html new file mode 100644 index 0000000000..e845b6374a --- /dev/null +++ b/1.2.30/docs/examples/example-NgModelController/index.html @@ -0,0 +1,27 @@ + + + + + Example - example-NgModelController + + + + + + + + + + + + +
Change me!
+ Required! +
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-NgModelController/manifest.json b/1.2.30/docs/examples/example-NgModelController/manifest.json new file mode 100644 index 0000000000..77bb9769d8 --- /dev/null +++ b/1.2.30/docs/examples/example-NgModelController/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-NgModelController", + "files": [ + "index-production.html", + "style.css", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-NgModelController/protractor.js b/1.2.30/docs/examples/example-NgModelController/protractor.js new file mode 100644 index 0000000000..a524f929cc --- /dev/null +++ b/1.2.30/docs/examples/example-NgModelController/protractor.js @@ -0,0 +1,16 @@ +it('should data-bind and become invalid', function() { + if (browser.params.browser == 'safari' || browser.params.browser == 'firefox') { + // SafariDriver can't handle contenteditable + // and Firefox driver can't clear contenteditables very well + return; + } + var contentEditable = element(by.css('[contenteditable]')); + var content = 'Change me!'; + + expect(contentEditable.getText()).toEqual(content); + + contentEditable.clear(); + contentEditable.sendKeys(protractor.Key.BACK_SPACE); + expect(contentEditable.getText()).toEqual(''); + expect(contentEditable.getAttribute('class')).toMatch(/ng-invalid-required/); +}); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-NgModelController/script.js b/1.2.30/docs/examples/example-NgModelController/script.js new file mode 100644 index 0000000000..f05cc6bc0c --- /dev/null +++ b/1.2.30/docs/examples/example-NgModelController/script.js @@ -0,0 +1,32 @@ + angular.module('customControl', ['ngSanitize']). + directive('contenteditable', ['$sce', function($sce) { + return { + restrict: 'A', // only activate on element attribute + require: '?ngModel', // get a hold of NgModelController + link: function(scope, element, attrs, ngModel) { + if(!ngModel) return; // do nothing if no ng-model + + // Specify how UI should be updated + ngModel.$render = function() { + element.html($sce.getTrustedHtml(ngModel.$viewValue || '')); + }; + + // Listen for change events to enable binding + element.on('blur keyup change', function() { + scope.$evalAsync(read); + }); + read(); // initialize + + // Write data to the model + function read() { + var html = element.html(); + // When we clear the content editable the browser leaves a
behind + // If strip-br attribute is provided then we strip this out + if( attrs.stripBr && html == '
' ) { + html = ''; + } + ngModel.$setViewValue(html); + } + } + }; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-NgModelController/style.css b/1.2.30/docs/examples/example-NgModelController/style.css new file mode 100644 index 0000000000..e9a4a054d1 --- /dev/null +++ b/1.2.30/docs/examples/example-NgModelController/style.css @@ -0,0 +1,9 @@ + [contenteditable] { + border: 1px solid black; + background-color: white; + min-height: 20px; + } + + .ng-invalid { + border: 1px solid red; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-checkbox-input-directive/index-debug.html b/1.2.30/docs/examples/example-checkbox-input-directive/index-debug.html new file mode 100644 index 0000000000..ad6619f878 --- /dev/null +++ b/1.2.30/docs/examples/example-checkbox-input-directive/index-debug.html @@ -0,0 +1,29 @@ + + + + + Example - example-checkbox-input-directive-debug + + + + + + + + + + + Value1:
+ Value2:
+ value1 = {{value1}}
+ value2 = {{value2}}
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-checkbox-input-directive/index-jquery.html b/1.2.30/docs/examples/example-checkbox-input-directive/index-jquery.html new file mode 100644 index 0000000000..c79a11ba2f --- /dev/null +++ b/1.2.30/docs/examples/example-checkbox-input-directive/index-jquery.html @@ -0,0 +1,30 @@ + + + + + Example - example-checkbox-input-directive-jquery + + + + + + + + + + + + Value1:
+ Value2:
+ value1 = {{value1}}
+ value2 = {{value2}}
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-checkbox-input-directive/index-production.html b/1.2.30/docs/examples/example-checkbox-input-directive/index-production.html new file mode 100644 index 0000000000..99ae2fef18 --- /dev/null +++ b/1.2.30/docs/examples/example-checkbox-input-directive/index-production.html @@ -0,0 +1,29 @@ + + + + + Example - example-checkbox-input-directive-production + + + + + + + + + + + Value1:
+ Value2:
+ value1 = {{value1}}
+ value2 = {{value2}}
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-checkbox-input-directive/index.html b/1.2.30/docs/examples/example-checkbox-input-directive/index.html new file mode 100644 index 0000000000..5ee58cf0b1 --- /dev/null +++ b/1.2.30/docs/examples/example-checkbox-input-directive/index.html @@ -0,0 +1,29 @@ + + + + + Example - example-checkbox-input-directive + + + + + + + + + + + Value1:
+ Value2:
+ value1 = {{value1}}
+ value2 = {{value2}}
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-checkbox-input-directive/manifest.json b/1.2.30/docs/examples/example-checkbox-input-directive/manifest.json new file mode 100644 index 0000000000..7c0bf82470 --- /dev/null +++ b/1.2.30/docs/examples/example-checkbox-input-directive/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-checkbox-input-directive", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-checkbox-input-directive/protractor.js b/1.2.30/docs/examples/example-checkbox-input-directive/protractor.js new file mode 100644 index 0000000000..6de643e7f4 --- /dev/null +++ b/1.2.30/docs/examples/example-checkbox-input-directive/protractor.js @@ -0,0 +1,13 @@ + it('should change state', function() { + var value1 = element(by.binding('value1')); + var value2 = element(by.binding('value2')); + + expect(value1.getText()).toContain('true'); + expect(value2.getText()).toContain('YES'); + + element(by.model('value1')).click(); + element(by.model('value2')).click(); + + expect(value1.getText()).toContain('false'); + expect(value2.getText()).toContain('NO'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-email-input-directive/index-debug.html b/1.2.30/docs/examples/example-email-input-directive/index-debug.html new file mode 100644 index 0000000000..f17b88fefe --- /dev/null +++ b/1.2.30/docs/examples/example-email-input-directive/index-debug.html @@ -0,0 +1,34 @@ + + + + + Example - example-email-input-directive-debug + + + + + + + + + + + Email: + + Required! + + Not valid email! + text = {{text}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+ myForm.$error.email = {{!!myForm.$error.email}}
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-email-input-directive/index-jquery.html b/1.2.30/docs/examples/example-email-input-directive/index-jquery.html new file mode 100644 index 0000000000..6f5c6abb42 --- /dev/null +++ b/1.2.30/docs/examples/example-email-input-directive/index-jquery.html @@ -0,0 +1,35 @@ + + + + + Example - example-email-input-directive-jquery + + + + + + + + + + + + Email: + + Required! + + Not valid email! + text = {{text}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+ myForm.$error.email = {{!!myForm.$error.email}}
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-email-input-directive/index-production.html b/1.2.30/docs/examples/example-email-input-directive/index-production.html new file mode 100644 index 0000000000..440d7df2d7 --- /dev/null +++ b/1.2.30/docs/examples/example-email-input-directive/index-production.html @@ -0,0 +1,34 @@ + + + + + Example - example-email-input-directive-production + + + + + + + + + + + Email: + + Required! + + Not valid email! + text = {{text}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+ myForm.$error.email = {{!!myForm.$error.email}}
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-email-input-directive/index.html b/1.2.30/docs/examples/example-email-input-directive/index.html new file mode 100644 index 0000000000..ee64291fa3 --- /dev/null +++ b/1.2.30/docs/examples/example-email-input-directive/index.html @@ -0,0 +1,34 @@ + + + + + Example - example-email-input-directive + + + + + + + + + + + Email: + + Required! + + Not valid email! + text = {{text}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+ myForm.$error.email = {{!!myForm.$error.email}}
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-email-input-directive/manifest.json b/1.2.30/docs/examples/example-email-input-directive/manifest.json new file mode 100644 index 0000000000..a7348f2b92 --- /dev/null +++ b/1.2.30/docs/examples/example-email-input-directive/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-email-input-directive", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-email-input-directive/protractor.js b/1.2.30/docs/examples/example-email-input-directive/protractor.js new file mode 100644 index 0000000000..0d7c9a164b --- /dev/null +++ b/1.2.30/docs/examples/example-email-input-directive/protractor.js @@ -0,0 +1,22 @@ + var text = element(by.binding('text')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('text')); + + it('should initialize to model', function() { + expect(text.getText()).toContain('me@example.com'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + expect(text.getText()).toEqual('text ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if not email', function() { + input.clear(); + input.sendKeys('xxx'); + + expect(valid.getText()).toContain('false'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-error-$rootScope-inprog/app.js b/1.2.30/docs/examples/example-error-$rootScope-inprog/app.js new file mode 100644 index 0000000000..3cc1ce0486 --- /dev/null +++ b/1.2.30/docs/examples/example-error-$rootScope-inprog/app.js @@ -0,0 +1,7 @@ + angular.module('app', []).directive('setFocusIf', function() { + return function link($scope, $element, $attr) { + $scope.$watch($attr.setFocusIf, function(value) { + if ( value ) { $element[0].focus(); } + }); + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-error-$rootScope-inprog/index-debug.html b/1.2.30/docs/examples/example-error-$rootScope-inprog/index-debug.html new file mode 100644 index 0000000000..5fad25046d --- /dev/null +++ b/1.2.30/docs/examples/example-error-$rootScope-inprog/index-debug.html @@ -0,0 +1,18 @@ + + + + + Example - example-error-$rootScope-inprog-debug + + + + + + + + + + + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-error-$rootScope-inprog/index-jquery.html b/1.2.30/docs/examples/example-error-$rootScope-inprog/index-jquery.html new file mode 100644 index 0000000000..a027b1fd44 --- /dev/null +++ b/1.2.30/docs/examples/example-error-$rootScope-inprog/index-jquery.html @@ -0,0 +1,19 @@ + + + + + Example - example-error-$rootScope-inprog-jquery + + + + + + + + + + + + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-error-$rootScope-inprog/index-production.html b/1.2.30/docs/examples/example-error-$rootScope-inprog/index-production.html new file mode 100644 index 0000000000..dbd2db6b3f --- /dev/null +++ b/1.2.30/docs/examples/example-error-$rootScope-inprog/index-production.html @@ -0,0 +1,18 @@ + + + + + Example - example-error-$rootScope-inprog-production + + + + + + + + + + + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-error-$rootScope-inprog/index.html b/1.2.30/docs/examples/example-error-$rootScope-inprog/index.html new file mode 100644 index 0000000000..a2060aecdb --- /dev/null +++ b/1.2.30/docs/examples/example-error-$rootScope-inprog/index.html @@ -0,0 +1,18 @@ + + + + + Example - example-error-$rootScope-inprog + + + + + + + + + + + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-error-$rootScope-inprog/manifest.json b/1.2.30/docs/examples/example-error-$rootScope-inprog/manifest.json new file mode 100644 index 0000000000..1c988f9fab --- /dev/null +++ b/1.2.30/docs/examples/example-error-$rootScope-inprog/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-error-$rootScope-inprog", + "files": [ + "index-production.html", + "app.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example/index-debug.html b/1.2.30/docs/examples/example-example/index-debug.html new file mode 100644 index 0000000000..f54761f27c --- /dev/null +++ b/1.2.30/docs/examples/example-example/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example-debug + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example/index-jquery.html b/1.2.30/docs/examples/example-example/index-jquery.html new file mode 100644 index 0000000000..cdc8e96cc4 --- /dev/null +++ b/1.2.30/docs/examples/example-example/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example-jquery + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example/index-production.html b/1.2.30/docs/examples/example-example/index-production.html new file mode 100644 index 0000000000..f6cd41bca3 --- /dev/null +++ b/1.2.30/docs/examples/example-example/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example-production + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example/index.html b/1.2.30/docs/examples/example-example/index.html new file mode 100644 index 0000000000..8bd4a4a8db --- /dev/null +++ b/1.2.30/docs/examples/example-example/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example/manifest.json b/1.2.30/docs/examples/example-example/manifest.json new file mode 100644 index 0000000000..48a327d5d0 --- /dev/null +++ b/1.2.30/docs/examples/example-example/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example/script.js b/1.2.30/docs/examples/example-example/script.js new file mode 100644 index 0000000000..d2ac453787 --- /dev/null +++ b/1.2.30/docs/examples/example-example/script.js @@ -0,0 +1,11 @@ +angular.module('locationExample', []) + .controller('LocationController', ['$scope', '$location', function ($scope, $location) { + $scope.$watch('locationPath', function(path) { + $location.path(path); + }); + $scope.$watch(function() { + return $location.path(); + }, function(path) { + $scope.locationPath = path; + }); + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example1/animations.css b/1.2.30/docs/examples/example-example1/animations.css new file mode 100644 index 0000000000..25e395b423 --- /dev/null +++ b/1.2.30/docs/examples/example-example1/animations.css @@ -0,0 +1,23 @@ + .sample-show-hide { + padding:10px; + border:1px solid black; + background:white; + } + + .sample-show-hide.ng-hide-add, .sample-show-hide.ng-hide-remove { + -webkit-transition:all linear 0.5s; + -moz-transition:all linear 0.5s; + -o-transition:all linear 0.5s; + transition:all linear 0.5s; + display:block!important; + } + + .sample-show-hide.ng-hide-add.ng-hide-add-active, + .sample-show-hide.ng-hide-remove { + opacity:0; + } + + .sample-show-hide.ng-hide-add, + .sample-show-hide.ng-hide-remove.ng-hide-remove-active { + opacity:1; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example1/index-debug.html b/1.2.30/docs/examples/example-example1/index-debug.html new file mode 100644 index 0000000000..8437621134 --- /dev/null +++ b/1.2.30/docs/examples/example-example1/index-debug.html @@ -0,0 +1,25 @@ + + + + + Example - example-example1-debug + + + + + + + + + + +
+ +
+ Visible... +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example1/index-jquery.html b/1.2.30/docs/examples/example-example1/index-jquery.html new file mode 100644 index 0000000000..dee3bf20db --- /dev/null +++ b/1.2.30/docs/examples/example-example1/index-jquery.html @@ -0,0 +1,26 @@ + + + + + Example - example-example1-jquery + + + + + + + + + + + +
+ +
+ Visible... +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example1/index-production.html b/1.2.30/docs/examples/example-example1/index-production.html new file mode 100644 index 0000000000..023c9f322d --- /dev/null +++ b/1.2.30/docs/examples/example-example1/index-production.html @@ -0,0 +1,25 @@ + + + + + Example - example-example1-production + + + + + + + + + + +
+ +
+ Visible... +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example1/index.html b/1.2.30/docs/examples/example-example1/index.html new file mode 100644 index 0000000000..6f90e9cbf6 --- /dev/null +++ b/1.2.30/docs/examples/example-example1/index.html @@ -0,0 +1,25 @@ + + + + + Example - example-example1 + + + + + + + + + + +
+ +
+ Visible... +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example1/manifest.json b/1.2.30/docs/examples/example-example1/manifest.json new file mode 100644 index 0000000000..8b49c72820 --- /dev/null +++ b/1.2.30/docs/examples/example-example1/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example1", + "files": [ + "index-production.html", + "animations.css" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example10/index-debug.html b/1.2.30/docs/examples/example-example10/index-debug.html new file mode 100644 index 0000000000..23115dfae8 --- /dev/null +++ b/1.2.30/docs/examples/example-example10/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example10-debug + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example10/index-jquery.html b/1.2.30/docs/examples/example-example10/index-jquery.html new file mode 100644 index 0000000000..e735cc5ff0 --- /dev/null +++ b/1.2.30/docs/examples/example-example10/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example10-jquery + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example10/index-production.html b/1.2.30/docs/examples/example-example10/index-production.html new file mode 100644 index 0000000000..6572887ca9 --- /dev/null +++ b/1.2.30/docs/examples/example-example10/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example10-production + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example10/index.html b/1.2.30/docs/examples/example-example10/index.html new file mode 100644 index 0000000000..eec1c75c92 --- /dev/null +++ b/1.2.30/docs/examples/example-example10/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example10 + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example10/manifest.json b/1.2.30/docs/examples/example-example10/manifest.json new file mode 100644 index 0000000000..ea0907e9d9 --- /dev/null +++ b/1.2.30/docs/examples/example-example10/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example10", + "files": [ + "index-production.html", + "script.js", + "my-customer.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example10/my-customer.html b/1.2.30/docs/examples/example-example10/my-customer.html new file mode 100644 index 0000000000..82930dca78 --- /dev/null +++ b/1.2.30/docs/examples/example-example10/my-customer.html @@ -0,0 +1 @@ + Name: {{customer.name}} Address: {{customer.address}} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example10/script.js b/1.2.30/docs/examples/example-example10/script.js new file mode 100644 index 0000000000..255a1d2fea --- /dev/null +++ b/1.2.30/docs/examples/example-example10/script.js @@ -0,0 +1,13 @@ + angular.module('docsRestrictDirective', []) + .controller('Controller', ['$scope', function($scope) { + $scope.customer = { + name: 'Naomi', + address: '1600 Amphitheatre' + }; + }]) + .directive('myCustomer', function() { + return { + restrict: 'E', + templateUrl: 'my-customer.html' + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example100/index-debug.html b/1.2.30/docs/examples/example-example100/index-debug.html new file mode 100644 index 0000000000..2d77d77907 --- /dev/null +++ b/1.2.30/docs/examples/example-example100/index-debug.html @@ -0,0 +1,31 @@ + + + + + Example - example-example100-debug + + + + + + + + + + +
+

+ User comments
+ By default, HTML that isn't explicitly trusted (e.g. Alice's comment) is sanitized when + $sanitize is available. If $sanitize isn't available, this results in an error instead of an + exploit. +
+
+ {{userComment.name}}: + +
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example100/index-jquery.html b/1.2.30/docs/examples/example-example100/index-jquery.html new file mode 100644 index 0000000000..abb0886a47 --- /dev/null +++ b/1.2.30/docs/examples/example-example100/index-jquery.html @@ -0,0 +1,32 @@ + + + + + Example - example-example100-jquery + + + + + + + + + + + +
+

+ User comments
+ By default, HTML that isn't explicitly trusted (e.g. Alice's comment) is sanitized when + $sanitize is available. If $sanitize isn't available, this results in an error instead of an + exploit. +
+
+ {{userComment.name}}: + +
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example100/index-production.html b/1.2.30/docs/examples/example-example100/index-production.html new file mode 100644 index 0000000000..b09489169c --- /dev/null +++ b/1.2.30/docs/examples/example-example100/index-production.html @@ -0,0 +1,31 @@ + + + + + Example - example-example100-production + + + + + + + + + + +
+

+ User comments
+ By default, HTML that isn't explicitly trusted (e.g. Alice's comment) is sanitized when + $sanitize is available. If $sanitize isn't available, this results in an error instead of an + exploit. +
+
+ {{userComment.name}}: + +
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example100/index.html b/1.2.30/docs/examples/example-example100/index.html new file mode 100644 index 0000000000..7e8e830337 --- /dev/null +++ b/1.2.30/docs/examples/example-example100/index.html @@ -0,0 +1,31 @@ + + + + + Example - example-example100 + + + + + + + + + + +
+

+ User comments
+ By default, HTML that isn't explicitly trusted (e.g. Alice's comment) is sanitized when + $sanitize is available. If $sanitize isn't available, this results in an error instead of an + exploit. +
+
+ {{userComment.name}}: + +
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example100/manifest.json b/1.2.30/docs/examples/example-example100/manifest.json new file mode 100644 index 0000000000..37745f121d --- /dev/null +++ b/1.2.30/docs/examples/example-example100/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-example100", + "files": [ + "index-production.html", + "script.js", + "test_data.json", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example100/protractor.js b/1.2.30/docs/examples/example-example100/protractor.js new file mode 100644 index 0000000000..2fea13e447 --- /dev/null +++ b/1.2.30/docs/examples/example-example100/protractor.js @@ -0,0 +1,12 @@ +describe('SCE doc demo', function() { + it('should sanitize untrusted values', function() { + expect(element.all(by.css('.htmlComment')).first().getInnerHtml()) + .toBe('Is anyone reading this?'); + }); + + it('should NOT sanitize explicitly trusted values', function() { + expect(element(by.id('explicitlyTrustedHtml')).getInnerHtml()).toBe( + 'Hover over this text.'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example100/script.js b/1.2.30/docs/examples/example-example100/script.js new file mode 100644 index 0000000000..2d1a220ae9 --- /dev/null +++ b/1.2.30/docs/examples/example-example100/script.js @@ -0,0 +1,11 @@ +var mySceApp = angular.module('mySceApp', ['ngSanitize']); + +mySceApp.controller("myAppController", function myAppController($http, $templateCache, $sce) { + var self = this; + $http.get("test_data.json", {cache: $templateCache}).success(function(userComments) { + self.userComments = userComments; + }); + self.explicitlyTrustedHtml = $sce.trustAsHtml( + 'Hover over this text.'); +}); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example100/test_data.json b/1.2.30/docs/examples/example-example100/test_data.json new file mode 100644 index 0000000000..e086b707e3 --- /dev/null +++ b/1.2.30/docs/examples/example-example100/test_data.json @@ -0,0 +1,9 @@ +[ + { "name": "Alice", + "htmlComment": + "Is anyone reading this?" + }, + { "name": "Bob", + "htmlComment": "Yes! Am I the only other one?" + } +] \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example101/index-debug.html b/1.2.30/docs/examples/example-example101/index-debug.html new file mode 100644 index 0000000000..d890c23eec --- /dev/null +++ b/1.2.30/docs/examples/example-example101/index-debug.html @@ -0,0 +1,28 @@ + + + + + Example - example-example101-debug + + + + + + + + + +
+ + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example101/index-jquery.html b/1.2.30/docs/examples/example-example101/index-jquery.html new file mode 100644 index 0000000000..970b56c6c3 --- /dev/null +++ b/1.2.30/docs/examples/example-example101/index-jquery.html @@ -0,0 +1,29 @@ + + + + + Example - example-example101-jquery + + + + + + + + + + +
+ + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example101/index-production.html b/1.2.30/docs/examples/example-example101/index-production.html new file mode 100644 index 0000000000..58e6c5806c --- /dev/null +++ b/1.2.30/docs/examples/example-example101/index-production.html @@ -0,0 +1,28 @@ + + + + + Example - example-example101-production + + + + + + + + + +
+ + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example101/index.html b/1.2.30/docs/examples/example-example101/index.html new file mode 100644 index 0000000000..493add85b9 --- /dev/null +++ b/1.2.30/docs/examples/example-example101/index.html @@ -0,0 +1,28 @@ + + + + + Example - example-example101 + + + + + + + + + +
+ + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example101/manifest.json b/1.2.30/docs/examples/example-example101/manifest.json new file mode 100644 index 0000000000..3b379009d7 --- /dev/null +++ b/1.2.30/docs/examples/example-example101/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example101", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example101/protractor.js b/1.2.30/docs/examples/example-example101/protractor.js new file mode 100644 index 0000000000..112232d7cf --- /dev/null +++ b/1.2.30/docs/examples/example-example101/protractor.js @@ -0,0 +1,5 @@ + it('should display the greeting in the input box', function() { + element(by.model('greeting')).sendKeys('Hello, E2E Tests'); + // If we click the button it will block the test runner + // element(':button').click(); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example102/index-debug.html b/1.2.30/docs/examples/example-example102/index-debug.html new file mode 100644 index 0000000000..a51188cfe8 --- /dev/null +++ b/1.2.30/docs/examples/example-example102/index-debug.html @@ -0,0 +1,60 @@ + + + + + Example - example-example102-debug + + + + + + + + + + +
+ Snippet: +
+ + + + + + + + + + + + + + + + + + + + +
FilterSourceRendered
linky filter +
<div ng-bind-html="snippet | linky">
</div>
+
+
+
linky target +
<div ng-bind-html="snippetWithTarget | linky:'_blank'">
</div>
+
+
+
no filter
<div ng-bind="snippet">
</div>
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example102/index-jquery.html b/1.2.30/docs/examples/example-example102/index-jquery.html new file mode 100644 index 0000000000..e968644756 --- /dev/null +++ b/1.2.30/docs/examples/example-example102/index-jquery.html @@ -0,0 +1,61 @@ + + + + + Example - example-example102-jquery + + + + + + + + + + + +
+ Snippet: + + + + + + + + + + + + + + + + + + + + + +
FilterSourceRendered
linky filter +
<div ng-bind-html="snippet | linky">
</div>
+
+
+
linky target +
<div ng-bind-html="snippetWithTarget | linky:'_blank'">
</div>
+
+
+
no filter
<div ng-bind="snippet">
</div>
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example102/index-production.html b/1.2.30/docs/examples/example-example102/index-production.html new file mode 100644 index 0000000000..41d3647c0f --- /dev/null +++ b/1.2.30/docs/examples/example-example102/index-production.html @@ -0,0 +1,60 @@ + + + + + Example - example-example102-production + + + + + + + + + + +
+ Snippet: + + + + + + + + + + + + + + + + + + + + + +
FilterSourceRendered
linky filter +
<div ng-bind-html="snippet | linky">
</div>
+
+
+
linky target +
<div ng-bind-html="snippetWithTarget | linky:'_blank'">
</div>
+
+
+
no filter
<div ng-bind="snippet">
</div>
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example102/index.html b/1.2.30/docs/examples/example-example102/index.html new file mode 100644 index 0000000000..7959980684 --- /dev/null +++ b/1.2.30/docs/examples/example-example102/index.html @@ -0,0 +1,60 @@ + + + + + Example - example-example102 + + + + + + + + + + +
+ Snippet: + + + + + + + + + + + + + + + + + + + + + +
FilterSourceRendered
linky filter +
<div ng-bind-html="snippet | linky">
</div>
+
+
+
linky target +
<div ng-bind-html="snippetWithTarget | linky:'_blank'">
</div>
+
+
+
no filter
<div ng-bind="snippet">
</div>
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example102/manifest.json b/1.2.30/docs/examples/example-example102/manifest.json new file mode 100644 index 0000000000..cfc1705a77 --- /dev/null +++ b/1.2.30/docs/examples/example-example102/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example102", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example102/protractor.js b/1.2.30/docs/examples/example-example102/protractor.js new file mode 100644 index 0000000000..c6e5a68926 --- /dev/null +++ b/1.2.30/docs/examples/example-example102/protractor.js @@ -0,0 +1,30 @@ + it('should linkify the snippet with urls', function() { + expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()). + toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' + + 'another@somewhere.org, and one more: ftp://127.0.0.1/.'); + expect(element.all(by.css('#linky-filter a')).count()).toEqual(4); + }); + + it('should not linkify snippet without the linky filter', function() { + expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()). + toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' + + 'another@somewhere.org, and one more: ftp://127.0.0.1/.'); + expect(element.all(by.css('#escaped-html a')).count()).toEqual(0); + }); + + it('should update', function() { + element(by.model('snippet')).clear(); + element(by.model('snippet')).sendKeys('new http://link.'); + expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()). + toBe('new http://link.'); + expect(element.all(by.css('#linky-filter a')).count()).toEqual(1); + expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()) + .toBe('new http://link.'); + }); + + it('should work with the target property', function() { + expect(element(by.id('linky-target')). + element(by.binding("snippetWithTarget | linky:'_blank'")).getText()). + toBe('http://angularjs.org/'); + expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example103/index-debug.html b/1.2.30/docs/examples/example-example103/index-debug.html new file mode 100644 index 0000000000..9995f22386 --- /dev/null +++ b/1.2.30/docs/examples/example-example103/index-debug.html @@ -0,0 +1,60 @@ + + + + + Example - example-example103-debug + + + + + + + + + + +
+ Snippet: + + + + + + + + + + + + + + + + + + + + + + + + + +
DirectiveHowSourceRendered
ng-bind-htmlAutomatically uses $sanitize
<div ng-bind-html="snippet">
</div>
ng-bind-htmlBypass $sanitize by explicitly trusting the dangerous value +
<div ng-bind-html="deliberatelyTrustDangerousSnippet()">
+</div>
+
ng-bindAutomatically escapes
<div ng-bind="snippet">
</div>
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example103/index-jquery.html b/1.2.30/docs/examples/example-example103/index-jquery.html new file mode 100644 index 0000000000..5eabd1bf6e --- /dev/null +++ b/1.2.30/docs/examples/example-example103/index-jquery.html @@ -0,0 +1,61 @@ + + + + + Example - example-example103-jquery + + + + + + + + + + + +
+ Snippet: + + + + + + + + + + + + + + + + + + + + + + + + + +
DirectiveHowSourceRendered
ng-bind-htmlAutomatically uses $sanitize
<div ng-bind-html="snippet">
</div>
ng-bind-htmlBypass $sanitize by explicitly trusting the dangerous value +
<div ng-bind-html="deliberatelyTrustDangerousSnippet()">
+</div>
+
ng-bindAutomatically escapes
<div ng-bind="snippet">
</div>
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example103/index-production.html b/1.2.30/docs/examples/example-example103/index-production.html new file mode 100644 index 0000000000..0e8536c069 --- /dev/null +++ b/1.2.30/docs/examples/example-example103/index-production.html @@ -0,0 +1,60 @@ + + + + + Example - example-example103-production + + + + + + + + + + +
+ Snippet: + + + + + + + + + + + + + + + + + + + + + + + + + +
DirectiveHowSourceRendered
ng-bind-htmlAutomatically uses $sanitize
<div ng-bind-html="snippet">
</div>
ng-bind-htmlBypass $sanitize by explicitly trusting the dangerous value +
<div ng-bind-html="deliberatelyTrustDangerousSnippet()">
+</div>
+
ng-bindAutomatically escapes
<div ng-bind="snippet">
</div>
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example103/index.html b/1.2.30/docs/examples/example-example103/index.html new file mode 100644 index 0000000000..e6b45ddd68 --- /dev/null +++ b/1.2.30/docs/examples/example-example103/index.html @@ -0,0 +1,60 @@ + + + + + Example - example-example103 + + + + + + + + + + +
+ Snippet: + + + + + + + + + + + + + + + + + + + + + + + + + +
DirectiveHowSourceRendered
ng-bind-htmlAutomatically uses $sanitize
<div ng-bind-html="snippet">
</div>
ng-bind-htmlBypass $sanitize by explicitly trusting the dangerous value +
<div ng-bind-html="deliberatelyTrustDangerousSnippet()">
+</div>
+
ng-bindAutomatically escapes
<div ng-bind="snippet">
</div>
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example103/manifest.json b/1.2.30/docs/examples/example-example103/manifest.json new file mode 100644 index 0000000000..581fca581a --- /dev/null +++ b/1.2.30/docs/examples/example-example103/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example103", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example103/protractor.js b/1.2.30/docs/examples/example-example103/protractor.js new file mode 100644 index 0000000000..b7c6ff71f8 --- /dev/null +++ b/1.2.30/docs/examples/example-example103/protractor.js @@ -0,0 +1,29 @@ + it('should sanitize the html snippet by default', function() { + expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()). + toBe('

an html\nclick here\nsnippet

'); + }); + + it('should inline raw snippet if bound to a trusted value', function() { + expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()). + toBe("

an html\n" + + "click here\n" + + "snippet

"); + }); + + it('should escape snippet without any filter', function() { + expect(element(by.css('#bind-default div')).getInnerHtml()). + toBe("<p style=\"color:blue\">an html\n" + + "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" + + "snippet</p>"); + }); + + it('should update', function() { + element(by.model('snippet')).clear(); + element(by.model('snippet')).sendKeys('new text'); + expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()). + toBe('new text'); + expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).toBe( + 'new text'); + expect(element(by.css('#bind-default div')).getInnerHtml()).toBe( + "new <b onclick=\"alert(1)\">text</b>"); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example104/index-debug.html b/1.2.30/docs/examples/example-example104/index-debug.html new file mode 100644 index 0000000000..8844a4ba2d --- /dev/null +++ b/1.2.30/docs/examples/example-example104/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example104-debug + + + + + + + + + + + + count: {{ count }} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example104/index-jquery.html b/1.2.30/docs/examples/example-example104/index-jquery.html new file mode 100644 index 0000000000..8c7cc0480f --- /dev/null +++ b/1.2.30/docs/examples/example-example104/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example104-jquery + + + + + + + + + + + + + count: {{ count }} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example104/index-production.html b/1.2.30/docs/examples/example-example104/index-production.html new file mode 100644 index 0000000000..fe015ce380 --- /dev/null +++ b/1.2.30/docs/examples/example-example104/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example104-production + + + + + + + + + + + + count: {{ count }} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example104/index.html b/1.2.30/docs/examples/example-example104/index.html new file mode 100644 index 0000000000..2efc72b3c5 --- /dev/null +++ b/1.2.30/docs/examples/example-example104/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example104 + + + + + + + + + + + + count: {{ count }} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example104/manifest.json b/1.2.30/docs/examples/example-example104/manifest.json new file mode 100644 index 0000000000..7c0e5a0530 --- /dev/null +++ b/1.2.30/docs/examples/example-example104/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example104", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example104/script.js b/1.2.30/docs/examples/example-example104/script.js new file mode 100644 index 0000000000..7d2b294632 --- /dev/null +++ b/1.2.30/docs/examples/example-example104/script.js @@ -0,0 +1 @@ + angular.module('ngClickExample', ['ngTouch']); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example105/index-debug.html b/1.2.30/docs/examples/example-example105/index-debug.html new file mode 100644 index 0000000000..1df1edba60 --- /dev/null +++ b/1.2.30/docs/examples/example-example105/index-debug.html @@ -0,0 +1,24 @@ + + + + + Example - example-example105-debug + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example105/index-jquery.html b/1.2.30/docs/examples/example-example105/index-jquery.html new file mode 100644 index 0000000000..aa9ed81285 --- /dev/null +++ b/1.2.30/docs/examples/example-example105/index-jquery.html @@ -0,0 +1,25 @@ + + + + + Example - example-example105-jquery + + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example105/index-production.html b/1.2.30/docs/examples/example-example105/index-production.html new file mode 100644 index 0000000000..3cc2d9e3fb --- /dev/null +++ b/1.2.30/docs/examples/example-example105/index-production.html @@ -0,0 +1,24 @@ + + + + + Example - example-example105-production + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example105/index.html b/1.2.30/docs/examples/example-example105/index.html new file mode 100644 index 0000000000..cb9a6f3b97 --- /dev/null +++ b/1.2.30/docs/examples/example-example105/index.html @@ -0,0 +1,24 @@ + + + + + Example - example-example105 + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example105/manifest.json b/1.2.30/docs/examples/example-example105/manifest.json new file mode 100644 index 0000000000..4372ed63be --- /dev/null +++ b/1.2.30/docs/examples/example-example105/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example105", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example105/script.js b/1.2.30/docs/examples/example-example105/script.js new file mode 100644 index 0000000000..520623ff8b --- /dev/null +++ b/1.2.30/docs/examples/example-example105/script.js @@ -0,0 +1 @@ + angular.module('ngSwipeLeftExample', ['ngTouch']); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example106/index-debug.html b/1.2.30/docs/examples/example-example106/index-debug.html new file mode 100644 index 0000000000..5c73a310f5 --- /dev/null +++ b/1.2.30/docs/examples/example-example106/index-debug.html @@ -0,0 +1,24 @@ + + + + + Example - example-example106-debug + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example106/index-jquery.html b/1.2.30/docs/examples/example-example106/index-jquery.html new file mode 100644 index 0000000000..d93b4302ba --- /dev/null +++ b/1.2.30/docs/examples/example-example106/index-jquery.html @@ -0,0 +1,25 @@ + + + + + Example - example-example106-jquery + + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example106/index-production.html b/1.2.30/docs/examples/example-example106/index-production.html new file mode 100644 index 0000000000..4945687985 --- /dev/null +++ b/1.2.30/docs/examples/example-example106/index-production.html @@ -0,0 +1,24 @@ + + + + + Example - example-example106-production + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example106/index.html b/1.2.30/docs/examples/example-example106/index.html new file mode 100644 index 0000000000..1e1aed55dc --- /dev/null +++ b/1.2.30/docs/examples/example-example106/index.html @@ -0,0 +1,24 @@ + + + + + Example - example-example106 + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example106/manifest.json b/1.2.30/docs/examples/example-example106/manifest.json new file mode 100644 index 0000000000..17b3849b20 --- /dev/null +++ b/1.2.30/docs/examples/example-example106/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example106", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example106/script.js b/1.2.30/docs/examples/example-example106/script.js new file mode 100644 index 0000000000..f60025a7ea --- /dev/null +++ b/1.2.30/docs/examples/example-example106/script.js @@ -0,0 +1 @@ + angular.module('ngSwipeRightExample', ['ngTouch']); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example11/index-debug.html b/1.2.30/docs/examples/example-example11/index-debug.html new file mode 100644 index 0000000000..b1c12b61fd --- /dev/null +++ b/1.2.30/docs/examples/example-example11/index-debug.html @@ -0,0 +1,23 @@ + + + + + Example - example-example11-debug + + + + + + + + + +
+ +
+
+
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example11/index-jquery.html b/1.2.30/docs/examples/example-example11/index-jquery.html new file mode 100644 index 0000000000..8fabd14fe5 --- /dev/null +++ b/1.2.30/docs/examples/example-example11/index-jquery.html @@ -0,0 +1,24 @@ + + + + + Example - example-example11-jquery + + + + + + + + + + +
+ +
+
+
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example11/index-production.html b/1.2.30/docs/examples/example-example11/index-production.html new file mode 100644 index 0000000000..04ffb314e5 --- /dev/null +++ b/1.2.30/docs/examples/example-example11/index-production.html @@ -0,0 +1,23 @@ + + + + + Example - example-example11-production + + + + + + + + + +
+ +
+
+
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example11/index.html b/1.2.30/docs/examples/example-example11/index.html new file mode 100644 index 0000000000..feec31e746 --- /dev/null +++ b/1.2.30/docs/examples/example-example11/index.html @@ -0,0 +1,23 @@ + + + + + Example - example-example11 + + + + + + + + + +
+ +
+
+
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example11/manifest.json b/1.2.30/docs/examples/example-example11/manifest.json new file mode 100644 index 0000000000..bdf8257776 --- /dev/null +++ b/1.2.30/docs/examples/example-example11/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example11", + "files": [ + "index-production.html", + "script.js", + "my-customer.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example11/my-customer.html b/1.2.30/docs/examples/example-example11/my-customer.html new file mode 100644 index 0000000000..82930dca78 --- /dev/null +++ b/1.2.30/docs/examples/example-example11/my-customer.html @@ -0,0 +1 @@ + Name: {{customer.name}} Address: {{customer.address}} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example11/script.js b/1.2.30/docs/examples/example-example11/script.js new file mode 100644 index 0000000000..80c41e79da --- /dev/null +++ b/1.2.30/docs/examples/example-example11/script.js @@ -0,0 +1,19 @@ + angular.module('docsScopeProblemExample', []) + .controller('NaomiController', ['$scope', function($scope) { + $scope.customer = { + name: 'Naomi', + address: '1600 Amphitheatre' + }; + }]) + .controller('IgorController', ['$scope', function($scope) { + $scope.customer = { + name: 'Igor', + address: '123 Somewhere' + }; + }]) + .directive('myCustomer', function() { + return { + restrict: 'E', + templateUrl: 'my-customer.html' + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example12/index-debug.html b/1.2.30/docs/examples/example-example12/index-debug.html new file mode 100644 index 0000000000..b1f4bfbbb1 --- /dev/null +++ b/1.2.30/docs/examples/example-example12/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example12-debug + + + + + + + + + +
+ +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example12/index-jquery.html b/1.2.30/docs/examples/example-example12/index-jquery.html new file mode 100644 index 0000000000..8735ab86f2 --- /dev/null +++ b/1.2.30/docs/examples/example-example12/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example12-jquery + + + + + + + + + + +
+ +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example12/index-production.html b/1.2.30/docs/examples/example-example12/index-production.html new file mode 100644 index 0000000000..5534b8011b --- /dev/null +++ b/1.2.30/docs/examples/example-example12/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example12-production + + + + + + + + + +
+ +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example12/index.html b/1.2.30/docs/examples/example-example12/index.html new file mode 100644 index 0000000000..e08f1a6f19 --- /dev/null +++ b/1.2.30/docs/examples/example-example12/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example12 + + + + + + + + + +
+ +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example12/manifest.json b/1.2.30/docs/examples/example-example12/manifest.json new file mode 100644 index 0000000000..213b9d8c59 --- /dev/null +++ b/1.2.30/docs/examples/example-example12/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example12", + "files": [ + "index-production.html", + "script.js", + "my-customer-iso.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example12/my-customer-iso.html b/1.2.30/docs/examples/example-example12/my-customer-iso.html new file mode 100644 index 0000000000..2b0eedf2b2 --- /dev/null +++ b/1.2.30/docs/examples/example-example12/my-customer-iso.html @@ -0,0 +1 @@ + Name: {{customerInfo.name}} Address: {{customerInfo.address}} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example12/script.js b/1.2.30/docs/examples/example-example12/script.js new file mode 100644 index 0000000000..e9d0706f31 --- /dev/null +++ b/1.2.30/docs/examples/example-example12/script.js @@ -0,0 +1,14 @@ + angular.module('docsIsolateScopeDirective', []) + .controller('Controller', ['$scope', function($scope) { + $scope.naomi = { name: 'Naomi', address: '1600 Amphitheatre' }; + $scope.igor = { name: 'Igor', address: '123 Somewhere' }; + }]) + .directive('myCustomer', function() { + return { + restrict: 'E', + scope: { + customerInfo: '=info' + }, + templateUrl: 'my-customer-iso.html' + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example13/index-debug.html b/1.2.30/docs/examples/example-example13/index-debug.html new file mode 100644 index 0000000000..7fdc2e4873 --- /dev/null +++ b/1.2.30/docs/examples/example-example13/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example13-debug + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example13/index-jquery.html b/1.2.30/docs/examples/example-example13/index-jquery.html new file mode 100644 index 0000000000..78becee0f4 --- /dev/null +++ b/1.2.30/docs/examples/example-example13/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example13-jquery + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example13/index-production.html b/1.2.30/docs/examples/example-example13/index-production.html new file mode 100644 index 0000000000..33ed57d5d5 --- /dev/null +++ b/1.2.30/docs/examples/example-example13/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example13-production + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example13/index.html b/1.2.30/docs/examples/example-example13/index.html new file mode 100644 index 0000000000..fd37a5c58b --- /dev/null +++ b/1.2.30/docs/examples/example-example13/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example13 + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example13/manifest.json b/1.2.30/docs/examples/example-example13/manifest.json new file mode 100644 index 0000000000..3230313ee9 --- /dev/null +++ b/1.2.30/docs/examples/example-example13/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example13", + "files": [ + "index-production.html", + "script.js", + "my-customer-plus-vojta.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example13/my-customer-plus-vojta.html b/1.2.30/docs/examples/example-example13/my-customer-plus-vojta.html new file mode 100644 index 0000000000..51a938b478 --- /dev/null +++ b/1.2.30/docs/examples/example-example13/my-customer-plus-vojta.html @@ -0,0 +1,3 @@ + Name: {{customerInfo.name}} Address: {{customerInfo.address}} +
+ Name: {{vojta.name}} Address: {{vojta.address}} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example13/script.js b/1.2.30/docs/examples/example-example13/script.js new file mode 100644 index 0000000000..f9c88a51bd --- /dev/null +++ b/1.2.30/docs/examples/example-example13/script.js @@ -0,0 +1,14 @@ + angular.module('docsIsolationExample', []) + .controller('Controller', ['$scope', function($scope) { + $scope.naomi = { name: 'Naomi', address: '1600 Amphitheatre' }; + $scope.vojta = { name: 'Vojta', address: '3456 Somewhere Else' }; + }]) + .directive('myCustomer', function() { + return { + restrict: 'E', + scope: { + customerInfo: '=info' + }, + templateUrl: 'my-customer-plus-vojta.html' + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example14/index-debug.html b/1.2.30/docs/examples/example-example14/index-debug.html new file mode 100644 index 0000000000..a29d5176f8 --- /dev/null +++ b/1.2.30/docs/examples/example-example14/index-debug.html @@ -0,0 +1,20 @@ + + + + + Example - example-example14-debug + + + + + + + + + +
+ Date format:
+ Current time is: +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example14/index-jquery.html b/1.2.30/docs/examples/example-example14/index-jquery.html new file mode 100644 index 0000000000..4541b59a8c --- /dev/null +++ b/1.2.30/docs/examples/example-example14/index-jquery.html @@ -0,0 +1,21 @@ + + + + + Example - example-example14-jquery + + + + + + + + + + +
+ Date format:
+ Current time is: +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example14/index-production.html b/1.2.30/docs/examples/example-example14/index-production.html new file mode 100644 index 0000000000..470ff5dc2a --- /dev/null +++ b/1.2.30/docs/examples/example-example14/index-production.html @@ -0,0 +1,20 @@ + + + + + Example - example-example14-production + + + + + + + + + +
+ Date format:
+ Current time is: +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example14/index.html b/1.2.30/docs/examples/example-example14/index.html new file mode 100644 index 0000000000..c91392d809 --- /dev/null +++ b/1.2.30/docs/examples/example-example14/index.html @@ -0,0 +1,20 @@ + + + + + Example - example-example14 + + + + + + + + + +
+ Date format:
+ Current time is: +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example14/manifest.json b/1.2.30/docs/examples/example-example14/manifest.json new file mode 100644 index 0000000000..5055a37362 --- /dev/null +++ b/1.2.30/docs/examples/example-example14/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example14", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example14/script.js b/1.2.30/docs/examples/example-example14/script.js new file mode 100644 index 0000000000..3408c950bb --- /dev/null +++ b/1.2.30/docs/examples/example-example14/script.js @@ -0,0 +1,33 @@ + angular.module('docsTimeDirective', []) + .controller('Controller', ['$scope', function($scope) { + $scope.format = 'M/d/yy h:mm:ss a'; + }]) + .directive('myCurrentTime', ['$interval', 'dateFilter', function($interval, dateFilter) { + + function link(scope, element, attrs) { + var format, + timeoutId; + + function updateTime() { + element.text(dateFilter(new Date(), format)); + } + + scope.$watch(attrs.myCurrentTime, function(value) { + format = value; + updateTime(); + }); + + element.on('$destroy', function() { + $interval.cancel(timeoutId); + }); + + // start the UI update process; save the timeoutId for canceling + timeoutId = $interval(function() { + updateTime(); // update DOM + }, 1000); + } + + return { + link: link + }; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example15/index-debug.html b/1.2.30/docs/examples/example-example15/index-debug.html new file mode 100644 index 0000000000..7909d97677 --- /dev/null +++ b/1.2.30/docs/examples/example-example15/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example15-debug + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example15/index-jquery.html b/1.2.30/docs/examples/example-example15/index-jquery.html new file mode 100644 index 0000000000..5e6cc7e102 --- /dev/null +++ b/1.2.30/docs/examples/example-example15/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example15-jquery + + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example15/index-production.html b/1.2.30/docs/examples/example-example15/index-production.html new file mode 100644 index 0000000000..317ad6ec7a --- /dev/null +++ b/1.2.30/docs/examples/example-example15/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example15-production + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example15/index.html b/1.2.30/docs/examples/example-example15/index.html new file mode 100644 index 0000000000..bf74b15d97 --- /dev/null +++ b/1.2.30/docs/examples/example-example15/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example15 + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example15/manifest.json b/1.2.30/docs/examples/example-example15/manifest.json new file mode 100644 index 0000000000..229705b6a5 --- /dev/null +++ b/1.2.30/docs/examples/example-example15/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example15", + "files": [ + "index-production.html", + "script.js", + "my-dialog.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example15/my-dialog.html b/1.2.30/docs/examples/example-example15/my-dialog.html new file mode 100644 index 0000000000..58c4f39c28 --- /dev/null +++ b/1.2.30/docs/examples/example-example15/my-dialog.html @@ -0,0 +1,2 @@ +
+
\ No newline at end of file diff --git a/1.2.30/docs/examples/example-example15/script.js b/1.2.30/docs/examples/example-example15/script.js new file mode 100644 index 0000000000..966f97a434 --- /dev/null +++ b/1.2.30/docs/examples/example-example15/script.js @@ -0,0 +1,11 @@ + angular.module('docsTransclusionDirective', []) + .controller('Controller', ['$scope', function($scope) { + $scope.name = 'Tobias'; + }]) + .directive('myDialog', function() { + return { + restrict: 'E', + transclude: true, + templateUrl: 'my-dialog.html' + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example16/index-debug.html b/1.2.30/docs/examples/example-example16/index-debug.html new file mode 100644 index 0000000000..387e0d1f19 --- /dev/null +++ b/1.2.30/docs/examples/example-example16/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example16-debug + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example16/index-jquery.html b/1.2.30/docs/examples/example-example16/index-jquery.html new file mode 100644 index 0000000000..ae5e408e17 --- /dev/null +++ b/1.2.30/docs/examples/example-example16/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example16-jquery + + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example16/index-production.html b/1.2.30/docs/examples/example-example16/index-production.html new file mode 100644 index 0000000000..2908821d83 --- /dev/null +++ b/1.2.30/docs/examples/example-example16/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example16-production + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example16/index.html b/1.2.30/docs/examples/example-example16/index.html new file mode 100644 index 0000000000..307e9fd726 --- /dev/null +++ b/1.2.30/docs/examples/example-example16/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example16 + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example16/manifest.json b/1.2.30/docs/examples/example-example16/manifest.json new file mode 100644 index 0000000000..e01f6a5892 --- /dev/null +++ b/1.2.30/docs/examples/example-example16/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example16", + "files": [ + "index-production.html", + "script.js", + "my-dialog.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example16/my-dialog.html b/1.2.30/docs/examples/example-example16/my-dialog.html new file mode 100644 index 0000000000..58c4f39c28 --- /dev/null +++ b/1.2.30/docs/examples/example-example16/my-dialog.html @@ -0,0 +1,2 @@ +
+
\ No newline at end of file diff --git a/1.2.30/docs/examples/example-example16/script.js b/1.2.30/docs/examples/example-example16/script.js new file mode 100644 index 0000000000..a73ba663be --- /dev/null +++ b/1.2.30/docs/examples/example-example16/script.js @@ -0,0 +1,15 @@ + angular.module('docsTransclusionExample', []) + .controller('Controller', ['$scope', function($scope) { + $scope.name = 'Tobias'; + }]) + .directive('myDialog', function() { + return { + restrict: 'E', + transclude: true, + scope: {}, + templateUrl: 'my-dialog.html', + link: function (scope, element) { + scope.name = 'Jeff'; + } + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example17/index-debug.html b/1.2.30/docs/examples/example-example17/index-debug.html new file mode 100644 index 0000000000..d3d37e18fe --- /dev/null +++ b/1.2.30/docs/examples/example-example17/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example17-debug + + + + + + + + + +
+ + Check out the contents, {{name}}! + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example17/index-jquery.html b/1.2.30/docs/examples/example-example17/index-jquery.html new file mode 100644 index 0000000000..9d41c9f13e --- /dev/null +++ b/1.2.30/docs/examples/example-example17/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example17-jquery + + + + + + + + + + +
+ + Check out the contents, {{name}}! + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example17/index-production.html b/1.2.30/docs/examples/example-example17/index-production.html new file mode 100644 index 0000000000..926cf1f686 --- /dev/null +++ b/1.2.30/docs/examples/example-example17/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example17-production + + + + + + + + + +
+ + Check out the contents, {{name}}! + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example17/index.html b/1.2.30/docs/examples/example-example17/index.html new file mode 100644 index 0000000000..482621d69b --- /dev/null +++ b/1.2.30/docs/examples/example-example17/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example17 + + + + + + + + + +
+ + Check out the contents, {{name}}! + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example17/manifest.json b/1.2.30/docs/examples/example-example17/manifest.json new file mode 100644 index 0000000000..dd431063c7 --- /dev/null +++ b/1.2.30/docs/examples/example-example17/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example17", + "files": [ + "index-production.html", + "script.js", + "my-dialog-close.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example17/my-dialog-close.html b/1.2.30/docs/examples/example-example17/my-dialog-close.html new file mode 100644 index 0000000000..1d12ba2b8d --- /dev/null +++ b/1.2.30/docs/examples/example-example17/my-dialog-close.html @@ -0,0 +1,4 @@ +
+ × +
+
\ No newline at end of file diff --git a/1.2.30/docs/examples/example-example17/script.js b/1.2.30/docs/examples/example-example17/script.js new file mode 100644 index 0000000000..df71bddfd5 --- /dev/null +++ b/1.2.30/docs/examples/example-example17/script.js @@ -0,0 +1,20 @@ + angular.module('docsIsoFnBindExample', []) + .controller('Controller', ['$scope', '$timeout', function($scope, $timeout) { + $scope.name = 'Tobias'; + $scope.hideDialog = function () { + $scope.dialogIsHidden = true; + $timeout(function () { + $scope.dialogIsHidden = false; + }, 2000); + }; + }]) + .directive('myDialog', function() { + return { + restrict: 'E', + transclude: true, + scope: { + 'close': '&onClose' + }, + templateUrl: 'my-dialog-close.html' + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example18/index-debug.html b/1.2.30/docs/examples/example-example18/index-debug.html new file mode 100644 index 0000000000..c6e4957118 --- /dev/null +++ b/1.2.30/docs/examples/example-example18/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example18-debug + + + + + + + + + + Drag ME + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example18/index-jquery.html b/1.2.30/docs/examples/example-example18/index-jquery.html new file mode 100644 index 0000000000..27e9bd444b --- /dev/null +++ b/1.2.30/docs/examples/example-example18/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example18-jquery + + + + + + + + + + + Drag ME + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example18/index-production.html b/1.2.30/docs/examples/example-example18/index-production.html new file mode 100644 index 0000000000..451047c86c --- /dev/null +++ b/1.2.30/docs/examples/example-example18/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example18-production + + + + + + + + + + Drag ME + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example18/index.html b/1.2.30/docs/examples/example-example18/index.html new file mode 100644 index 0000000000..1749654ee5 --- /dev/null +++ b/1.2.30/docs/examples/example-example18/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example18 + + + + + + + + + + Drag ME + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example18/manifest.json b/1.2.30/docs/examples/example-example18/manifest.json new file mode 100644 index 0000000000..d59252fdec --- /dev/null +++ b/1.2.30/docs/examples/example-example18/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example18", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example18/script.js b/1.2.30/docs/examples/example-example18/script.js new file mode 100644 index 0000000000..7aa2c6f916 --- /dev/null +++ b/1.2.30/docs/examples/example-example18/script.js @@ -0,0 +1,36 @@ + angular.module('dragModule', []) + .directive('myDraggable', ['$document', function($document) { + return function(scope, element, attr) { + var startX = 0, startY = 0, x = 0, y = 0; + + element.css({ + position: 'relative', + border: '1px solid red', + backgroundColor: 'lightgrey', + cursor: 'pointer' + }); + + element.on('mousedown', function(event) { + // Prevent default dragging of selected content + event.preventDefault(); + startX = event.pageX - x; + startY = event.pageY - y; + $document.on('mousemove', mousemove); + $document.on('mouseup', mouseup); + }); + + function mousemove(event) { + y = event.pageY - startY; + x = event.pageX - startX; + element.css({ + top: y + 'px', + left: x + 'px' + }); + } + + function mouseup() { + $document.unbind('mousemove', mousemove); + $document.unbind('mouseup', mouseup); + } + }; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example19/index-debug.html b/1.2.30/docs/examples/example-example19/index-debug.html new file mode 100644 index 0000000000..5d21ff1e2d --- /dev/null +++ b/1.2.30/docs/examples/example-example19/index-debug.html @@ -0,0 +1,27 @@ + + + + + Example - example-example19-debug + + + + + + + + + + + +

Hello

+

Lorem ipsum dolor sit amet

+
+ +

World

+ Mauris elementum elementum enim at suscipit. +

counter: {{i || 0}}

+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example19/index-jquery.html b/1.2.30/docs/examples/example-example19/index-jquery.html new file mode 100644 index 0000000000..0405181f75 --- /dev/null +++ b/1.2.30/docs/examples/example-example19/index-jquery.html @@ -0,0 +1,28 @@ + + + + + Example - example-example19-jquery + + + + + + + + + + + + +

Hello

+

Lorem ipsum dolor sit amet

+
+ +

World

+ Mauris elementum elementum enim at suscipit. +

counter: {{i || 0}}

+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example19/index-production.html b/1.2.30/docs/examples/example-example19/index-production.html new file mode 100644 index 0000000000..7bc775b717 --- /dev/null +++ b/1.2.30/docs/examples/example-example19/index-production.html @@ -0,0 +1,27 @@ + + + + + Example - example-example19-production + + + + + + + + + + + +

Hello

+

Lorem ipsum dolor sit amet

+
+ +

World

+ Mauris elementum elementum enim at suscipit. +

counter: {{i || 0}}

+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example19/index.html b/1.2.30/docs/examples/example-example19/index.html new file mode 100644 index 0000000000..c520cff475 --- /dev/null +++ b/1.2.30/docs/examples/example-example19/index.html @@ -0,0 +1,27 @@ + + + + + Example - example-example19 + + + + + + + + + + + +

Hello

+

Lorem ipsum dolor sit amet

+
+ +

World

+ Mauris elementum elementum enim at suscipit. +

counter: {{i || 0}}

+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example19/manifest.json b/1.2.30/docs/examples/example-example19/manifest.json new file mode 100644 index 0000000000..e84041202e --- /dev/null +++ b/1.2.30/docs/examples/example-example19/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-example19", + "files": [ + "index-production.html", + "script.js", + "my-tabs.html", + "my-pane.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example19/my-pane.html b/1.2.30/docs/examples/example-example19/my-pane.html new file mode 100644 index 0000000000..1e74f5dc12 --- /dev/null +++ b/1.2.30/docs/examples/example-example19/my-pane.html @@ -0,0 +1,2 @@ +
+
\ No newline at end of file diff --git a/1.2.30/docs/examples/example-example19/my-tabs.html b/1.2.30/docs/examples/example-example19/my-tabs.html new file mode 100644 index 0000000000..d14f733e64 --- /dev/null +++ b/1.2.30/docs/examples/example-example19/my-tabs.html @@ -0,0 +1,8 @@ +
+ +
+
\ No newline at end of file diff --git a/1.2.30/docs/examples/example-example19/script.js b/1.2.30/docs/examples/example-example19/script.js new file mode 100644 index 0000000000..8c959bbfc8 --- /dev/null +++ b/1.2.30/docs/examples/example-example19/script.js @@ -0,0 +1,40 @@ + angular.module('docsTabsExample', []) + .directive('myTabs', function() { + return { + restrict: 'E', + transclude: true, + scope: {}, + controller: function($scope) { + var panes = $scope.panes = []; + + $scope.select = function(pane) { + angular.forEach(panes, function(pane) { + pane.selected = false; + }); + pane.selected = true; + }; + + this.addPane = function(pane) { + if (panes.length === 0) { + $scope.select(pane); + } + panes.push(pane); + }; + }, + templateUrl: 'my-tabs.html' + }; + }) + .directive('myPane', function() { + return { + require: '^myTabs', + restrict: 'E', + transclude: true, + scope: { + title: '@' + }, + link: function(scope, element, attrs, tabsCtrl) { + tabsCtrl.addPane(scope); + }, + templateUrl: 'my-pane.html' + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example2/index-debug.html b/1.2.30/docs/examples/example-example2/index-debug.html new file mode 100644 index 0000000000..92059249fb --- /dev/null +++ b/1.2.30/docs/examples/example-example2/index-debug.html @@ -0,0 +1,23 @@ + + + + + Example - example-example2-debug + + + + + + + + + + +

+ + +
+ CSS-Animated Text +

+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example2/index-jquery.html b/1.2.30/docs/examples/example-example2/index-jquery.html new file mode 100644 index 0000000000..5c9fefad1e --- /dev/null +++ b/1.2.30/docs/examples/example-example2/index-jquery.html @@ -0,0 +1,24 @@ + + + + + Example - example-example2-jquery + + + + + + + + + + + +

+ + +
+ CSS-Animated Text +

+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example2/index-production.html b/1.2.30/docs/examples/example-example2/index-production.html new file mode 100644 index 0000000000..dc422c92fe --- /dev/null +++ b/1.2.30/docs/examples/example-example2/index-production.html @@ -0,0 +1,23 @@ + + + + + Example - example-example2-production + + + + + + + + + + +

+ + +
+ CSS-Animated Text +

+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example2/index.html b/1.2.30/docs/examples/example-example2/index.html new file mode 100644 index 0000000000..5eefcbeb31 --- /dev/null +++ b/1.2.30/docs/examples/example-example2/index.html @@ -0,0 +1,23 @@ + + + + + Example - example-example2 + + + + + + + + + + +

+ + +
+ CSS-Animated Text +

+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example2/manifest.json b/1.2.30/docs/examples/example-example2/manifest.json new file mode 100644 index 0000000000..161bbf036d --- /dev/null +++ b/1.2.30/docs/examples/example-example2/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example2", + "files": [ + "index-production.html", + "style.css" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example2/style.css b/1.2.30/docs/examples/example-example2/style.css new file mode 100644 index 0000000000..f2edcab030 --- /dev/null +++ b/1.2.30/docs/examples/example-example2/style.css @@ -0,0 +1,17 @@ + .css-class-add, .css-class-remove { + -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; + -moz-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; + -o-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; + transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; + } + + .css-class, + .css-class-add.css-class-add-active { + color: red; + font-size:3em; + } + + .css-class-remove.css-class-remove-active { + font-size:1.0em; + color:black; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example20/index-debug.html b/1.2.30/docs/examples/example-example20/index-debug.html new file mode 100644 index 0000000000..b1a4ee2ce0 --- /dev/null +++ b/1.2.30/docs/examples/example-example20/index-debug.html @@ -0,0 +1,18 @@ + + + + + Example - example-example20-debug + + + + + + + + + + 1+2={{1+2}} + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example20/index-jquery.html b/1.2.30/docs/examples/example-example20/index-jquery.html new file mode 100644 index 0000000000..f07fa6bb08 --- /dev/null +++ b/1.2.30/docs/examples/example-example20/index-jquery.html @@ -0,0 +1,19 @@ + + + + + Example - example-example20-jquery + + + + + + + + + + + 1+2={{1+2}} + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example20/index-production.html b/1.2.30/docs/examples/example-example20/index-production.html new file mode 100644 index 0000000000..1114aeb629 --- /dev/null +++ b/1.2.30/docs/examples/example-example20/index-production.html @@ -0,0 +1,18 @@ + + + + + Example - example-example20-production + + + + + + + + + + 1+2={{1+2}} + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example20/index.html b/1.2.30/docs/examples/example-example20/index.html new file mode 100644 index 0000000000..caee231619 --- /dev/null +++ b/1.2.30/docs/examples/example-example20/index.html @@ -0,0 +1,18 @@ + + + + + Example - example-example20 + + + + + + + + + + 1+2={{1+2}} + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example20/manifest.json b/1.2.30/docs/examples/example-example20/manifest.json new file mode 100644 index 0000000000..68a0d16939 --- /dev/null +++ b/1.2.30/docs/examples/example-example20/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example20", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example20/protractor.js b/1.2.30/docs/examples/example-example20/protractor.js new file mode 100644 index 0000000000..3e639c677f --- /dev/null +++ b/1.2.30/docs/examples/example-example20/protractor.js @@ -0,0 +1,3 @@ + it('should calculate expression in binding', function() { + expect(element(by.binding('1+2')).getText()).toEqual('1+2=3'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example21/index-debug.html b/1.2.30/docs/examples/example-example21/index-debug.html new file mode 100644 index 0000000000..30219a584b --- /dev/null +++ b/1.2.30/docs/examples/example-example21/index-debug.html @@ -0,0 +1,27 @@ + + + + + Example - example-example21-debug + + + + + + + + + +
+ Expression: + + +
    +
  • + [ X ] + {{expr}} => +
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example21/index-jquery.html b/1.2.30/docs/examples/example-example21/index-jquery.html new file mode 100644 index 0000000000..8844f8663e --- /dev/null +++ b/1.2.30/docs/examples/example-example21/index-jquery.html @@ -0,0 +1,28 @@ + + + + + Example - example-example21-jquery + + + + + + + + + + +
+ Expression: + + +
    +
  • + [ X ] + {{expr}} => +
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example21/index-production.html b/1.2.30/docs/examples/example-example21/index-production.html new file mode 100644 index 0000000000..265b3a7de5 --- /dev/null +++ b/1.2.30/docs/examples/example-example21/index-production.html @@ -0,0 +1,27 @@ + + + + + Example - example-example21-production + + + + + + + + + +
+ Expression: + + +
    +
  • + [ X ] + {{expr}} => +
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example21/index.html b/1.2.30/docs/examples/example-example21/index.html new file mode 100644 index 0000000000..2c208c5f1e --- /dev/null +++ b/1.2.30/docs/examples/example-example21/index.html @@ -0,0 +1,27 @@ + + + + + Example - example-example21 + + + + + + + + + +
+ Expression: + + +
    +
  • + [ X ] + {{expr}} => +
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example21/manifest.json b/1.2.30/docs/examples/example-example21/manifest.json new file mode 100644 index 0000000000..c36cc81f2a --- /dev/null +++ b/1.2.30/docs/examples/example-example21/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example21", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example21/protractor.js b/1.2.30/docs/examples/example-example21/protractor.js new file mode 100644 index 0000000000..1f4b38d161 --- /dev/null +++ b/1.2.30/docs/examples/example-example21/protractor.js @@ -0,0 +1,6 @@ + it('should allow user expression testing', function() { + element(by.css('.expressions button')).click(); + var lis = element(by.css('.expressions ul')).all(by.repeater('expr in exprs')); + expect(lis.count()).toBe(1); + expect(lis.get(0).getText()).toEqual('[ X ] 3*10|currency => $30.00'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example21/script.js b/1.2.30/docs/examples/example-example21/script.js new file mode 100644 index 0000000000..aa781ae87a --- /dev/null +++ b/1.2.30/docs/examples/example-example21/script.js @@ -0,0 +1,12 @@ + angular.module('expressionExample', []) + .controller('ExampleController', ['$scope', function($scope) { + var exprs = $scope.exprs = []; + $scope.expr = '3*10|currency'; + $scope.addExp = function(expr) { + exprs.push(expr); + }; + + $scope.removeExp = function(index) { + exprs.splice(index, 1); + }; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example22/index-debug.html b/1.2.30/docs/examples/example-example22/index-debug.html new file mode 100644 index 0000000000..3a5c0479e2 --- /dev/null +++ b/1.2.30/docs/examples/example-example22/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example22-debug + + + + + + + + + +
+ Name: + + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example22/index-jquery.html b/1.2.30/docs/examples/example-example22/index-jquery.html new file mode 100644 index 0000000000..9e509d0439 --- /dev/null +++ b/1.2.30/docs/examples/example-example22/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example22-jquery + + + + + + + + + + +
+ Name: + + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example22/index-production.html b/1.2.30/docs/examples/example-example22/index-production.html new file mode 100644 index 0000000000..786d8dd329 --- /dev/null +++ b/1.2.30/docs/examples/example-example22/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example22-production + + + + + + + + + +
+ Name: + + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example22/index.html b/1.2.30/docs/examples/example-example22/index.html new file mode 100644 index 0000000000..9541d23099 --- /dev/null +++ b/1.2.30/docs/examples/example-example22/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example22 + + + + + + + + + +
+ Name: + + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example22/manifest.json b/1.2.30/docs/examples/example-example22/manifest.json new file mode 100644 index 0000000000..8c3a2c7286 --- /dev/null +++ b/1.2.30/docs/examples/example-example22/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example22", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example22/protractor.js b/1.2.30/docs/examples/example-example22/protractor.js new file mode 100644 index 0000000000..8c58cbe69f --- /dev/null +++ b/1.2.30/docs/examples/example-example22/protractor.js @@ -0,0 +1,13 @@ + it('should calculate expression in binding', function() { + if (browser.params.browser == 'safari') { + // Safari can't handle dialogs. + return; + } + element(by.css('[ng-click="greet()"]')).click(); + + var alertDialog = browser.switchTo().alert(); + + expect(alertDialog.getText()).toEqual('Hello World'); + + alertDialog.accept(); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example22/script.js b/1.2.30/docs/examples/example-example22/script.js new file mode 100644 index 0000000000..26d074c730 --- /dev/null +++ b/1.2.30/docs/examples/example-example22/script.js @@ -0,0 +1,8 @@ + angular.module('expressionExample', []) + .controller('ExampleController', ['$window', '$scope', function($window, $scope) { + $scope.name = 'World'; + + $scope.greet = function() { + $window.alert('Hello ' + $scope.name); + }; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example23/index-debug.html b/1.2.30/docs/examples/example-example23/index-debug.html new file mode 100644 index 0000000000..68e296e90b --- /dev/null +++ b/1.2.30/docs/examples/example-example23/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example23-debug + + + + + + + + + +
+ +

$event:

 {{$event | json}}

+

clickEvent:

{{clickEvent | json}}

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example23/index-jquery.html b/1.2.30/docs/examples/example-example23/index-jquery.html new file mode 100644 index 0000000000..0631e3a35e --- /dev/null +++ b/1.2.30/docs/examples/example-example23/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example23-jquery + + + + + + + + + + +
+ +

$event:

 {{$event | json}}

+

clickEvent:

{{clickEvent | json}}

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example23/index-production.html b/1.2.30/docs/examples/example-example23/index-production.html new file mode 100644 index 0000000000..3a2813a92a --- /dev/null +++ b/1.2.30/docs/examples/example-example23/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example23-production + + + + + + + + + +
+ +

$event:

 {{$event | json}}

+

clickEvent:

{{clickEvent | json}}

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example23/index.html b/1.2.30/docs/examples/example-example23/index.html new file mode 100644 index 0000000000..f49ebcb45d --- /dev/null +++ b/1.2.30/docs/examples/example-example23/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example23 + + + + + + + + + +
+ +

$event:

 {{$event | json}}

+

clickEvent:

{{clickEvent | json}}

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example23/manifest.json b/1.2.30/docs/examples/example-example23/manifest.json new file mode 100644 index 0000000000..36357818da --- /dev/null +++ b/1.2.30/docs/examples/example-example23/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example23", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example23/script.js b/1.2.30/docs/examples/example-example23/script.js new file mode 100644 index 0000000000..62a9590de2 --- /dev/null +++ b/1.2.30/docs/examples/example-example23/script.js @@ -0,0 +1,21 @@ + angular.module('eventExampleApp', []). + controller('EventController', ['$scope', function($scope) { + /* + * expose the event object to the scope + */ + $scope.clickMe = function(clickEvent) { + $scope.clickEvent = simpleKeys(clickEvent); + console.log(clickEvent); + }; + + /* + * return a copy of an object with only non-object keys + * we need this to avoid circular references + */ + function simpleKeys (original) { + return Object.keys(original).reduce(function (obj, key) { + obj[key] = typeof original[key] === 'object' ? '{ ... }' : original[key]; + return obj; + }, {}); + } + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example24/index-debug.html b/1.2.30/docs/examples/example-example24/index-debug.html new file mode 100644 index 0000000000..ee25a39bea --- /dev/null +++ b/1.2.30/docs/examples/example-example24/index-debug.html @@ -0,0 +1,26 @@ + + + + + Example - example-example24-debug + + + + + + + + + +
+
+ All entries: + {{entry.name}} +
+
+ Entries that contain an "a": + {{entry.name}} +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example24/index-jquery.html b/1.2.30/docs/examples/example-example24/index-jquery.html new file mode 100644 index 0000000000..029777e408 --- /dev/null +++ b/1.2.30/docs/examples/example-example24/index-jquery.html @@ -0,0 +1,27 @@ + + + + + Example - example-example24-jquery + + + + + + + + + + +
+
+ All entries: + {{entry.name}} +
+
+ Entries that contain an "a": + {{entry.name}} +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example24/index-production.html b/1.2.30/docs/examples/example-example24/index-production.html new file mode 100644 index 0000000000..b07a6c3c12 --- /dev/null +++ b/1.2.30/docs/examples/example-example24/index-production.html @@ -0,0 +1,26 @@ + + + + + Example - example-example24-production + + + + + + + + + +
+
+ All entries: + {{entry.name}} +
+
+ Entries that contain an "a": + {{entry.name}} +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example24/index.html b/1.2.30/docs/examples/example-example24/index.html new file mode 100644 index 0000000000..96df7da394 --- /dev/null +++ b/1.2.30/docs/examples/example-example24/index.html @@ -0,0 +1,26 @@ + + + + + Example - example-example24 + + + + + + + + + +
+
+ All entries: + {{entry.name}} +
+
+ Entries that contain an "a": + {{entry.name}} +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example24/manifest.json b/1.2.30/docs/examples/example-example24/manifest.json new file mode 100644 index 0000000000..5e3fb61491 --- /dev/null +++ b/1.2.30/docs/examples/example-example24/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example24", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example24/script.js b/1.2.30/docs/examples/example-example24/script.js new file mode 100644 index 0000000000..7a28c9b184 --- /dev/null +++ b/1.2.30/docs/examples/example-example24/script.js @@ -0,0 +1,12 @@ + angular.module('FilterInControllerModule', []). + controller('FilterController', ['filterFilter', function(filterFilter) { + this.array = [ + {name: 'Tobias'}, + {name: 'Jeff'}, + {name: 'Brian'}, + {name: 'Igor'}, + {name: 'James'}, + {name: 'Brad'} + ]; + this.filteredArray = filterFilter(this.array, 'a'); + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example25/index-debug.html b/1.2.30/docs/examples/example-example25/index-debug.html new file mode 100644 index 0000000000..48ff110e53 --- /dev/null +++ b/1.2.30/docs/examples/example-example25/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example25-debug + + + + + + + + + +
+
+ No filter: {{greeting}}
+ Reverse: {{greeting|reverse}}
+ Reverse + uppercase: {{greeting|reverse:true}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example25/index-jquery.html b/1.2.30/docs/examples/example-example25/index-jquery.html new file mode 100644 index 0000000000..1f61f92efd --- /dev/null +++ b/1.2.30/docs/examples/example-example25/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example25-jquery + + + + + + + + + + +
+
+ No filter: {{greeting}}
+ Reverse: {{greeting|reverse}}
+ Reverse + uppercase: {{greeting|reverse:true}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example25/index-production.html b/1.2.30/docs/examples/example-example25/index-production.html new file mode 100644 index 0000000000..6654597f55 --- /dev/null +++ b/1.2.30/docs/examples/example-example25/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example25-production + + + + + + + + + +
+
+ No filter: {{greeting}}
+ Reverse: {{greeting|reverse}}
+ Reverse + uppercase: {{greeting|reverse:true}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example25/index.html b/1.2.30/docs/examples/example-example25/index.html new file mode 100644 index 0000000000..9343907b88 --- /dev/null +++ b/1.2.30/docs/examples/example-example25/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example25 + + + + + + + + + +
+
+ No filter: {{greeting}}
+ Reverse: {{greeting|reverse}}
+ Reverse + uppercase: {{greeting|reverse:true}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example25/manifest.json b/1.2.30/docs/examples/example-example25/manifest.json new file mode 100644 index 0000000000..89c3ece228 --- /dev/null +++ b/1.2.30/docs/examples/example-example25/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example25", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example25/script.js b/1.2.30/docs/examples/example-example25/script.js new file mode 100644 index 0000000000..51f2c7be94 --- /dev/null +++ b/1.2.30/docs/examples/example-example25/script.js @@ -0,0 +1,18 @@ + angular.module('myReverseModule', []) + .filter('reverse', function() { + return function(input, uppercase) { + input = input || ''; + var out = ""; + for (var i = 0; i < input.length; i++) { + out = input.charAt(i) + out; + } + // conditional based on optional argument + if (uppercase) { + out = out.toUpperCase(); + } + return out; + }; + }) + .controller('Controller', ['$scope', function($scope) { + $scope.greeting = 'hello'; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example26/index-debug.html b/1.2.30/docs/examples/example-example26/index-debug.html new file mode 100644 index 0000000000..c1fa7d8e99 --- /dev/null +++ b/1.2.30/docs/examples/example-example26/index-debug.html @@ -0,0 +1,44 @@ + + + + + Example - example-example26-debug + + + + + + + + +
+
+ Name:
+ E-mail:
+ Gender: male + female
+ + +
+
form = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example26/index-jquery.html b/1.2.30/docs/examples/example-example26/index-jquery.html new file mode 100644 index 0000000000..2068cfbef3 --- /dev/null +++ b/1.2.30/docs/examples/example-example26/index-jquery.html @@ -0,0 +1,45 @@ + + + + + Example - example-example26-jquery + + + + + + + + + +
+
+ Name:
+ E-mail:
+ Gender: male + female
+ + +
+
form = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example26/index-production.html b/1.2.30/docs/examples/example-example26/index-production.html new file mode 100644 index 0000000000..74b7c597f9 --- /dev/null +++ b/1.2.30/docs/examples/example-example26/index-production.html @@ -0,0 +1,44 @@ + + + + + Example - example-example26-production + + + + + + + + +
+
+ Name:
+ E-mail:
+ Gender: male + female
+ + +
+
form = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example26/index.html b/1.2.30/docs/examples/example-example26/index.html new file mode 100644 index 0000000000..41c92456b8 --- /dev/null +++ b/1.2.30/docs/examples/example-example26/index.html @@ -0,0 +1,44 @@ + + + + + Example - example-example26 + + + + + + + + +
+
+ Name:
+ E-mail:
+ Gender: male + female
+ + +
+
form = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example26/manifest.json b/1.2.30/docs/examples/example-example26/manifest.json new file mode 100644 index 0000000000..2b3b4c0530 --- /dev/null +++ b/1.2.30/docs/examples/example-example26/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example26", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example27/index-debug.html b/1.2.30/docs/examples/example-example27/index-debug.html new file mode 100644 index 0000000000..e638915fc8 --- /dev/null +++ b/1.2.30/docs/examples/example-example27/index-debug.html @@ -0,0 +1,53 @@ + + + + + Example - example-example27-debug + + + + + + + + +
+
+ Name: +
+ E-mail:
+ Gender: male + female
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example27/index-jquery.html b/1.2.30/docs/examples/example-example27/index-jquery.html new file mode 100644 index 0000000000..d33eba314f --- /dev/null +++ b/1.2.30/docs/examples/example-example27/index-jquery.html @@ -0,0 +1,54 @@ + + + + + Example - example-example27-jquery + + + + + + + + + +
+
+ Name: +
+ E-mail:
+ Gender: male + female
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example27/index-production.html b/1.2.30/docs/examples/example-example27/index-production.html new file mode 100644 index 0000000000..7846dbf82e --- /dev/null +++ b/1.2.30/docs/examples/example-example27/index-production.html @@ -0,0 +1,53 @@ + + + + + Example - example-example27-production + + + + + + + + +
+
+ Name: +
+ E-mail:
+ Gender: male + female
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example27/index.html b/1.2.30/docs/examples/example-example27/index.html new file mode 100644 index 0000000000..7f6290cb67 --- /dev/null +++ b/1.2.30/docs/examples/example-example27/index.html @@ -0,0 +1,53 @@ + + + + + Example - example-example27 + + + + + + + + +
+
+ Name: +
+ E-mail:
+ Gender: male + female
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example27/manifest.json b/1.2.30/docs/examples/example-example27/manifest.json new file mode 100644 index 0000000000..1c3026f9b2 --- /dev/null +++ b/1.2.30/docs/examples/example-example27/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example27", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example28/index-debug.html b/1.2.30/docs/examples/example-example28/index-debug.html new file mode 100644 index 0000000000..e619d6548e --- /dev/null +++ b/1.2.30/docs/examples/example-example28/index-debug.html @@ -0,0 +1,40 @@ + + + + + Example - example-example28-debug + + + + + + + + + +
+
+ Name: +
+ E-mail: +
+
Invalid: + Tell us your email. + This is not a valid email. +
+ + Gender: male + female
+ + + I agree:
+
Please agree and sign.
+ + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example28/index-jquery.html b/1.2.30/docs/examples/example-example28/index-jquery.html new file mode 100644 index 0000000000..4518113690 --- /dev/null +++ b/1.2.30/docs/examples/example-example28/index-jquery.html @@ -0,0 +1,41 @@ + + + + + Example - example-example28-jquery + + + + + + + + + + +
+
+ Name: +
+ E-mail: +
+
Invalid: + Tell us your email. + This is not a valid email. +
+ + Gender: male + female
+ + + I agree:
+
Please agree and sign.
+ + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example28/index-production.html b/1.2.30/docs/examples/example-example28/index-production.html new file mode 100644 index 0000000000..3541eb258d --- /dev/null +++ b/1.2.30/docs/examples/example-example28/index-production.html @@ -0,0 +1,40 @@ + + + + + Example - example-example28-production + + + + + + + + + +
+
+ Name: +
+ E-mail: +
+
Invalid: + Tell us your email. + This is not a valid email. +
+ + Gender: male + female
+ + + I agree:
+
Please agree and sign.
+ + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example28/index.html b/1.2.30/docs/examples/example-example28/index.html new file mode 100644 index 0000000000..410d3de6c6 --- /dev/null +++ b/1.2.30/docs/examples/example-example28/index.html @@ -0,0 +1,40 @@ + + + + + Example - example-example28 + + + + + + + + + +
+
+ Name: +
+ E-mail: +
+
Invalid: + Tell us your email. + This is not a valid email. +
+ + Gender: male + female
+ + + I agree:
+
Please agree and sign.
+ + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example28/manifest.json b/1.2.30/docs/examples/example-example28/manifest.json new file mode 100644 index 0000000000..0346e5b5eb --- /dev/null +++ b/1.2.30/docs/examples/example-example28/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example28", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example28/script.js b/1.2.30/docs/examples/example-example28/script.js new file mode 100644 index 0000000000..12c3108840 --- /dev/null +++ b/1.2.30/docs/examples/example-example28/script.js @@ -0,0 +1,18 @@ + angular.module('formExample', []) + .controller('ExampleController', ['$scope', function($scope) { + $scope.master = {}; + + $scope.update = function(user) { + $scope.master = angular.copy(user); + }; + + $scope.reset = function() { + $scope.user = angular.copy($scope.master); + }; + + $scope.isUnchanged = function(user) { + return angular.equals(user, $scope.master); + }; + + $scope.reset(); + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example29/index-debug.html b/1.2.30/docs/examples/example-example29/index-debug.html new file mode 100644 index 0000000000..240b0bd9ef --- /dev/null +++ b/1.2.30/docs/examples/example-example29/index-debug.html @@ -0,0 +1,34 @@ + + + + + Example - example-example29-debug + + + + + + + + + +
+
+ Size (integer 0 - 10): + {{size}}
+ This is not valid integer! + + The value must be in range 0 to 10! +
+ +
+ Length (float): + + {{length}}
+ + This is not a valid float number! +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example29/index-jquery.html b/1.2.30/docs/examples/example-example29/index-jquery.html new file mode 100644 index 0000000000..10e3e10b93 --- /dev/null +++ b/1.2.30/docs/examples/example-example29/index-jquery.html @@ -0,0 +1,35 @@ + + + + + Example - example-example29-jquery + + + + + + + + + + +
+
+ Size (integer 0 - 10): + {{size}}
+ This is not valid integer! + + The value must be in range 0 to 10! +
+ +
+ Length (float): + + {{length}}
+ + This is not a valid float number! +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example29/index-production.html b/1.2.30/docs/examples/example-example29/index-production.html new file mode 100644 index 0000000000..c6ea326f19 --- /dev/null +++ b/1.2.30/docs/examples/example-example29/index-production.html @@ -0,0 +1,34 @@ + + + + + Example - example-example29-production + + + + + + + + + +
+
+ Size (integer 0 - 10): + {{size}}
+ This is not valid integer! + + The value must be in range 0 to 10! +
+ +
+ Length (float): + + {{length}}
+ + This is not a valid float number! +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example29/index.html b/1.2.30/docs/examples/example-example29/index.html new file mode 100644 index 0000000000..6233a41426 --- /dev/null +++ b/1.2.30/docs/examples/example-example29/index.html @@ -0,0 +1,34 @@ + + + + + Example - example-example29 + + + + + + + + + +
+
+ Size (integer 0 - 10): + {{size}}
+ This is not valid integer! + + The value must be in range 0 to 10! +
+ +
+ Length (float): + + {{length}}
+ + This is not a valid float number! +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example29/manifest.json b/1.2.30/docs/examples/example-example29/manifest.json new file mode 100644 index 0000000000..ded23b1dba --- /dev/null +++ b/1.2.30/docs/examples/example-example29/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example29", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example29/script.js b/1.2.30/docs/examples/example-example29/script.js new file mode 100644 index 0000000000..91a29d63eb --- /dev/null +++ b/1.2.30/docs/examples/example-example29/script.js @@ -0,0 +1,39 @@ + var app = angular.module('form-example1', []); + + var INTEGER_REGEXP = /^\-?\d+$/; + app.directive('integer', function() { + return { + require: 'ngModel', + link: function(scope, elm, attrs, ctrl) { + ctrl.$parsers.unshift(function(viewValue) { + if (INTEGER_REGEXP.test(viewValue)) { + // it is valid + ctrl.$setValidity('integer', true); + return viewValue; + } else { + // it is invalid, return undefined (no model update) + ctrl.$setValidity('integer', false); + return undefined; + } + }); + } + }; + }); + + var FLOAT_REGEXP = /^\-?\d+((\.|\,)\d+)?$/; + app.directive('smartFloat', function() { + return { + require: 'ngModel', + link: function(scope, elm, attrs, ctrl) { + ctrl.$parsers.unshift(function(viewValue) { + if (FLOAT_REGEXP.test(viewValue)) { + ctrl.$setValidity('float', true); + return parseFloat(viewValue.replace(',', '.')); + } else { + ctrl.$setValidity('float', false); + return undefined; + } + }); + } + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example3/index-debug.html b/1.2.30/docs/examples/example-example3/index-debug.html new file mode 100644 index 0000000000..37b0fdb8a5 --- /dev/null +++ b/1.2.30/docs/examples/example-example3/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example3-debug + + + + + + + + + + Drag ME + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example3/index-jquery.html b/1.2.30/docs/examples/example-example3/index-jquery.html new file mode 100644 index 0000000000..db9e405fbf --- /dev/null +++ b/1.2.30/docs/examples/example-example3/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example3-jquery + + + + + + + + + + + Drag ME + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example3/index-production.html b/1.2.30/docs/examples/example-example3/index-production.html new file mode 100644 index 0000000000..ea2186ba7b --- /dev/null +++ b/1.2.30/docs/examples/example-example3/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example3-production + + + + + + + + + + Drag ME + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example3/index.html b/1.2.30/docs/examples/example-example3/index.html new file mode 100644 index 0000000000..649b1496df --- /dev/null +++ b/1.2.30/docs/examples/example-example3/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example3 + + + + + + + + + + Drag ME + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example3/manifest.json b/1.2.30/docs/examples/example-example3/manifest.json new file mode 100644 index 0000000000..933b25d257 --- /dev/null +++ b/1.2.30/docs/examples/example-example3/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example3", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example3/script.js b/1.2.30/docs/examples/example-example3/script.js new file mode 100644 index 0000000000..d6c6ae6ad6 --- /dev/null +++ b/1.2.30/docs/examples/example-example3/script.js @@ -0,0 +1,36 @@ + angular.module('drag', []). + directive('draggable', function($document) { + return function(scope, element, attr) { + var startX = 0, startY = 0, x = 0, y = 0; + element.css({ + position: 'relative', + border: '1px solid red', + backgroundColor: 'lightgrey', + cursor: 'pointer', + display: 'block', + width: '65px' + }); + element.on('mousedown', function(event) { + // Prevent default dragging of selected content + event.preventDefault(); + startX = event.screenX - x; + startY = event.screenY - y; + $document.on('mousemove', mousemove); + $document.on('mouseup', mouseup); + }); + + function mousemove(event) { + y = event.screenY - startY; + x = event.screenX - startX; + element.css({ + top: y + 'px', + left: x + 'px' + }); + } + + function mouseup() { + $document.unbind('mousemove', mousemove); + $document.unbind('mouseup', mouseup); + } + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example30/index-debug.html b/1.2.30/docs/examples/example-example30/index-debug.html new file mode 100644 index 0000000000..c50c9dd032 --- /dev/null +++ b/1.2.30/docs/examples/example-example30/index-debug.html @@ -0,0 +1,25 @@ + + + + + Example - example-example30-debug + + + + + + + + + +
Some
+
model = {{content}}
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example30/index-jquery.html b/1.2.30/docs/examples/example-example30/index-jquery.html new file mode 100644 index 0000000000..0f1c62f088 --- /dev/null +++ b/1.2.30/docs/examples/example-example30/index-jquery.html @@ -0,0 +1,26 @@ + + + + + Example - example-example30-jquery + + + + + + + + + + +
Some
+
model = {{content}}
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example30/index-production.html b/1.2.30/docs/examples/example-example30/index-production.html new file mode 100644 index 0000000000..4e5d4486cd --- /dev/null +++ b/1.2.30/docs/examples/example-example30/index-production.html @@ -0,0 +1,25 @@ + + + + + Example - example-example30-production + + + + + + + + + +
Some
+
model = {{content}}
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example30/index.html b/1.2.30/docs/examples/example-example30/index.html new file mode 100644 index 0000000000..62c8161088 --- /dev/null +++ b/1.2.30/docs/examples/example-example30/index.html @@ -0,0 +1,25 @@ + + + + + Example - example-example30 + + + + + + + + + +
Some
+
model = {{content}}
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example30/manifest.json b/1.2.30/docs/examples/example-example30/manifest.json new file mode 100644 index 0000000000..af950406b2 --- /dev/null +++ b/1.2.30/docs/examples/example-example30/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example30", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example30/script.js b/1.2.30/docs/examples/example-example30/script.js new file mode 100644 index 0000000000..0487d87bdf --- /dev/null +++ b/1.2.30/docs/examples/example-example30/script.js @@ -0,0 +1,21 @@ + angular.module('form-example2', []).directive('contenteditable', function() { + return { + require: 'ngModel', + link: function(scope, elm, attrs, ctrl) { + // view -> model + elm.on('blur', function() { + scope.$apply(function() { + ctrl.$setViewValue(elm.html()); + }); + }); + + // model -> view + ctrl.$render = function() { + elm.html(ctrl.$viewValue); + }; + + // load init value from DOM + ctrl.$setViewValue(elm.html()); + } + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example31/index-debug.html b/1.2.30/docs/examples/example-example31/index-debug.html new file mode 100644 index 0000000000..1500ab5165 --- /dev/null +++ b/1.2.30/docs/examples/example-example31/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example31-debug + + + + + + + + + +
+
+ {{ 'World' | greet }} +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example31/index-jquery.html b/1.2.30/docs/examples/example-example31/index-jquery.html new file mode 100644 index 0000000000..69cecd1782 --- /dev/null +++ b/1.2.30/docs/examples/example-example31/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example31-jquery + + + + + + + + + + +
+
+ {{ 'World' | greet }} +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example31/index-production.html b/1.2.30/docs/examples/example-example31/index-production.html new file mode 100644 index 0000000000..0b2130b44b --- /dev/null +++ b/1.2.30/docs/examples/example-example31/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example31-production + + + + + + + + + +
+
+ {{ 'World' | greet }} +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example31/index.html b/1.2.30/docs/examples/example-example31/index.html new file mode 100644 index 0000000000..d1f1f3ac94 --- /dev/null +++ b/1.2.30/docs/examples/example-example31/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example31 + + + + + + + + + +
+
+ {{ 'World' | greet }} +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example31/manifest.json b/1.2.30/docs/examples/example-example31/manifest.json new file mode 100644 index 0000000000..455aaf8bde --- /dev/null +++ b/1.2.30/docs/examples/example-example31/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example31", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example31/protractor.js b/1.2.30/docs/examples/example-example31/protractor.js new file mode 100644 index 0000000000..7629c047a3 --- /dev/null +++ b/1.2.30/docs/examples/example-example31/protractor.js @@ -0,0 +1,3 @@ + it('should add Hello to the name', function() { + expect(element(by.binding("{{ 'World' | greet }}")).getText()).toEqual('Hello, World!'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example31/script.js b/1.2.30/docs/examples/example-example31/script.js new file mode 100644 index 0000000000..7a2bb6a413 --- /dev/null +++ b/1.2.30/docs/examples/example-example31/script.js @@ -0,0 +1,10 @@ + // declare a module + var myAppModule = angular.module('myApp', []); + + // configure the module. + // in this example we will create a greeting filter + myAppModule.filter('greet', function() { + return function(name) { + return 'Hello, ' + name + '!'; + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example32/index-debug.html b/1.2.30/docs/examples/example-example32/index-debug.html new file mode 100644 index 0000000000..097a9fb527 --- /dev/null +++ b/1.2.30/docs/examples/example-example32/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example32-debug + + + + + + + + + +
+ {{ greeting }} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example32/index-jquery.html b/1.2.30/docs/examples/example-example32/index-jquery.html new file mode 100644 index 0000000000..6f54307e63 --- /dev/null +++ b/1.2.30/docs/examples/example-example32/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example32-jquery + + + + + + + + + + +
+ {{ greeting }} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example32/index-production.html b/1.2.30/docs/examples/example-example32/index-production.html new file mode 100644 index 0000000000..2eb022f840 --- /dev/null +++ b/1.2.30/docs/examples/example-example32/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example32-production + + + + + + + + + +
+ {{ greeting }} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example32/index.html b/1.2.30/docs/examples/example-example32/index.html new file mode 100644 index 0000000000..5aff36acc0 --- /dev/null +++ b/1.2.30/docs/examples/example-example32/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example32 + + + + + + + + + +
+ {{ greeting }} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example32/manifest.json b/1.2.30/docs/examples/example-example32/manifest.json new file mode 100644 index 0000000000..2b02458fe6 --- /dev/null +++ b/1.2.30/docs/examples/example-example32/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example32", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example32/protractor.js b/1.2.30/docs/examples/example-example32/protractor.js new file mode 100644 index 0000000000..75a74cd400 --- /dev/null +++ b/1.2.30/docs/examples/example-example32/protractor.js @@ -0,0 +1,3 @@ + it('should add Hello to the name', function() { + expect(element(by.binding("{{ greeting }}")).getText()).toEqual('Bonjour World!'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example32/script.js b/1.2.30/docs/examples/example-example32/script.js new file mode 100644 index 0000000000..1ba616ac8c --- /dev/null +++ b/1.2.30/docs/examples/example-example32/script.js @@ -0,0 +1,35 @@ + angular.module('xmpl.service', []) + + .value('greeter', { + salutation: 'Hello', + localize: function(localization) { + this.salutation = localization.salutation; + }, + greet: function(name) { + return this.salutation + ' ' + name + '!'; + } + }) + + .value('user', { + load: function(name) { + this.name = name; + } + }); + + angular.module('xmpl.directive', []); + + angular.module('xmpl.filter', []); + + angular.module('xmpl', ['xmpl.service', 'xmpl.directive', 'xmpl.filter']) + + .run(function(greeter, user) { + // This is effectively part of the main method initialization code + greeter.localize({ + salutation: 'Bonjour' + }); + user.load('World'); + }) + + .controller('XmplController', function($scope, greeter, user){ + $scope.greeting = greeter.greet(user.name); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example33/index-debug.html b/1.2.30/docs/examples/example-example33/index-debug.html new file mode 100644 index 0000000000..6637b7f0df --- /dev/null +++ b/1.2.30/docs/examples/example-example33/index-debug.html @@ -0,0 +1,23 @@ + + + + + Example - example-example33-debug + + + + + + + + + +
+ Your name: + + +
+ {{greeting}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example33/index-jquery.html b/1.2.30/docs/examples/example-example33/index-jquery.html new file mode 100644 index 0000000000..02c41aae79 --- /dev/null +++ b/1.2.30/docs/examples/example-example33/index-jquery.html @@ -0,0 +1,24 @@ + + + + + Example - example-example33-jquery + + + + + + + + + + +
+ Your name: + + +
+ {{greeting}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example33/index-production.html b/1.2.30/docs/examples/example-example33/index-production.html new file mode 100644 index 0000000000..4521cb10a9 --- /dev/null +++ b/1.2.30/docs/examples/example-example33/index-production.html @@ -0,0 +1,23 @@ + + + + + Example - example-example33-production + + + + + + + + + +
+ Your name: + + +
+ {{greeting}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example33/index.html b/1.2.30/docs/examples/example-example33/index.html new file mode 100644 index 0000000000..b8c55245c3 --- /dev/null +++ b/1.2.30/docs/examples/example-example33/index.html @@ -0,0 +1,23 @@ + + + + + Example - example-example33 + + + + + + + + + +
+ Your name: + + +
+ {{greeting}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example33/manifest.json b/1.2.30/docs/examples/example-example33/manifest.json new file mode 100644 index 0000000000..04c59ed6c1 --- /dev/null +++ b/1.2.30/docs/examples/example-example33/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example33", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example33/script.js b/1.2.30/docs/examples/example-example33/script.js new file mode 100644 index 0000000000..301f01e5a4 --- /dev/null +++ b/1.2.30/docs/examples/example-example33/script.js @@ -0,0 +1,8 @@ + angular.module('scopeExample', []) + .controller('MyController', ['$scope', function($scope) { + $scope.username = 'World'; + + $scope.sayHello = function() { + $scope.greeting = 'Hello ' + $scope.username + '!'; + }; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example34/index-debug.html b/1.2.30/docs/examples/example-example34/index-debug.html new file mode 100644 index 0000000000..52aaa0bc04 --- /dev/null +++ b/1.2.30/docs/examples/example-example34/index-debug.html @@ -0,0 +1,27 @@ + + + + + Example - example-example34-debug + + + + + + + + + + +
+
+ Hello {{name}}! +
+
+
    +
  1. {{name}} from {{department}}
  2. +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example34/index-jquery.html b/1.2.30/docs/examples/example-example34/index-jquery.html new file mode 100644 index 0000000000..e660d4e96c --- /dev/null +++ b/1.2.30/docs/examples/example-example34/index-jquery.html @@ -0,0 +1,28 @@ + + + + + Example - example-example34-jquery + + + + + + + + + + + +
+
+ Hello {{name}}! +
+
+
    +
  1. {{name}} from {{department}}
  2. +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example34/index-production.html b/1.2.30/docs/examples/example-example34/index-production.html new file mode 100644 index 0000000000..0b4794e954 --- /dev/null +++ b/1.2.30/docs/examples/example-example34/index-production.html @@ -0,0 +1,27 @@ + + + + + Example - example-example34-production + + + + + + + + + + +
+
+ Hello {{name}}! +
+
+
    +
  1. {{name}} from {{department}}
  2. +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example34/index.html b/1.2.30/docs/examples/example-example34/index.html new file mode 100644 index 0000000000..4fc89604b2 --- /dev/null +++ b/1.2.30/docs/examples/example-example34/index.html @@ -0,0 +1,27 @@ + + + + + Example - example-example34 + + + + + + + + + + +
+
+ Hello {{name}}! +
+
+
    +
  1. {{name}} from {{department}}
  2. +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example34/manifest.json b/1.2.30/docs/examples/example-example34/manifest.json new file mode 100644 index 0000000000..b21671fcf2 --- /dev/null +++ b/1.2.30/docs/examples/example-example34/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example34", + "files": [ + "index-production.html", + "script.js", + "style.css" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example34/script.js b/1.2.30/docs/examples/example-example34/script.js new file mode 100644 index 0000000000..d37dabc30f --- /dev/null +++ b/1.2.30/docs/examples/example-example34/script.js @@ -0,0 +1,8 @@ + angular.module('scopeExample', []) + .controller('GreetController', ['$scope', '$rootScope', function($scope, $rootScope) { + $scope.name = 'World'; + $rootScope.department = 'Angular'; + }]) + .controller('ListController', ['$scope', function($scope) { + $scope.names = ['Igor', 'Misko', 'Vojta']; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example34/style.css b/1.2.30/docs/examples/example-example34/style.css new file mode 100644 index 0000000000..d2a95564e1 --- /dev/null +++ b/1.2.30/docs/examples/example-example34/style.css @@ -0,0 +1,5 @@ + .show-scope-demo.ng-scope, + .show-scope-demo .ng-scope { + border: 1px solid red; + margin: 3px; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example35/index-debug.html b/1.2.30/docs/examples/example-example35/index-debug.html new file mode 100644 index 0000000000..697f103819 --- /dev/null +++ b/1.2.30/docs/examples/example-example35/index-debug.html @@ -0,0 +1,32 @@ + + + + + Example - example-example35-debug + + + + + + + + + +
+ Root scope MyEvent count: {{count}} +
    +
  • + + +
    + Middle scope MyEvent count: {{count}} +
      +
    • + Leaf scope MyEvent count: {{count}} +
    • +
    +
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example35/index-jquery.html b/1.2.30/docs/examples/example-example35/index-jquery.html new file mode 100644 index 0000000000..a008fb9032 --- /dev/null +++ b/1.2.30/docs/examples/example-example35/index-jquery.html @@ -0,0 +1,33 @@ + + + + + Example - example-example35-jquery + + + + + + + + + + +
+ Root scope MyEvent count: {{count}} +
    +
  • + + +
    + Middle scope MyEvent count: {{count}} +
      +
    • + Leaf scope MyEvent count: {{count}} +
    • +
    +
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example35/index-production.html b/1.2.30/docs/examples/example-example35/index-production.html new file mode 100644 index 0000000000..5da1abc67e --- /dev/null +++ b/1.2.30/docs/examples/example-example35/index-production.html @@ -0,0 +1,32 @@ + + + + + Example - example-example35-production + + + + + + + + + +
+ Root scope MyEvent count: {{count}} +
    +
  • + + +
    + Middle scope MyEvent count: {{count}} +
      +
    • + Leaf scope MyEvent count: {{count}} +
    • +
    +
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example35/index.html b/1.2.30/docs/examples/example-example35/index.html new file mode 100644 index 0000000000..0fdd83dda1 --- /dev/null +++ b/1.2.30/docs/examples/example-example35/index.html @@ -0,0 +1,32 @@ + + + + + Example - example-example35 + + + + + + + + + +
+ Root scope MyEvent count: {{count}} +
    +
  • + + +
    + Middle scope MyEvent count: {{count}} +
      +
    • + Leaf scope MyEvent count: {{count}} +
    • +
    +
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example35/manifest.json b/1.2.30/docs/examples/example-example35/manifest.json new file mode 100644 index 0000000000..1b72f83f81 --- /dev/null +++ b/1.2.30/docs/examples/example-example35/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example35", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example35/script.js b/1.2.30/docs/examples/example-example35/script.js new file mode 100644 index 0000000000..a8eb7f9872 --- /dev/null +++ b/1.2.30/docs/examples/example-example35/script.js @@ -0,0 +1,7 @@ + angular.module('eventExample', []) + .controller('EventController', ['$scope', function($scope) { + $scope.count = 0; + $scope.$on('MyEvent', function() { + $scope.count++; + }); + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example36/index-debug.html b/1.2.30/docs/examples/example-example36/index-debug.html new file mode 100644 index 0000000000..836c32e5b0 --- /dev/null +++ b/1.2.30/docs/examples/example-example36/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example36-debug + + + + + + + + + +
+

Let's try this simple notify service, injected into the controller...

+ + +

(you have to click 3 times to see an alert)

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example36/index-jquery.html b/1.2.30/docs/examples/example-example36/index-jquery.html new file mode 100644 index 0000000000..d2f1adc66a --- /dev/null +++ b/1.2.30/docs/examples/example-example36/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example36-jquery + + + + + + + + + + +
+

Let's try this simple notify service, injected into the controller...

+ + +

(you have to click 3 times to see an alert)

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example36/index-production.html b/1.2.30/docs/examples/example-example36/index-production.html new file mode 100644 index 0000000000..71dab54ccd --- /dev/null +++ b/1.2.30/docs/examples/example-example36/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example36-production + + + + + + + + + +
+

Let's try this simple notify service, injected into the controller...

+ + +

(you have to click 3 times to see an alert)

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example36/index.html b/1.2.30/docs/examples/example-example36/index.html new file mode 100644 index 0000000000..505b56e656 --- /dev/null +++ b/1.2.30/docs/examples/example-example36/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example36 + + + + + + + + + +
+

Let's try this simple notify service, injected into the controller...

+ + +

(you have to click 3 times to see an alert)

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example36/manifest.json b/1.2.30/docs/examples/example-example36/manifest.json new file mode 100644 index 0000000000..568945df75 --- /dev/null +++ b/1.2.30/docs/examples/example-example36/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example36", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example36/protractor.js b/1.2.30/docs/examples/example-example36/protractor.js new file mode 100644 index 0000000000..943e356ace --- /dev/null +++ b/1.2.30/docs/examples/example-example36/protractor.js @@ -0,0 +1,4 @@ + it('should test service', function() { + expect(element(by.id('simple')).element(by.model('message')).getAttribute('value')) + .toEqual('test'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example36/script.js b/1.2.30/docs/examples/example-example36/script.js new file mode 100644 index 0000000000..12aabc558a --- /dev/null +++ b/1.2.30/docs/examples/example-example36/script.js @@ -0,0 +1,17 @@ + angular. + module('myServiceModule', []). + controller('MyController', ['$scope','notify', function ($scope, notify) { + $scope.callNotify = function(msg) { + notify(msg); + }; + }]). + factory('notify', ['$window', function(win) { + var msgs = []; + return function(msg) { + msgs.push(msg); + if (msgs.length == 3) { + win.alert(msgs.join("\n")); + msgs = []; + } + }; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example37/index-debug.html b/1.2.30/docs/examples/example-example37/index-debug.html new file mode 100644 index 0000000000..f2b6963aad --- /dev/null +++ b/1.2.30/docs/examples/example-example37/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example37-debug + + + + + + + + + +
+

Let's try the notify service, that is implicitly injected into the controller...

+ + +

(you have to click 3 times to see an alert)

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example37/index-jquery.html b/1.2.30/docs/examples/example-example37/index-jquery.html new file mode 100644 index 0000000000..47996f5e1e --- /dev/null +++ b/1.2.30/docs/examples/example-example37/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example37-jquery + + + + + + + + + + +
+

Let's try the notify service, that is implicitly injected into the controller...

+ + +

(you have to click 3 times to see an alert)

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example37/index-production.html b/1.2.30/docs/examples/example-example37/index-production.html new file mode 100644 index 0000000000..5e3911fc85 --- /dev/null +++ b/1.2.30/docs/examples/example-example37/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example37-production + + + + + + + + + +
+

Let's try the notify service, that is implicitly injected into the controller...

+ + +

(you have to click 3 times to see an alert)

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example37/index.html b/1.2.30/docs/examples/example-example37/index.html new file mode 100644 index 0000000000..e2bdc2241d --- /dev/null +++ b/1.2.30/docs/examples/example-example37/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example37 + + + + + + + + + +
+

Let's try the notify service, that is implicitly injected into the controller...

+ + +

(you have to click 3 times to see an alert)

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example37/manifest.json b/1.2.30/docs/examples/example-example37/manifest.json new file mode 100644 index 0000000000..d3a3b54441 --- /dev/null +++ b/1.2.30/docs/examples/example-example37/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example37", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example37/script.js b/1.2.30/docs/examples/example-example37/script.js new file mode 100644 index 0000000000..bee4e0ef63 --- /dev/null +++ b/1.2.30/docs/examples/example-example37/script.js @@ -0,0 +1,16 @@ + angular.module('myServiceModuleDI', []). + factory('notify', function($window) { + var msgs = []; + return function(msg) { + msgs.push(msg); + if (msgs.length == 3) { + $window.alert(msgs.join("\n")); + msgs = []; + } + }; + }). + controller('MyController', function($scope, notify) { + $scope.callNotify = function(msg) { + notify(msg); + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example38/index-debug.html b/1.2.30/docs/examples/example-example38/index-debug.html new file mode 100644 index 0000000000..c411527586 --- /dev/null +++ b/1.2.30/docs/examples/example-example38/index-debug.html @@ -0,0 +1,46 @@ + + + + + Example - example-example38-debug + + + + + + + + +
+
+Name:
+E-mail:
+Gender: male +female
+ + +
+
form = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example38/index-jquery.html b/1.2.30/docs/examples/example-example38/index-jquery.html new file mode 100644 index 0000000000..29751ab4ba --- /dev/null +++ b/1.2.30/docs/examples/example-example38/index-jquery.html @@ -0,0 +1,47 @@ + + + + + Example - example-example38-jquery + + + + + + + + + +
+
+Name:
+E-mail:
+Gender: male +female
+ + +
+
form = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example38/index-production.html b/1.2.30/docs/examples/example-example38/index-production.html new file mode 100644 index 0000000000..1096b36f1d --- /dev/null +++ b/1.2.30/docs/examples/example-example38/index-production.html @@ -0,0 +1,46 @@ + + + + + Example - example-example38-production + + + + + + + + +
+
+Name:
+E-mail:
+Gender: male +female
+ + +
+
form = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example38/index.html b/1.2.30/docs/examples/example-example38/index.html new file mode 100644 index 0000000000..a24526b825 --- /dev/null +++ b/1.2.30/docs/examples/example-example38/index.html @@ -0,0 +1,46 @@ + + + + + Example - example-example38 + + + + + + + + +
+
+Name:
+E-mail:
+Gender: male +female
+ + +
+
form = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example38/manifest.json b/1.2.30/docs/examples/example-example38/manifest.json new file mode 100644 index 0000000000..fe77757310 --- /dev/null +++ b/1.2.30/docs/examples/example-example38/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example38", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example39/index-debug.html b/1.2.30/docs/examples/example-example39/index-debug.html new file mode 100644 index 0000000000..0e481c64d6 --- /dev/null +++ b/1.2.30/docs/examples/example-example39/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example39-debug + + + + + + + + + +
+ I can add: {{a}} + {{b}} = {{ a+b }} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example39/index-jquery.html b/1.2.30/docs/examples/example-example39/index-jquery.html new file mode 100644 index 0000000000..e5b053f6fd --- /dev/null +++ b/1.2.30/docs/examples/example-example39/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example39-jquery + + + + + + + + + + +
+ I can add: {{a}} + {{b}} = {{ a+b }} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example39/index-production.html b/1.2.30/docs/examples/example-example39/index-production.html new file mode 100644 index 0000000000..5f3d343501 --- /dev/null +++ b/1.2.30/docs/examples/example-example39/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example39-production + + + + + + + + + +
+ I can add: {{a}} + {{b}} = {{ a+b }} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example39/index.html b/1.2.30/docs/examples/example-example39/index.html new file mode 100644 index 0000000000..9d08df3a8c --- /dev/null +++ b/1.2.30/docs/examples/example-example39/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example39 + + + + + + + + + +
+ I can add: {{a}} + {{b}} = {{ a+b }} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example39/manifest.json b/1.2.30/docs/examples/example-example39/manifest.json new file mode 100644 index 0000000000..46e0f6fa0f --- /dev/null +++ b/1.2.30/docs/examples/example-example39/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example39", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example39/script.js b/1.2.30/docs/examples/example-example39/script.js new file mode 100644 index 0000000000..68333d37e5 --- /dev/null +++ b/1.2.30/docs/examples/example-example39/script.js @@ -0,0 +1,4 @@ +angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) { + $scope.a = 1; + $scope.b = 2; +}); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example4/app.js b/1.2.30/docs/examples/example-example4/app.js new file mode 100644 index 0000000000..02a28d9a32 --- /dev/null +++ b/1.2.30/docs/examples/example-example4/app.js @@ -0,0 +1,13 @@ + var myApp = angular.module('spicyApp1', []); + + myApp.controller('SpicyController', ['$scope', function($scope) { + $scope.spice = 'very'; + + $scope.chiliSpicy = function() { + $scope.spice = 'chili'; + }; + + $scope.jalapenoSpicy = function() { + $scope.spice = 'jalapeño'; + }; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example4/index-debug.html b/1.2.30/docs/examples/example-example4/index-debug.html new file mode 100644 index 0000000000..3d38433812 --- /dev/null +++ b/1.2.30/docs/examples/example-example4/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example4-debug + + + + + + + + + +
+ + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example4/index-jquery.html b/1.2.30/docs/examples/example-example4/index-jquery.html new file mode 100644 index 0000000000..428c3c24e2 --- /dev/null +++ b/1.2.30/docs/examples/example-example4/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example4-jquery + + + + + + + + + + +
+ + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example4/index-production.html b/1.2.30/docs/examples/example-example4/index-production.html new file mode 100644 index 0000000000..c647a9c63c --- /dev/null +++ b/1.2.30/docs/examples/example-example4/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example4-production + + + + + + + + + +
+ + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example4/index.html b/1.2.30/docs/examples/example-example4/index.html new file mode 100644 index 0000000000..26376bbf11 --- /dev/null +++ b/1.2.30/docs/examples/example-example4/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example4 + + + + + + + + + +
+ + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example4/manifest.json b/1.2.30/docs/examples/example-example4/manifest.json new file mode 100644 index 0000000000..13bfb4090f --- /dev/null +++ b/1.2.30/docs/examples/example-example4/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example4", + "files": [ + "index-production.html", + "app.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example40/index-debug.html b/1.2.30/docs/examples/example-example40/index-debug.html new file mode 100644 index 0000000000..3be6585501 --- /dev/null +++ b/1.2.30/docs/examples/example-example40/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example40-debug + + + + + + + + + + +
+ Go to bottom + You're at the bottom! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example40/index-jquery.html b/1.2.30/docs/examples/example-example40/index-jquery.html new file mode 100644 index 0000000000..fe308cfaf2 --- /dev/null +++ b/1.2.30/docs/examples/example-example40/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example40-jquery + + + + + + + + + + + +
+ Go to bottom + You're at the bottom! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example40/index-production.html b/1.2.30/docs/examples/example-example40/index-production.html new file mode 100644 index 0000000000..d6c71252a6 --- /dev/null +++ b/1.2.30/docs/examples/example-example40/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example40-production + + + + + + + + + + +
+ Go to bottom + You're at the bottom! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example40/index.html b/1.2.30/docs/examples/example-example40/index.html new file mode 100644 index 0000000000..93e8e2f432 --- /dev/null +++ b/1.2.30/docs/examples/example-example40/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example40 + + + + + + + + + + +
+ Go to bottom + You're at the bottom! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example40/manifest.json b/1.2.30/docs/examples/example-example40/manifest.json new file mode 100644 index 0000000000..7816b095e5 --- /dev/null +++ b/1.2.30/docs/examples/example-example40/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example40", + "files": [ + "index-production.html", + "script.js", + "style.css" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example40/script.js b/1.2.30/docs/examples/example-example40/script.js new file mode 100644 index 0000000000..a4bb9d01ec --- /dev/null +++ b/1.2.30/docs/examples/example-example40/script.js @@ -0,0 +1,10 @@ + function ScrollCtrl($scope, $location, $anchorScroll) { + $scope.gotoBottom = function (){ + // set the location.hash to the id of + // the element you wish to scroll to. + $location.hash('bottom'); + + // call $anchorScroll() + $anchorScroll(); + }; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example40/style.css b/1.2.30/docs/examples/example-example40/style.css new file mode 100644 index 0000000000..a9bffdc2d9 --- /dev/null +++ b/1.2.30/docs/examples/example-example40/style.css @@ -0,0 +1,9 @@ + #scrollArea { + height: 350px; + overflow: auto; + } + + #bottom { + display: block; + margin-top: 2000px; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example41/index-debug.html b/1.2.30/docs/examples/example-example41/index-debug.html new file mode 100644 index 0000000000..fc23a69af3 --- /dev/null +++ b/1.2.30/docs/examples/example-example41/index-debug.html @@ -0,0 +1,36 @@ + + + + + Example - example-example41-debug + + + + + + + + + + +
+ + + + +

Cached Values

+
+ + : + +
+ +

Cache Info

+
+ + : + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example41/index-jquery.html b/1.2.30/docs/examples/example-example41/index-jquery.html new file mode 100644 index 0000000000..8c9954d40e --- /dev/null +++ b/1.2.30/docs/examples/example-example41/index-jquery.html @@ -0,0 +1,37 @@ + + + + + Example - example-example41-jquery + + + + + + + + + + + +
+ + + + +

Cached Values

+
+ + : + +
+ +

Cache Info

+
+ + : + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example41/index-production.html b/1.2.30/docs/examples/example-example41/index-production.html new file mode 100644 index 0000000000..35acf34989 --- /dev/null +++ b/1.2.30/docs/examples/example-example41/index-production.html @@ -0,0 +1,36 @@ + + + + + Example - example-example41-production + + + + + + + + + + +
+ + + + +

Cached Values

+
+ + : + +
+ +

Cache Info

+
+ + : + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example41/index.html b/1.2.30/docs/examples/example-example41/index.html new file mode 100644 index 0000000000..d6aad16753 --- /dev/null +++ b/1.2.30/docs/examples/example-example41/index.html @@ -0,0 +1,36 @@ + + + + + Example - example-example41 + + + + + + + + + + +
+ + + + +

Cached Values

+
+ + : + +
+ +

Cache Info

+
+ + : + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example41/manifest.json b/1.2.30/docs/examples/example-example41/manifest.json new file mode 100644 index 0000000000..f7d6429a4e --- /dev/null +++ b/1.2.30/docs/examples/example-example41/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example41", + "files": [ + "index-production.html", + "script.js", + "style.css" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example41/script.js b/1.2.30/docs/examples/example-example41/script.js new file mode 100644 index 0000000000..2a682cdc7d --- /dev/null +++ b/1.2.30/docs/examples/example-example41/script.js @@ -0,0 +1,11 @@ + angular.module('cacheExampleApp', []). + controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) { + $scope.keys = []; + $scope.cache = $cacheFactory('cacheId'); + $scope.put = function(key, value) { + if ($scope.cache.get(key) === undefined) { + $scope.keys.push(key); + } + $scope.cache.put(key, value === undefined ? null : value); + }; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example41/style.css b/1.2.30/docs/examples/example-example41/style.css new file mode 100644 index 0000000000..301a3b0a5c --- /dev/null +++ b/1.2.30/docs/examples/example-example41/style.css @@ -0,0 +1,3 @@ + p { + margin: 10px 0 3px; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example42/index-debug.html b/1.2.30/docs/examples/example-example42/index-debug.html new file mode 100644 index 0000000000..ca601d78c0 --- /dev/null +++ b/1.2.30/docs/examples/example-example42/index-debug.html @@ -0,0 +1,52 @@ + + + + + Example - example-example42-debug + + + + + + + + + +
+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example42/index-jquery.html b/1.2.30/docs/examples/example-example42/index-jquery.html new file mode 100644 index 0000000000..449419729b --- /dev/null +++ b/1.2.30/docs/examples/example-example42/index-jquery.html @@ -0,0 +1,53 @@ + + + + + Example - example-example42-jquery + + + + + + + + + + +
+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example42/index-production.html b/1.2.30/docs/examples/example-example42/index-production.html new file mode 100644 index 0000000000..95cb366f3e --- /dev/null +++ b/1.2.30/docs/examples/example-example42/index-production.html @@ -0,0 +1,52 @@ + + + + + Example - example-example42-production + + + + + + + + + +
+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example42/index.html b/1.2.30/docs/examples/example-example42/index.html new file mode 100644 index 0000000000..909897456f --- /dev/null +++ b/1.2.30/docs/examples/example-example42/index.html @@ -0,0 +1,52 @@ + + + + + Example - example-example42 + + + + + + + + + +
+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example42/manifest.json b/1.2.30/docs/examples/example-example42/manifest.json new file mode 100644 index 0000000000..c5e003ba7a --- /dev/null +++ b/1.2.30/docs/examples/example-example42/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example42", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example42/protractor.js b/1.2.30/docs/examples/example-example42/protractor.js new file mode 100644 index 0000000000..f04c931a99 --- /dev/null +++ b/1.2.30/docs/examples/example-example42/protractor.js @@ -0,0 +1,9 @@ + it('should auto compile', function() { + var textarea = $('textarea'); + var output = $('div[compile]'); + // The initial state reads 'Hello Angular'. + expect(output.getText()).toBe('Hello Angular'); + textarea.clear(); + textarea.sendKeys('{{name}}!'); + expect(output.getText()).toBe('Angular!'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example43/index-debug.html b/1.2.30/docs/examples/example-example43/index-debug.html new file mode 100644 index 0000000000..4caae98ca9 --- /dev/null +++ b/1.2.30/docs/examples/example-example43/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example43-debug + + + + + + + + +
+ link 1 (link, don't reload)
+ link 2 (link, don't reload)
+ link 3 (link, reload!)
+ anchor (link, don't reload)
+ anchor (no link)
+ link (link, change location) + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example43/index-jquery.html b/1.2.30/docs/examples/example-example43/index-jquery.html new file mode 100644 index 0000000000..2cba6ce7e1 --- /dev/null +++ b/1.2.30/docs/examples/example-example43/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example43-jquery + + + + + + + + + +
+ link 1 (link, don't reload)
+ link 2 (link, don't reload)
+ link 3 (link, reload!)
+ anchor (link, don't reload)
+ anchor (no link)
+ link (link, change location) + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example43/index-production.html b/1.2.30/docs/examples/example-example43/index-production.html new file mode 100644 index 0000000000..37fae07022 --- /dev/null +++ b/1.2.30/docs/examples/example-example43/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example43-production + + + + + + + + +
+ link 1 (link, don't reload)
+ link 2 (link, don't reload)
+ link 3 (link, reload!)
+ anchor (link, don't reload)
+ anchor (no link)
+ link (link, change location) + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example43/index.html b/1.2.30/docs/examples/example-example43/index.html new file mode 100644 index 0000000000..1bc968b7f7 --- /dev/null +++ b/1.2.30/docs/examples/example-example43/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example43 + + + + + + + + +
+ link 1 (link, don't reload)
+ link 2 (link, don't reload)
+ link 3 (link, reload!)
+ anchor (link, don't reload)
+ anchor (no link)
+ link (link, change location) + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example43/manifest.json b/1.2.30/docs/examples/example-example43/manifest.json new file mode 100644 index 0000000000..211ff9b203 --- /dev/null +++ b/1.2.30/docs/examples/example-example43/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example43", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example43/protractor.js b/1.2.30/docs/examples/example-example43/protractor.js new file mode 100644 index 0000000000..bc0baf6ec3 --- /dev/null +++ b/1.2.30/docs/examples/example-example43/protractor.js @@ -0,0 +1,54 @@ + it('should execute ng-click but not reload when href without value', function() { + element(by.id('link-1')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('1'); + expect(element(by.id('link-1')).getAttribute('href')).toBe(''); + }); + + it('should execute ng-click but not reload when href empty string', function() { + element(by.id('link-2')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('2'); + expect(element(by.id('link-2')).getAttribute('href')).toBe(''); + }); + + it('should execute ng-click and change url when ng-href specified', function() { + expect(element(by.id('link-3')).getAttribute('href')).toMatch(/\/123$/); + + element(by.id('link-3')).click(); + + // At this point, we navigate away from an Angular page, so we need + // to use browser.driver to get the base webdriver. + + browser.wait(function() { + return browser.driver.getCurrentUrl().then(function(url) { + return url.match(/\/123$/); + }); + }, 5000, 'page should navigate to /123'); + }); + + xit('should execute ng-click but not reload when href empty string and name specified', function() { + element(by.id('link-4')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('4'); + expect(element(by.id('link-4')).getAttribute('href')).toBe(''); + }); + + it('should execute ng-click but not reload when no href but name specified', function() { + element(by.id('link-5')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('5'); + expect(element(by.id('link-5')).getAttribute('href')).toBe(null); + }); + + it('should only change url when only ng-href', function() { + element(by.model('value')).clear(); + element(by.model('value')).sendKeys('6'); + expect(element(by.id('link-6')).getAttribute('href')).toMatch(/\/6$/); + + element(by.id('link-6')).click(); + + // At this point, we navigate away from an Angular page, so we need + // to use browser.driver to get the base webdriver. + browser.wait(function() { + return browser.driver.getCurrentUrl().then(function(url) { + return url.match(/\/6$/); + }); + }, 5000, 'page should navigate to /6'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example44/index-debug.html b/1.2.30/docs/examples/example-example44/index-debug.html new file mode 100644 index 0000000000..018d8157cd --- /dev/null +++ b/1.2.30/docs/examples/example-example44/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example44-debug + + + + + + + + + Click me to toggle:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example44/index-jquery.html b/1.2.30/docs/examples/example-example44/index-jquery.html new file mode 100644 index 0000000000..3e2c678e54 --- /dev/null +++ b/1.2.30/docs/examples/example-example44/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example44-jquery + + + + + + + + + + Click me to toggle:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example44/index-production.html b/1.2.30/docs/examples/example-example44/index-production.html new file mode 100644 index 0000000000..e1ab4d76d0 --- /dev/null +++ b/1.2.30/docs/examples/example-example44/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example44-production + + + + + + + + + Click me to toggle:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example44/index.html b/1.2.30/docs/examples/example-example44/index.html new file mode 100644 index 0000000000..7610254d17 --- /dev/null +++ b/1.2.30/docs/examples/example-example44/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example44 + + + + + + + + + Click me to toggle:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example44/manifest.json b/1.2.30/docs/examples/example-example44/manifest.json new file mode 100644 index 0000000000..dac1269e57 --- /dev/null +++ b/1.2.30/docs/examples/example-example44/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example44", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example44/protractor.js b/1.2.30/docs/examples/example-example44/protractor.js new file mode 100644 index 0000000000..30944fc732 --- /dev/null +++ b/1.2.30/docs/examples/example-example44/protractor.js @@ -0,0 +1,5 @@ + it('should toggle button', function() { + expect(element(by.css('button')).getAttribute('disabled')).toBeFalsy(); + element(by.model('checked')).click(); + expect(element(by.css('button')).getAttribute('disabled')).toBeTruthy(); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example45/index-debug.html b/1.2.30/docs/examples/example-example45/index-debug.html new file mode 100644 index 0000000000..0da0367673 --- /dev/null +++ b/1.2.30/docs/examples/example-example45/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example45-debug + + + + + + + + + Check me to check both:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example45/index-jquery.html b/1.2.30/docs/examples/example-example45/index-jquery.html new file mode 100644 index 0000000000..d872eb8716 --- /dev/null +++ b/1.2.30/docs/examples/example-example45/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example45-jquery + + + + + + + + + + Check me to check both:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example45/index-production.html b/1.2.30/docs/examples/example-example45/index-production.html new file mode 100644 index 0000000000..fac9224903 --- /dev/null +++ b/1.2.30/docs/examples/example-example45/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example45-production + + + + + + + + + Check me to check both:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example45/index.html b/1.2.30/docs/examples/example-example45/index.html new file mode 100644 index 0000000000..6bf934c8c4 --- /dev/null +++ b/1.2.30/docs/examples/example-example45/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example45 + + + + + + + + + Check me to check both:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example45/manifest.json b/1.2.30/docs/examples/example-example45/manifest.json new file mode 100644 index 0000000000..7d231011c4 --- /dev/null +++ b/1.2.30/docs/examples/example-example45/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example45", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example45/protractor.js b/1.2.30/docs/examples/example-example45/protractor.js new file mode 100644 index 0000000000..eb76243835 --- /dev/null +++ b/1.2.30/docs/examples/example-example45/protractor.js @@ -0,0 +1,5 @@ + it('should check both checkBoxes', function() { + expect(element(by.id('checkSlave')).getAttribute('checked')).toBeFalsy(); + element(by.model('master')).click(); + expect(element(by.id('checkSlave')).getAttribute('checked')).toBeTruthy(); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example46/index-debug.html b/1.2.30/docs/examples/example-example46/index-debug.html new file mode 100644 index 0000000000..1290a998d8 --- /dev/null +++ b/1.2.30/docs/examples/example-example46/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example46-debug + + + + + + + + + Check me to make text readonly:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example46/index-jquery.html b/1.2.30/docs/examples/example-example46/index-jquery.html new file mode 100644 index 0000000000..aa528e8ecf --- /dev/null +++ b/1.2.30/docs/examples/example-example46/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example46-jquery + + + + + + + + + + Check me to make text readonly:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example46/index-production.html b/1.2.30/docs/examples/example-example46/index-production.html new file mode 100644 index 0000000000..37d904f599 --- /dev/null +++ b/1.2.30/docs/examples/example-example46/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example46-production + + + + + + + + + Check me to make text readonly:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example46/index.html b/1.2.30/docs/examples/example-example46/index.html new file mode 100644 index 0000000000..1633ed1bcc --- /dev/null +++ b/1.2.30/docs/examples/example-example46/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example46 + + + + + + + + + Check me to make text readonly:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example46/manifest.json b/1.2.30/docs/examples/example-example46/manifest.json new file mode 100644 index 0000000000..bbc607ef13 --- /dev/null +++ b/1.2.30/docs/examples/example-example46/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example46", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example46/protractor.js b/1.2.30/docs/examples/example-example46/protractor.js new file mode 100644 index 0000000000..0f91387342 --- /dev/null +++ b/1.2.30/docs/examples/example-example46/protractor.js @@ -0,0 +1,5 @@ + it('should toggle readonly attr', function() { + expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeFalsy(); + element(by.model('checked')).click(); + expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeTruthy(); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example47/index-debug.html b/1.2.30/docs/examples/example-example47/index-debug.html new file mode 100644 index 0000000000..9c66ae3231 --- /dev/null +++ b/1.2.30/docs/examples/example-example47/index-debug.html @@ -0,0 +1,20 @@ + + + + + Example - example-example47-debug + + + + + + + + + Check me to select:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example47/index-jquery.html b/1.2.30/docs/examples/example-example47/index-jquery.html new file mode 100644 index 0000000000..43b1aaeffe --- /dev/null +++ b/1.2.30/docs/examples/example-example47/index-jquery.html @@ -0,0 +1,21 @@ + + + + + Example - example-example47-jquery + + + + + + + + + + Check me to select:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example47/index-production.html b/1.2.30/docs/examples/example-example47/index-production.html new file mode 100644 index 0000000000..dfabd72254 --- /dev/null +++ b/1.2.30/docs/examples/example-example47/index-production.html @@ -0,0 +1,20 @@ + + + + + Example - example-example47-production + + + + + + + + + Check me to select:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example47/index.html b/1.2.30/docs/examples/example-example47/index.html new file mode 100644 index 0000000000..05c7d5e89d --- /dev/null +++ b/1.2.30/docs/examples/example-example47/index.html @@ -0,0 +1,20 @@ + + + + + Example - example-example47 + + + + + + + + + Check me to select:
+ + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example47/manifest.json b/1.2.30/docs/examples/example-example47/manifest.json new file mode 100644 index 0000000000..16357cf50d --- /dev/null +++ b/1.2.30/docs/examples/example-example47/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example47", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example47/protractor.js b/1.2.30/docs/examples/example-example47/protractor.js new file mode 100644 index 0000000000..e51846f4a6 --- /dev/null +++ b/1.2.30/docs/examples/example-example47/protractor.js @@ -0,0 +1,5 @@ + it('should select Greetings!', function() { + expect(element(by.id('greet')).getAttribute('selected')).toBeFalsy(); + element(by.model('selected')).click(); + expect(element(by.id('greet')).getAttribute('selected')).toBeTruthy(); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example48/index-debug.html b/1.2.30/docs/examples/example-example48/index-debug.html new file mode 100644 index 0000000000..228ebb1d23 --- /dev/null +++ b/1.2.30/docs/examples/example-example48/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example48-debug + + + + + + + + + Check me check multiple:
+
+ Show/Hide me +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example48/index-jquery.html b/1.2.30/docs/examples/example-example48/index-jquery.html new file mode 100644 index 0000000000..19f5e441cc --- /dev/null +++ b/1.2.30/docs/examples/example-example48/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example48-jquery + + + + + + + + + + Check me check multiple:
+
+ Show/Hide me +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example48/index-production.html b/1.2.30/docs/examples/example-example48/index-production.html new file mode 100644 index 0000000000..cfb67e92ca --- /dev/null +++ b/1.2.30/docs/examples/example-example48/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example48-production + + + + + + + + + Check me check multiple:
+
+ Show/Hide me +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example48/index.html b/1.2.30/docs/examples/example-example48/index.html new file mode 100644 index 0000000000..d8ad875e01 --- /dev/null +++ b/1.2.30/docs/examples/example-example48/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example48 + + + + + + + + + Check me check multiple:
+
+ Show/Hide me +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example48/manifest.json b/1.2.30/docs/examples/example-example48/manifest.json new file mode 100644 index 0000000000..eb0528a18a --- /dev/null +++ b/1.2.30/docs/examples/example-example48/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example48", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example48/protractor.js b/1.2.30/docs/examples/example-example48/protractor.js new file mode 100644 index 0000000000..1f2c684ba9 --- /dev/null +++ b/1.2.30/docs/examples/example-example48/protractor.js @@ -0,0 +1,5 @@ + it('should toggle open', function() { + expect(element(by.id('details')).getAttribute('open')).toBeFalsy(); + element(by.model('open')).click(); + expect(element(by.id('details')).getAttribute('open')).toBeTruthy(); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example49/index-debug.html b/1.2.30/docs/examples/example-example49/index-debug.html new file mode 100644 index 0000000000..b4c85f38d5 --- /dev/null +++ b/1.2.30/docs/examples/example-example49/index-debug.html @@ -0,0 +1,43 @@ + + + + + Example - example-example49-debug + + + + + + + + + + + +
+ userType: + Required!
+ userType = {{userType}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example49/index-jquery.html b/1.2.30/docs/examples/example-example49/index-jquery.html new file mode 100644 index 0000000000..1c01fbf3b5 --- /dev/null +++ b/1.2.30/docs/examples/example-example49/index-jquery.html @@ -0,0 +1,44 @@ + + + + + Example - example-example49-jquery + + + + + + + + + + + + +
+ userType: + Required!
+ userType = {{userType}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example49/index-production.html b/1.2.30/docs/examples/example-example49/index-production.html new file mode 100644 index 0000000000..3c55740fe6 --- /dev/null +++ b/1.2.30/docs/examples/example-example49/index-production.html @@ -0,0 +1,43 @@ + + + + + Example - example-example49-production + + + + + + + + + + + +
+ userType: + Required!
+ userType = {{userType}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example49/index.html b/1.2.30/docs/examples/example-example49/index.html new file mode 100644 index 0000000000..ab0b7dbed3 --- /dev/null +++ b/1.2.30/docs/examples/example-example49/index.html @@ -0,0 +1,43 @@ + + + + + Example - example-example49 + + + + + + + + + + + +
+ userType: + Required!
+ userType = {{userType}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example49/manifest.json b/1.2.30/docs/examples/example-example49/manifest.json new file mode 100644 index 0000000000..9f665c34aa --- /dev/null +++ b/1.2.30/docs/examples/example-example49/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example49", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example49/protractor.js b/1.2.30/docs/examples/example-example49/protractor.js new file mode 100644 index 0000000000..4e686d9498 --- /dev/null +++ b/1.2.30/docs/examples/example-example49/protractor.js @@ -0,0 +1,19 @@ + it('should initialize to model', function() { + var userType = element(by.binding('userType')); + var valid = element(by.binding('myForm.input.$valid')); + + expect(userType.getText()).toContain('guest'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + var userType = element(by.binding('userType')); + var valid = element(by.binding('myForm.input.$valid')); + var userInput = element(by.model('userType')); + + userInput.clear(); + userInput.sendKeys(''); + + expect(userType.getText()).toEqual('userType ='); + expect(valid.getText()).toContain('false'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example5/app.js b/1.2.30/docs/examples/example-example5/app.js new file mode 100644 index 0000000000..7f190a715a --- /dev/null +++ b/1.2.30/docs/examples/example-example5/app.js @@ -0,0 +1,10 @@ + var myApp = angular.module('spicyApp2', []); + + myApp.controller('SpicyController', ['$scope', function($scope) { + $scope.customSpice = "wasabi"; + $scope.spice = 'very'; + + $scope.spicy = function(spice) { + $scope.spice = spice; + }; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example5/index-debug.html b/1.2.30/docs/examples/example-example5/index-debug.html new file mode 100644 index 0000000000..6bbc2a8851 --- /dev/null +++ b/1.2.30/docs/examples/example-example5/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example5-debug + + + + + + + + + +
+ + + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example5/index-jquery.html b/1.2.30/docs/examples/example-example5/index-jquery.html new file mode 100644 index 0000000000..8d4363acb8 --- /dev/null +++ b/1.2.30/docs/examples/example-example5/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example5-jquery + + + + + + + + + + +
+ + + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example5/index-production.html b/1.2.30/docs/examples/example-example5/index-production.html new file mode 100644 index 0000000000..e0a8400d00 --- /dev/null +++ b/1.2.30/docs/examples/example-example5/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example5-production + + + + + + + + + +
+ + + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example5/index.html b/1.2.30/docs/examples/example-example5/index.html new file mode 100644 index 0000000000..6f81af5ee2 --- /dev/null +++ b/1.2.30/docs/examples/example-example5/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example5 + + + + + + + + + +
+ + + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example5/manifest.json b/1.2.30/docs/examples/example-example5/manifest.json new file mode 100644 index 0000000000..5ecea73ef4 --- /dev/null +++ b/1.2.30/docs/examples/example-example5/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example5", + "files": [ + "index-production.html", + "app.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example50/index-debug.html b/1.2.30/docs/examples/example-example50/index-debug.html new file mode 100644 index 0000000000..a5914cf79a --- /dev/null +++ b/1.2.30/docs/examples/example-example50/index-debug.html @@ -0,0 +1,40 @@ + + + + + Example - example-example50-debug + + + + + + + + + + + + Update input to see transitions when valid/invalid. + Integer is a valid value. +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example50/index-jquery.html b/1.2.30/docs/examples/example-example50/index-jquery.html new file mode 100644 index 0000000000..43c462dc48 --- /dev/null +++ b/1.2.30/docs/examples/example-example50/index-jquery.html @@ -0,0 +1,41 @@ + + + + + Example - example-example50-jquery + + + + + + + + + + + + + Update input to see transitions when valid/invalid. + Integer is a valid value. +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example50/index-production.html b/1.2.30/docs/examples/example-example50/index-production.html new file mode 100644 index 0000000000..79e4fd23fe --- /dev/null +++ b/1.2.30/docs/examples/example-example50/index-production.html @@ -0,0 +1,40 @@ + + + + + Example - example-example50-production + + + + + + + + + + + + Update input to see transitions when valid/invalid. + Integer is a valid value. +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example50/index.html b/1.2.30/docs/examples/example-example50/index.html new file mode 100644 index 0000000000..b71e2ff8bf --- /dev/null +++ b/1.2.30/docs/examples/example-example50/index.html @@ -0,0 +1,40 @@ + + + + + Example - example-example50 + + + + + + + + + + + + Update input to see transitions when valid/invalid. + Integer is a valid value. +
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example50/manifest.json b/1.2.30/docs/examples/example-example50/manifest.json new file mode 100644 index 0000000000..61f96cc04e --- /dev/null +++ b/1.2.30/docs/examples/example-example50/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example50", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example51/index-debug.html b/1.2.30/docs/examples/example-example51/index-debug.html new file mode 100644 index 0000000000..9cecc5c6a1 --- /dev/null +++ b/1.2.30/docs/examples/example-example51/index-debug.html @@ -0,0 +1,25 @@ + + + + + Example - example-example51-debug + + + + + + + + + +
+ Enter name:
+ Hello ! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example51/index-jquery.html b/1.2.30/docs/examples/example-example51/index-jquery.html new file mode 100644 index 0000000000..d7824bbf7d --- /dev/null +++ b/1.2.30/docs/examples/example-example51/index-jquery.html @@ -0,0 +1,26 @@ + + + + + Example - example-example51-jquery + + + + + + + + + + +
+ Enter name:
+ Hello ! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example51/index-production.html b/1.2.30/docs/examples/example-example51/index-production.html new file mode 100644 index 0000000000..d949b104c5 --- /dev/null +++ b/1.2.30/docs/examples/example-example51/index-production.html @@ -0,0 +1,25 @@ + + + + + Example - example-example51-production + + + + + + + + + +
+ Enter name:
+ Hello ! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example51/index.html b/1.2.30/docs/examples/example-example51/index.html new file mode 100644 index 0000000000..3dea2aa94e --- /dev/null +++ b/1.2.30/docs/examples/example-example51/index.html @@ -0,0 +1,25 @@ + + + + + Example - example-example51 + + + + + + + + + +
+ Enter name:
+ Hello ! +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example51/manifest.json b/1.2.30/docs/examples/example-example51/manifest.json new file mode 100644 index 0000000000..d1edf9cf3c --- /dev/null +++ b/1.2.30/docs/examples/example-example51/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example51", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example51/protractor.js b/1.2.30/docs/examples/example-example51/protractor.js new file mode 100644 index 0000000000..5cc9209d2a --- /dev/null +++ b/1.2.30/docs/examples/example-example51/protractor.js @@ -0,0 +1,8 @@ + it('should check ng-bind', function() { + var nameInput = element(by.model('name')); + + expect(element(by.binding('name')).getText()).toBe('Whirled'); + nameInput.clear(); + nameInput.sendKeys('world'); + expect(element(by.binding('name')).getText()).toBe('world'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example52/index-debug.html b/1.2.30/docs/examples/example-example52/index-debug.html new file mode 100644 index 0000000000..f303a5c16a --- /dev/null +++ b/1.2.30/docs/examples/example-example52/index-debug.html @@ -0,0 +1,27 @@ + + + + + Example - example-example52-debug + + + + + + + + + +
+ Salutation:
+ Name:
+

+  
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example52/index-jquery.html b/1.2.30/docs/examples/example-example52/index-jquery.html new file mode 100644 index 0000000000..1b8b361ec2 --- /dev/null +++ b/1.2.30/docs/examples/example-example52/index-jquery.html @@ -0,0 +1,28 @@ + + + + + Example - example-example52-jquery + + + + + + + + + + +
+ Salutation:
+ Name:
+

+  
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example52/index-production.html b/1.2.30/docs/examples/example-example52/index-production.html new file mode 100644 index 0000000000..acc90d64c1 --- /dev/null +++ b/1.2.30/docs/examples/example-example52/index-production.html @@ -0,0 +1,27 @@ + + + + + Example - example-example52-production + + + + + + + + + +
+ Salutation:
+ Name:
+

+  
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example52/index.html b/1.2.30/docs/examples/example-example52/index.html new file mode 100644 index 0000000000..b5928a8818 --- /dev/null +++ b/1.2.30/docs/examples/example-example52/index.html @@ -0,0 +1,27 @@ + + + + + Example - example-example52 + + + + + + + + + +
+ Salutation:
+ Name:
+

+  
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example52/manifest.json b/1.2.30/docs/examples/example-example52/manifest.json new file mode 100644 index 0000000000..b63d0c84e6 --- /dev/null +++ b/1.2.30/docs/examples/example-example52/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example52", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example52/protractor.js b/1.2.30/docs/examples/example-example52/protractor.js new file mode 100644 index 0000000000..a7436ba95f --- /dev/null +++ b/1.2.30/docs/examples/example-example52/protractor.js @@ -0,0 +1,14 @@ + it('should check ng-bind', function() { + var salutationElem = element(by.binding('salutation')); + var salutationInput = element(by.model('salutation')); + var nameInput = element(by.model('name')); + + expect(salutationElem.getText()).toBe('Hello World!'); + + salutationInput.clear(); + salutationInput.sendKeys('Greetings'); + nameInput.clear(); + nameInput.sendKeys('user'); + + expect(salutationElem.getText()).toBe('Greetings user!'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example53/index-debug.html b/1.2.30/docs/examples/example-example53/index-debug.html new file mode 100644 index 0000000000..685f442b3a --- /dev/null +++ b/1.2.30/docs/examples/example-example53/index-debug.html @@ -0,0 +1,20 @@ + + + + + Example - example-example53-debug + + + + + + + + + + +
+

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example53/index-jquery.html b/1.2.30/docs/examples/example-example53/index-jquery.html new file mode 100644 index 0000000000..7abcca7941 --- /dev/null +++ b/1.2.30/docs/examples/example-example53/index-jquery.html @@ -0,0 +1,21 @@ + + + + + Example - example-example53-jquery + + + + + + + + + + + +
+

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example53/index-production.html b/1.2.30/docs/examples/example-example53/index-production.html new file mode 100644 index 0000000000..0e57a390bb --- /dev/null +++ b/1.2.30/docs/examples/example-example53/index-production.html @@ -0,0 +1,20 @@ + + + + + Example - example-example53-production + + + + + + + + + + +
+

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example53/index.html b/1.2.30/docs/examples/example-example53/index.html new file mode 100644 index 0000000000..51a0a41b1e --- /dev/null +++ b/1.2.30/docs/examples/example-example53/index.html @@ -0,0 +1,20 @@ + + + + + Example - example-example53 + + + + + + + + + + +
+

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example53/manifest.json b/1.2.30/docs/examples/example-example53/manifest.json new file mode 100644 index 0000000000..6bd0430e0b --- /dev/null +++ b/1.2.30/docs/examples/example-example53/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example53", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example53/protractor.js b/1.2.30/docs/examples/example-example53/protractor.js new file mode 100644 index 0000000000..46c0353305 --- /dev/null +++ b/1.2.30/docs/examples/example-example53/protractor.js @@ -0,0 +1,4 @@ + it('should check ng-bind-html', function() { + expect(element(by.binding('myHTML')).getText()).toBe( + 'I am an HTMLstring with links! and other stuff'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example53/script.js b/1.2.30/docs/examples/example-example53/script.js new file mode 100644 index 0000000000..4053dfcc38 --- /dev/null +++ b/1.2.30/docs/examples/example-example53/script.js @@ -0,0 +1,6 @@ + angular.module('bindHtmlExample', ['ngSanitize']) + .controller('ExampleController', ['$scope', function($scope) { + $scope.myHTML = + 'I am an HTMLstring with ' + + 'links! and other stuff'; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example54/index-debug.html b/1.2.30/docs/examples/example-example54/index-debug.html new file mode 100644 index 0000000000..0b0d46d0f7 --- /dev/null +++ b/1.2.30/docs/examples/example-example54/index-debug.html @@ -0,0 +1,28 @@ + + + + + Example - example-example54-debug + + + + + + + + + +

Map Syntax Example

+ deleted (apply "strike" class)
+ important (apply "bold" class)
+ error (apply "red" class) +
+

Using String Syntax

+ +
+

Using Array Syntax

+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example54/index-jquery.html b/1.2.30/docs/examples/example-example54/index-jquery.html new file mode 100644 index 0000000000..6feaf45f85 --- /dev/null +++ b/1.2.30/docs/examples/example-example54/index-jquery.html @@ -0,0 +1,29 @@ + + + + + Example - example-example54-jquery + + + + + + + + + + +

Map Syntax Example

+ deleted (apply "strike" class)
+ important (apply "bold" class)
+ error (apply "red" class) +
+

Using String Syntax

+ +
+

Using Array Syntax

+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example54/index-production.html b/1.2.30/docs/examples/example-example54/index-production.html new file mode 100644 index 0000000000..283661fc81 --- /dev/null +++ b/1.2.30/docs/examples/example-example54/index-production.html @@ -0,0 +1,28 @@ + + + + + Example - example-example54-production + + + + + + + + + +

Map Syntax Example

+ deleted (apply "strike" class)
+ important (apply "bold" class)
+ error (apply "red" class) +
+

Using String Syntax

+ +
+

Using Array Syntax

+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example54/index.html b/1.2.30/docs/examples/example-example54/index.html new file mode 100644 index 0000000000..6e8a848a32 --- /dev/null +++ b/1.2.30/docs/examples/example-example54/index.html @@ -0,0 +1,28 @@ + + + + + Example - example-example54 + + + + + + + + + +

Map Syntax Example

+ deleted (apply "strike" class)
+ important (apply "bold" class)
+ error (apply "red" class) +
+

Using String Syntax

+ +
+

Using Array Syntax

+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example54/manifest.json b/1.2.30/docs/examples/example-example54/manifest.json new file mode 100644 index 0000000000..dddd84b991 --- /dev/null +++ b/1.2.30/docs/examples/example-example54/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example54", + "files": [ + "index-production.html", + "style.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example54/protractor.js b/1.2.30/docs/examples/example-example54/protractor.js new file mode 100644 index 0000000000..1f8ea4c64e --- /dev/null +++ b/1.2.30/docs/examples/example-example54/protractor.js @@ -0,0 +1,28 @@ + var ps = element.all(by.css('p')); + + it('should let you toggle the class', function() { + + expect(ps.first().getAttribute('class')).not.toMatch(/bold/); + expect(ps.first().getAttribute('class')).not.toMatch(/red/); + + element(by.model('important')).click(); + expect(ps.first().getAttribute('class')).toMatch(/bold/); + + element(by.model('error')).click(); + expect(ps.first().getAttribute('class')).toMatch(/red/); + }); + + it('should let you toggle string example', function() { + expect(ps.get(1).getAttribute('class')).toBe(''); + element(by.model('style')).clear(); + element(by.model('style')).sendKeys('red'); + expect(ps.get(1).getAttribute('class')).toBe('red'); + }); + + it('array example should have 3 classes', function() { + expect(ps.last().getAttribute('class')).toBe(''); + element(by.model('style1')).sendKeys('bold'); + element(by.model('style2')).sendKeys('strike'); + element(by.model('style3')).sendKeys('red'); + expect(ps.last().getAttribute('class')).toBe('bold strike red'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example54/style.css b/1.2.30/docs/examples/example-example54/style.css new file mode 100644 index 0000000000..f3d75e0a41 --- /dev/null +++ b/1.2.30/docs/examples/example-example54/style.css @@ -0,0 +1,9 @@ + .strike { + text-decoration: line-through; + } + .bold { + font-weight: bold; + } + .red { + color: red; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example55/index-debug.html b/1.2.30/docs/examples/example-example55/index-debug.html new file mode 100644 index 0000000000..f284f52f63 --- /dev/null +++ b/1.2.30/docs/examples/example-example55/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example55-debug + + + + + + + + + + + + +
+ Sample Text + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example55/index-jquery.html b/1.2.30/docs/examples/example-example55/index-jquery.html new file mode 100644 index 0000000000..cc9916368c --- /dev/null +++ b/1.2.30/docs/examples/example-example55/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example55-jquery + + + + + + + + + + + + + +
+ Sample Text + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example55/index-production.html b/1.2.30/docs/examples/example-example55/index-production.html new file mode 100644 index 0000000000..41d1a3a6e1 --- /dev/null +++ b/1.2.30/docs/examples/example-example55/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example55-production + + + + + + + + + + + + +
+ Sample Text + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example55/index.html b/1.2.30/docs/examples/example-example55/index.html new file mode 100644 index 0000000000..94571dfc92 --- /dev/null +++ b/1.2.30/docs/examples/example-example55/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example55 + + + + + + + + + + + + +
+ Sample Text + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example55/manifest.json b/1.2.30/docs/examples/example-example55/manifest.json new file mode 100644 index 0000000000..95524a5e8e --- /dev/null +++ b/1.2.30/docs/examples/example-example55/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example55", + "files": [ + "index-production.html", + "style.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example55/protractor.js b/1.2.30/docs/examples/example-example55/protractor.js new file mode 100644 index 0000000000..f3a5a82ed9 --- /dev/null +++ b/1.2.30/docs/examples/example-example55/protractor.js @@ -0,0 +1,14 @@ + it('should check ng-class', function() { + expect(element(by.css('.base-class')).getAttribute('class')).not. + toMatch(/my-class/); + + element(by.id('setbtn')).click(); + + expect(element(by.css('.base-class')).getAttribute('class')). + toMatch(/my-class/); + + element(by.id('clearbtn')).click(); + + expect(element(by.css('.base-class')).getAttribute('class')).not. + toMatch(/my-class/); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example55/style.css b/1.2.30/docs/examples/example-example55/style.css new file mode 100644 index 0000000000..2f3fa91244 --- /dev/null +++ b/1.2.30/docs/examples/example-example55/style.css @@ -0,0 +1,9 @@ + .base-class { + -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; + transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; + } + + .base-class.my-class { + color: red; + font-size:3em; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example56/index-debug.html b/1.2.30/docs/examples/example-example56/index-debug.html new file mode 100644 index 0000000000..05ebc15435 --- /dev/null +++ b/1.2.30/docs/examples/example-example56/index-debug.html @@ -0,0 +1,23 @@ + + + + + Example - example-example56-debug + + + + + + + + + +
    +
  1. + + {{name}} + +
  2. +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example56/index-jquery.html b/1.2.30/docs/examples/example-example56/index-jquery.html new file mode 100644 index 0000000000..b7f48236d9 --- /dev/null +++ b/1.2.30/docs/examples/example-example56/index-jquery.html @@ -0,0 +1,24 @@ + + + + + Example - example-example56-jquery + + + + + + + + + + +
    +
  1. + + {{name}} + +
  2. +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example56/index-production.html b/1.2.30/docs/examples/example-example56/index-production.html new file mode 100644 index 0000000000..e42a75e0da --- /dev/null +++ b/1.2.30/docs/examples/example-example56/index-production.html @@ -0,0 +1,23 @@ + + + + + Example - example-example56-production + + + + + + + + + +
    +
  1. + + {{name}} + +
  2. +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example56/index.html b/1.2.30/docs/examples/example-example56/index.html new file mode 100644 index 0000000000..313294ee95 --- /dev/null +++ b/1.2.30/docs/examples/example-example56/index.html @@ -0,0 +1,23 @@ + + + + + Example - example-example56 + + + + + + + + + +
    +
  1. + + {{name}} + +
  2. +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example56/manifest.json b/1.2.30/docs/examples/example-example56/manifest.json new file mode 100644 index 0000000000..aca4e74df2 --- /dev/null +++ b/1.2.30/docs/examples/example-example56/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example56", + "files": [ + "index-production.html", + "style.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example56/protractor.js b/1.2.30/docs/examples/example-example56/protractor.js new file mode 100644 index 0000000000..c44928632b --- /dev/null +++ b/1.2.30/docs/examples/example-example56/protractor.js @@ -0,0 +1,6 @@ + it('should check ng-class-odd and ng-class-even', function() { + expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')). + toMatch(/odd/); + expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')). + toMatch(/even/); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example56/style.css b/1.2.30/docs/examples/example-example56/style.css new file mode 100644 index 0000000000..68949bf55d --- /dev/null +++ b/1.2.30/docs/examples/example-example56/style.css @@ -0,0 +1,6 @@ + .odd { + color: red; + } + .even { + color: blue; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example57/index-debug.html b/1.2.30/docs/examples/example-example57/index-debug.html new file mode 100644 index 0000000000..903e4d9bf4 --- /dev/null +++ b/1.2.30/docs/examples/example-example57/index-debug.html @@ -0,0 +1,23 @@ + + + + + Example - example-example57-debug + + + + + + + + + +
    +
  1. + + {{name}}       + +
  2. +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example57/index-jquery.html b/1.2.30/docs/examples/example-example57/index-jquery.html new file mode 100644 index 0000000000..9b8be445cb --- /dev/null +++ b/1.2.30/docs/examples/example-example57/index-jquery.html @@ -0,0 +1,24 @@ + + + + + Example - example-example57-jquery + + + + + + + + + + +
    +
  1. + + {{name}}       + +
  2. +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example57/index-production.html b/1.2.30/docs/examples/example-example57/index-production.html new file mode 100644 index 0000000000..84b02db39b --- /dev/null +++ b/1.2.30/docs/examples/example-example57/index-production.html @@ -0,0 +1,23 @@ + + + + + Example - example-example57-production + + + + + + + + + +
    +
  1. + + {{name}}       + +
  2. +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example57/index.html b/1.2.30/docs/examples/example-example57/index.html new file mode 100644 index 0000000000..2fdff7c92b --- /dev/null +++ b/1.2.30/docs/examples/example-example57/index.html @@ -0,0 +1,23 @@ + + + + + Example - example-example57 + + + + + + + + + +
    +
  1. + + {{name}}       + +
  2. +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example57/manifest.json b/1.2.30/docs/examples/example-example57/manifest.json new file mode 100644 index 0000000000..5997ab92fb --- /dev/null +++ b/1.2.30/docs/examples/example-example57/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example57", + "files": [ + "index-production.html", + "style.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example57/protractor.js b/1.2.30/docs/examples/example-example57/protractor.js new file mode 100644 index 0000000000..c44928632b --- /dev/null +++ b/1.2.30/docs/examples/example-example57/protractor.js @@ -0,0 +1,6 @@ + it('should check ng-class-odd and ng-class-even', function() { + expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')). + toMatch(/odd/); + expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')). + toMatch(/even/); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example57/style.css b/1.2.30/docs/examples/example-example57/style.css new file mode 100644 index 0000000000..68949bf55d --- /dev/null +++ b/1.2.30/docs/examples/example-example57/style.css @@ -0,0 +1,6 @@ + .odd { + color: red; + } + .even { + color: blue; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example58/index-debug.html b/1.2.30/docs/examples/example-example58/index-debug.html new file mode 100644 index 0000000000..753e66bf84 --- /dev/null +++ b/1.2.30/docs/examples/example-example58/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example58-debug + + + + + + + + +
{{ 'hello' }}
+
{{ 'hello IE7' }}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example58/index-jquery.html b/1.2.30/docs/examples/example-example58/index-jquery.html new file mode 100644 index 0000000000..f2df91be58 --- /dev/null +++ b/1.2.30/docs/examples/example-example58/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example58-jquery + + + + + + + + + +
{{ 'hello' }}
+
{{ 'hello IE7' }}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example58/index-production.html b/1.2.30/docs/examples/example-example58/index-production.html new file mode 100644 index 0000000000..df0d6d7d8d --- /dev/null +++ b/1.2.30/docs/examples/example-example58/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example58-production + + + + + + + + +
{{ 'hello' }}
+
{{ 'hello IE7' }}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example58/index.html b/1.2.30/docs/examples/example-example58/index.html new file mode 100644 index 0000000000..0f8bf77628 --- /dev/null +++ b/1.2.30/docs/examples/example-example58/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example58 + + + + + + + + +
{{ 'hello' }}
+
{{ 'hello IE7' }}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example58/manifest.json b/1.2.30/docs/examples/example-example58/manifest.json new file mode 100644 index 0000000000..9a438d4659 --- /dev/null +++ b/1.2.30/docs/examples/example-example58/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example58", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example58/protractor.js b/1.2.30/docs/examples/example-example58/protractor.js new file mode 100644 index 0000000000..1fd0ff5c17 --- /dev/null +++ b/1.2.30/docs/examples/example-example58/protractor.js @@ -0,0 +1,6 @@ + it('should remove the template directive and css class', function() { + expect($('#template1').getAttribute('ng-cloak')). + toBeNull(); + expect($('#template2').getAttribute('ng-cloak')). + toBeNull(); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example59/index-debug.html b/1.2.30/docs/examples/example-example59/index-debug.html new file mode 100644 index 0000000000..d32be70c10 --- /dev/null +++ b/1.2.30/docs/examples/example-example59/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example59-debug + + + + + + + + + + + count: {{count}} + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example59/index-jquery.html b/1.2.30/docs/examples/example-example59/index-jquery.html new file mode 100644 index 0000000000..aa319648d0 --- /dev/null +++ b/1.2.30/docs/examples/example-example59/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example59-jquery + + + + + + + + + + + + count: {{count}} + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example59/index-production.html b/1.2.30/docs/examples/example-example59/index-production.html new file mode 100644 index 0000000000..f51e8ca87b --- /dev/null +++ b/1.2.30/docs/examples/example-example59/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example59-production + + + + + + + + + + + count: {{count}} + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example59/index.html b/1.2.30/docs/examples/example-example59/index.html new file mode 100644 index 0000000000..4a45f63cfc --- /dev/null +++ b/1.2.30/docs/examples/example-example59/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example59 + + + + + + + + + + + count: {{count}} + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example59/manifest.json b/1.2.30/docs/examples/example-example59/manifest.json new file mode 100644 index 0000000000..fe12b81e79 --- /dev/null +++ b/1.2.30/docs/examples/example-example59/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example59", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example59/protractor.js b/1.2.30/docs/examples/example-example59/protractor.js new file mode 100644 index 0000000000..88afa2fdb0 --- /dev/null +++ b/1.2.30/docs/examples/example-example59/protractor.js @@ -0,0 +1,5 @@ + it('should check ng-click', function() { + expect(element(by.binding('count')).getText()).toMatch('0'); + element(by.css('button')).click(); + expect(element(by.binding('count')).getText()).toMatch('1'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example6/app.css b/1.2.30/docs/examples/example-example6/app.css new file mode 100644 index 0000000000..a0b18351dc --- /dev/null +++ b/1.2.30/docs/examples/example-example6/app.css @@ -0,0 +1,4 @@ + div.spicy div { + padding: 10px; + border: solid 2px blue; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example6/app.js b/1.2.30/docs/examples/example-example6/app.js new file mode 100644 index 0000000000..4ed3297e38 --- /dev/null +++ b/1.2.30/docs/examples/example-example6/app.js @@ -0,0 +1,12 @@ + var myApp = angular.module('scopeInheritance', []); + myApp.controller('MainController', ['$scope', function($scope) { + $scope.timeOfDay = 'morning'; + $scope.name = 'Nikki'; + }]); + myApp.controller('ChildController', ['$scope', function($scope) { + $scope.name = 'Mattie'; + }]); + myApp.controller('GrandChildController', ['$scope', function($scope) { + $scope.timeOfDay = 'evening'; + $scope.name = 'Gingerbread Baby'; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example6/index-debug.html b/1.2.30/docs/examples/example-example6/index-debug.html new file mode 100644 index 0000000000..11d181efe6 --- /dev/null +++ b/1.2.30/docs/examples/example-example6/index-debug.html @@ -0,0 +1,30 @@ + + + + + Example - example-example6-debug + + + + + + + + + + +
+
+

Good {{timeOfDay}}, {{name}}!

+ +
+

Good {{timeOfDay}}, {{name}}!

+ +
+

Good {{timeOfDay}}, {{name}}!

+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example6/index-jquery.html b/1.2.30/docs/examples/example-example6/index-jquery.html new file mode 100644 index 0000000000..ccf76bc85b --- /dev/null +++ b/1.2.30/docs/examples/example-example6/index-jquery.html @@ -0,0 +1,31 @@ + + + + + Example - example-example6-jquery + + + + + + + + + + + +
+
+

Good {{timeOfDay}}, {{name}}!

+ +
+

Good {{timeOfDay}}, {{name}}!

+ +
+

Good {{timeOfDay}}, {{name}}!

+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example6/index-production.html b/1.2.30/docs/examples/example-example6/index-production.html new file mode 100644 index 0000000000..66627c007b --- /dev/null +++ b/1.2.30/docs/examples/example-example6/index-production.html @@ -0,0 +1,30 @@ + + + + + Example - example-example6-production + + + + + + + + + + +
+
+

Good {{timeOfDay}}, {{name}}!

+ +
+

Good {{timeOfDay}}, {{name}}!

+ +
+

Good {{timeOfDay}}, {{name}}!

+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example6/index.html b/1.2.30/docs/examples/example-example6/index.html new file mode 100644 index 0000000000..3911cfd9b3 --- /dev/null +++ b/1.2.30/docs/examples/example-example6/index.html @@ -0,0 +1,30 @@ + + + + + Example - example-example6 + + + + + + + + + + +
+
+

Good {{timeOfDay}}, {{name}}!

+ +
+

Good {{timeOfDay}}, {{name}}!

+ +
+

Good {{timeOfDay}}, {{name}}!

+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example6/manifest.json b/1.2.30/docs/examples/example-example6/manifest.json new file mode 100644 index 0000000000..a25ac77a58 --- /dev/null +++ b/1.2.30/docs/examples/example-example6/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example6", + "files": [ + "index-production.html", + "app.css", + "app.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example60/index-debug.html b/1.2.30/docs/examples/example-example60/index-debug.html new file mode 100644 index 0000000000..895538a474 --- /dev/null +++ b/1.2.30/docs/examples/example-example60/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example60-debug + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example60/index-jquery.html b/1.2.30/docs/examples/example-example60/index-jquery.html new file mode 100644 index 0000000000..31500f0ddf --- /dev/null +++ b/1.2.30/docs/examples/example-example60/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example60-jquery + + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example60/index-production.html b/1.2.30/docs/examples/example-example60/index-production.html new file mode 100644 index 0000000000..0c3b772a37 --- /dev/null +++ b/1.2.30/docs/examples/example-example60/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example60-production + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example60/index.html b/1.2.30/docs/examples/example-example60/index.html new file mode 100644 index 0000000000..a7a3006709 --- /dev/null +++ b/1.2.30/docs/examples/example-example60/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example60 + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example60/manifest.json b/1.2.30/docs/examples/example-example60/manifest.json new file mode 100644 index 0000000000..1246d4c6e8 --- /dev/null +++ b/1.2.30/docs/examples/example-example60/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example60", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example61/index-debug.html b/1.2.30/docs/examples/example-example61/index-debug.html new file mode 100644 index 0000000000..a778a241b8 --- /dev/null +++ b/1.2.30/docs/examples/example-example61/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example61-debug + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example61/index-jquery.html b/1.2.30/docs/examples/example-example61/index-jquery.html new file mode 100644 index 0000000000..a44052bcb1 --- /dev/null +++ b/1.2.30/docs/examples/example-example61/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example61-jquery + + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example61/index-production.html b/1.2.30/docs/examples/example-example61/index-production.html new file mode 100644 index 0000000000..9b17228f83 --- /dev/null +++ b/1.2.30/docs/examples/example-example61/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example61-production + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example61/index.html b/1.2.30/docs/examples/example-example61/index.html new file mode 100644 index 0000000000..9fbca546cc --- /dev/null +++ b/1.2.30/docs/examples/example-example61/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example61 + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example61/manifest.json b/1.2.30/docs/examples/example-example61/manifest.json new file mode 100644 index 0000000000..e453dc5ede --- /dev/null +++ b/1.2.30/docs/examples/example-example61/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example61", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example62/index-debug.html b/1.2.30/docs/examples/example-example62/index-debug.html new file mode 100644 index 0000000000..729df12518 --- /dev/null +++ b/1.2.30/docs/examples/example-example62/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example62-debug + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example62/index-jquery.html b/1.2.30/docs/examples/example-example62/index-jquery.html new file mode 100644 index 0000000000..5f13f63a7f --- /dev/null +++ b/1.2.30/docs/examples/example-example62/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example62-jquery + + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example62/index-production.html b/1.2.30/docs/examples/example-example62/index-production.html new file mode 100644 index 0000000000..145ffdbeb3 --- /dev/null +++ b/1.2.30/docs/examples/example-example62/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example62-production + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example62/index.html b/1.2.30/docs/examples/example-example62/index.html new file mode 100644 index 0000000000..08a5310961 --- /dev/null +++ b/1.2.30/docs/examples/example-example62/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example62 + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example62/manifest.json b/1.2.30/docs/examples/example-example62/manifest.json new file mode 100644 index 0000000000..8e491fc3cd --- /dev/null +++ b/1.2.30/docs/examples/example-example62/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example62", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example63/index-debug.html b/1.2.30/docs/examples/example-example63/index-debug.html new file mode 100644 index 0000000000..929e9a9ad6 --- /dev/null +++ b/1.2.30/docs/examples/example-example63/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example63-debug + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example63/index-jquery.html b/1.2.30/docs/examples/example-example63/index-jquery.html new file mode 100644 index 0000000000..8e9ac2b854 --- /dev/null +++ b/1.2.30/docs/examples/example-example63/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example63-jquery + + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example63/index-production.html b/1.2.30/docs/examples/example-example63/index-production.html new file mode 100644 index 0000000000..a3fbdf5307 --- /dev/null +++ b/1.2.30/docs/examples/example-example63/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example63-production + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example63/index.html b/1.2.30/docs/examples/example-example63/index.html new file mode 100644 index 0000000000..f03b66c6bb --- /dev/null +++ b/1.2.30/docs/examples/example-example63/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example63 + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example63/manifest.json b/1.2.30/docs/examples/example-example63/manifest.json new file mode 100644 index 0000000000..d8c2fcd438 --- /dev/null +++ b/1.2.30/docs/examples/example-example63/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example63", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example64/index-debug.html b/1.2.30/docs/examples/example-example64/index-debug.html new file mode 100644 index 0000000000..1c2e4b71f3 --- /dev/null +++ b/1.2.30/docs/examples/example-example64/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example64-debug + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example64/index-jquery.html b/1.2.30/docs/examples/example-example64/index-jquery.html new file mode 100644 index 0000000000..9d8118c5b9 --- /dev/null +++ b/1.2.30/docs/examples/example-example64/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example64-jquery + + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example64/index-production.html b/1.2.30/docs/examples/example-example64/index-production.html new file mode 100644 index 0000000000..4fa674e90e --- /dev/null +++ b/1.2.30/docs/examples/example-example64/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example64-production + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example64/index.html b/1.2.30/docs/examples/example-example64/index.html new file mode 100644 index 0000000000..50f7346f41 --- /dev/null +++ b/1.2.30/docs/examples/example-example64/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example64 + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example64/manifest.json b/1.2.30/docs/examples/example-example64/manifest.json new file mode 100644 index 0000000000..4df23109e9 --- /dev/null +++ b/1.2.30/docs/examples/example-example64/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example64", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example65/index-debug.html b/1.2.30/docs/examples/example-example65/index-debug.html new file mode 100644 index 0000000000..64c77fd780 --- /dev/null +++ b/1.2.30/docs/examples/example-example65/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example65-debug + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example65/index-jquery.html b/1.2.30/docs/examples/example-example65/index-jquery.html new file mode 100644 index 0000000000..0d30dfb49d --- /dev/null +++ b/1.2.30/docs/examples/example-example65/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example65-jquery + + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example65/index-production.html b/1.2.30/docs/examples/example-example65/index-production.html new file mode 100644 index 0000000000..b668e9f7e9 --- /dev/null +++ b/1.2.30/docs/examples/example-example65/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example65-production + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example65/index.html b/1.2.30/docs/examples/example-example65/index.html new file mode 100644 index 0000000000..a5015ede2c --- /dev/null +++ b/1.2.30/docs/examples/example-example65/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example65 + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example65/manifest.json b/1.2.30/docs/examples/example-example65/manifest.json new file mode 100644 index 0000000000..a590b2e600 --- /dev/null +++ b/1.2.30/docs/examples/example-example65/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example65", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example66/index-debug.html b/1.2.30/docs/examples/example-example66/index-debug.html new file mode 100644 index 0000000000..04632e96e6 --- /dev/null +++ b/1.2.30/docs/examples/example-example66/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example66-debug + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example66/index-jquery.html b/1.2.30/docs/examples/example-example66/index-jquery.html new file mode 100644 index 0000000000..38ba61aea1 --- /dev/null +++ b/1.2.30/docs/examples/example-example66/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example66-jquery + + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example66/index-production.html b/1.2.30/docs/examples/example-example66/index-production.html new file mode 100644 index 0000000000..2ce18f6d16 --- /dev/null +++ b/1.2.30/docs/examples/example-example66/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example66-production + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example66/index.html b/1.2.30/docs/examples/example-example66/index.html new file mode 100644 index 0000000000..4cf3b0e8f0 --- /dev/null +++ b/1.2.30/docs/examples/example-example66/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example66 + + + + + + + + + + count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example66/manifest.json b/1.2.30/docs/examples/example-example66/manifest.json new file mode 100644 index 0000000000..b02ec1f8ce --- /dev/null +++ b/1.2.30/docs/examples/example-example66/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example66", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example67/index-debug.html b/1.2.30/docs/examples/example-example67/index-debug.html new file mode 100644 index 0000000000..1a6a33a346 --- /dev/null +++ b/1.2.30/docs/examples/example-example67/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example67-debug + + + + + + + + + + key down count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example67/index-jquery.html b/1.2.30/docs/examples/example-example67/index-jquery.html new file mode 100644 index 0000000000..2f76f5a414 --- /dev/null +++ b/1.2.30/docs/examples/example-example67/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example67-jquery + + + + + + + + + + + key down count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example67/index-production.html b/1.2.30/docs/examples/example-example67/index-production.html new file mode 100644 index 0000000000..64cab334ab --- /dev/null +++ b/1.2.30/docs/examples/example-example67/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example67-production + + + + + + + + + + key down count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example67/index.html b/1.2.30/docs/examples/example-example67/index.html new file mode 100644 index 0000000000..b81571d837 --- /dev/null +++ b/1.2.30/docs/examples/example-example67/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example67 + + + + + + + + + + key down count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example67/manifest.json b/1.2.30/docs/examples/example-example67/manifest.json new file mode 100644 index 0000000000..033c4b0f88 --- /dev/null +++ b/1.2.30/docs/examples/example-example67/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example67", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example68/index-debug.html b/1.2.30/docs/examples/example-example68/index-debug.html new file mode 100644 index 0000000000..31ba868518 --- /dev/null +++ b/1.2.30/docs/examples/example-example68/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example68-debug + + + + + + + + +

Typing in the input box below updates the key count

+ key up count: {{count}} + +

Typing in the input box below updates the keycode

+ +

event keyCode: {{ event.keyCode }}

+

event altKey: {{ event.altKey }}

+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example68/index-jquery.html b/1.2.30/docs/examples/example-example68/index-jquery.html new file mode 100644 index 0000000000..6c397d309e --- /dev/null +++ b/1.2.30/docs/examples/example-example68/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example68-jquery + + + + + + + + + +

Typing in the input box below updates the key count

+ key up count: {{count}} + +

Typing in the input box below updates the keycode

+ +

event keyCode: {{ event.keyCode }}

+

event altKey: {{ event.altKey }}

+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example68/index-production.html b/1.2.30/docs/examples/example-example68/index-production.html new file mode 100644 index 0000000000..87a65f3036 --- /dev/null +++ b/1.2.30/docs/examples/example-example68/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example68-production + + + + + + + + +

Typing in the input box below updates the key count

+ key up count: {{count}} + +

Typing in the input box below updates the keycode

+ +

event keyCode: {{ event.keyCode }}

+

event altKey: {{ event.altKey }}

+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example68/index.html b/1.2.30/docs/examples/example-example68/index.html new file mode 100644 index 0000000000..ec2b4ada79 --- /dev/null +++ b/1.2.30/docs/examples/example-example68/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example68 + + + + + + + + +

Typing in the input box below updates the key count

+ key up count: {{count}} + +

Typing in the input box below updates the keycode

+ +

event keyCode: {{ event.keyCode }}

+

event altKey: {{ event.altKey }}

+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example68/manifest.json b/1.2.30/docs/examples/example-example68/manifest.json new file mode 100644 index 0000000000..7d96313441 --- /dev/null +++ b/1.2.30/docs/examples/example-example68/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example68", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example69/index-debug.html b/1.2.30/docs/examples/example-example69/index-debug.html new file mode 100644 index 0000000000..043143aca7 --- /dev/null +++ b/1.2.30/docs/examples/example-example69/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example69-debug + + + + + + + + + + key press count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example69/index-jquery.html b/1.2.30/docs/examples/example-example69/index-jquery.html new file mode 100644 index 0000000000..f0d6698678 --- /dev/null +++ b/1.2.30/docs/examples/example-example69/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example69-jquery + + + + + + + + + + + key press count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example69/index-production.html b/1.2.30/docs/examples/example-example69/index-production.html new file mode 100644 index 0000000000..63cb36e0c8 --- /dev/null +++ b/1.2.30/docs/examples/example-example69/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example69-production + + + + + + + + + + key press count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example69/index.html b/1.2.30/docs/examples/example-example69/index.html new file mode 100644 index 0000000000..cf0608729e --- /dev/null +++ b/1.2.30/docs/examples/example-example69/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example69 + + + + + + + + + + key press count: {{count}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example69/manifest.json b/1.2.30/docs/examples/example-example69/manifest.json new file mode 100644 index 0000000000..f8fe603c39 --- /dev/null +++ b/1.2.30/docs/examples/example-example69/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example69", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example7/index-debug.html b/1.2.30/docs/examples/example-example7/index-debug.html new file mode 100644 index 0000000000..bd5fa22cf2 --- /dev/null +++ b/1.2.30/docs/examples/example-example7/index-debug.html @@ -0,0 +1,25 @@ + + + + + Example - example-example7-debug + + + + + + + + + + +
+ Hello
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example7/index-jquery.html b/1.2.30/docs/examples/example-example7/index-jquery.html new file mode 100644 index 0000000000..7e2badd899 --- /dev/null +++ b/1.2.30/docs/examples/example-example7/index-jquery.html @@ -0,0 +1,26 @@ + + + + + Example - example-example7-jquery + + + + + + + + + + + +
+ Hello
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example7/index-production.html b/1.2.30/docs/examples/example-example7/index-production.html new file mode 100644 index 0000000000..3741cf1bee --- /dev/null +++ b/1.2.30/docs/examples/example-example7/index-production.html @@ -0,0 +1,25 @@ + + + + + Example - example-example7-production + + + + + + + + + + +
+ Hello
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example7/index.html b/1.2.30/docs/examples/example-example7/index.html new file mode 100644 index 0000000000..9503ffea0c --- /dev/null +++ b/1.2.30/docs/examples/example-example7/index.html @@ -0,0 +1,25 @@ + + + + + Example - example-example7 + + + + + + + + + + +
+ Hello
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example7/manifest.json b/1.2.30/docs/examples/example-example7/manifest.json new file mode 100644 index 0000000000..27763db170 --- /dev/null +++ b/1.2.30/docs/examples/example-example7/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example7", + "files": [ + "index-production.html", + "script.js", + "protractorTest.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example7/protractorTest.js b/1.2.30/docs/examples/example-example7/protractorTest.js new file mode 100644 index 0000000000..21ddb4594a --- /dev/null +++ b/1.2.30/docs/examples/example-example7/protractorTest.js @@ -0,0 +1,4 @@ + it('should show off bindings', function() { + expect(element(by.css('div[ng-controller="Controller"] span[ng-bind]')).getText()) + .toBe('Max Karl Ernst Ludwig Planck (April 23, 1858 – October 4, 1947)'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example7/script.js b/1.2.30/docs/examples/example-example7/script.js new file mode 100644 index 0000000000..5e18c6c932 --- /dev/null +++ b/1.2.30/docs/examples/example-example7/script.js @@ -0,0 +1,4 @@ + angular.module('docsBindExample', []) + .controller('Controller', ['$scope', function($scope) { + $scope.name = 'Max Karl Ernst Ludwig Planck (April 23, 1858 – October 4, 1947)'; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example70/index-debug.html b/1.2.30/docs/examples/example-example70/index-debug.html new file mode 100644 index 0000000000..539087b9ff --- /dev/null +++ b/1.2.30/docs/examples/example-example70/index-debug.html @@ -0,0 +1,34 @@ + + + + + Example - example-example70-debug + + + + + + + + + +
+ Enter text and hit enter: + + +
list={{list}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example70/index-jquery.html b/1.2.30/docs/examples/example-example70/index-jquery.html new file mode 100644 index 0000000000..2f28ce5d3d --- /dev/null +++ b/1.2.30/docs/examples/example-example70/index-jquery.html @@ -0,0 +1,35 @@ + + + + + Example - example-example70-jquery + + + + + + + + + + +
+ Enter text and hit enter: + + +
list={{list}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example70/index-production.html b/1.2.30/docs/examples/example-example70/index-production.html new file mode 100644 index 0000000000..552b21d4c9 --- /dev/null +++ b/1.2.30/docs/examples/example-example70/index-production.html @@ -0,0 +1,34 @@ + + + + + Example - example-example70-production + + + + + + + + + +
+ Enter text and hit enter: + + +
list={{list}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example70/index.html b/1.2.30/docs/examples/example-example70/index.html new file mode 100644 index 0000000000..3d14da4f11 --- /dev/null +++ b/1.2.30/docs/examples/example-example70/index.html @@ -0,0 +1,34 @@ + + + + + Example - example-example70 + + + + + + + + + +
+ Enter text and hit enter: + + +
list={{list}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example70/manifest.json b/1.2.30/docs/examples/example-example70/manifest.json new file mode 100644 index 0000000000..c00cb17edd --- /dev/null +++ b/1.2.30/docs/examples/example-example70/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example70", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example70/protractor.js b/1.2.30/docs/examples/example-example70/protractor.js new file mode 100644 index 0000000000..6b823562e9 --- /dev/null +++ b/1.2.30/docs/examples/example-example70/protractor.js @@ -0,0 +1,12 @@ + it('should check ng-submit', function() { + expect(element(by.binding('list')).getText()).toBe('list=[]'); + element(by.css('#submit')).click(); + expect(element(by.binding('list')).getText()).toContain('hello'); + expect(element(by.model('text')).getAttribute('value')).toBe(''); + }); + it('should ignore empty strings', function() { + expect(element(by.binding('list')).getText()).toBe('list=[]'); + element(by.css('#submit')).click(); + element(by.css('#submit')).click(); + expect(element(by.binding('list')).getText()).toContain('hello'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example71/index-debug.html b/1.2.30/docs/examples/example-example71/index-debug.html new file mode 100644 index 0000000000..30368d735f --- /dev/null +++ b/1.2.30/docs/examples/example-example71/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example71-debug + + + + + + + + + + copied: {{copied}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example71/index-jquery.html b/1.2.30/docs/examples/example-example71/index-jquery.html new file mode 100644 index 0000000000..aa7c06c827 --- /dev/null +++ b/1.2.30/docs/examples/example-example71/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example71-jquery + + + + + + + + + + + copied: {{copied}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example71/index-production.html b/1.2.30/docs/examples/example-example71/index-production.html new file mode 100644 index 0000000000..a90f4e9828 --- /dev/null +++ b/1.2.30/docs/examples/example-example71/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example71-production + + + + + + + + + + copied: {{copied}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example71/index.html b/1.2.30/docs/examples/example-example71/index.html new file mode 100644 index 0000000000..331e7bfc54 --- /dev/null +++ b/1.2.30/docs/examples/example-example71/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example71 + + + + + + + + + + copied: {{copied}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example71/manifest.json b/1.2.30/docs/examples/example-example71/manifest.json new file mode 100644 index 0000000000..90e8d86e5c --- /dev/null +++ b/1.2.30/docs/examples/example-example71/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example71", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example72/index-debug.html b/1.2.30/docs/examples/example-example72/index-debug.html new file mode 100644 index 0000000000..2040ab1091 --- /dev/null +++ b/1.2.30/docs/examples/example-example72/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example72-debug + + + + + + + + + + cut: {{cut}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example72/index-jquery.html b/1.2.30/docs/examples/example-example72/index-jquery.html new file mode 100644 index 0000000000..255c544681 --- /dev/null +++ b/1.2.30/docs/examples/example-example72/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example72-jquery + + + + + + + + + + + cut: {{cut}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example72/index-production.html b/1.2.30/docs/examples/example-example72/index-production.html new file mode 100644 index 0000000000..c466244c78 --- /dev/null +++ b/1.2.30/docs/examples/example-example72/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example72-production + + + + + + + + + + cut: {{cut}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example72/index.html b/1.2.30/docs/examples/example-example72/index.html new file mode 100644 index 0000000000..a010918c58 --- /dev/null +++ b/1.2.30/docs/examples/example-example72/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example72 + + + + + + + + + + cut: {{cut}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example72/manifest.json b/1.2.30/docs/examples/example-example72/manifest.json new file mode 100644 index 0000000000..043a930603 --- /dev/null +++ b/1.2.30/docs/examples/example-example72/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example72", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example73/index-debug.html b/1.2.30/docs/examples/example-example73/index-debug.html new file mode 100644 index 0000000000..298c4de9f2 --- /dev/null +++ b/1.2.30/docs/examples/example-example73/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example73-debug + + + + + + + + + + pasted: {{paste}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example73/index-jquery.html b/1.2.30/docs/examples/example-example73/index-jquery.html new file mode 100644 index 0000000000..04553606ef --- /dev/null +++ b/1.2.30/docs/examples/example-example73/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example73-jquery + + + + + + + + + + + pasted: {{paste}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example73/index-production.html b/1.2.30/docs/examples/example-example73/index-production.html new file mode 100644 index 0000000000..ac99356376 --- /dev/null +++ b/1.2.30/docs/examples/example-example73/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example73-production + + + + + + + + + + pasted: {{paste}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example73/index.html b/1.2.30/docs/examples/example-example73/index.html new file mode 100644 index 0000000000..b8bedabb6a --- /dev/null +++ b/1.2.30/docs/examples/example-example73/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example73 + + + + + + + + + + pasted: {{paste}} + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example73/manifest.json b/1.2.30/docs/examples/example-example73/manifest.json new file mode 100644 index 0000000000..e2fbbe3fe9 --- /dev/null +++ b/1.2.30/docs/examples/example-example73/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example73", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example74/animations.css b/1.2.30/docs/examples/example-example74/animations.css new file mode 100644 index 0000000000..2782c1247b --- /dev/null +++ b/1.2.30/docs/examples/example-example74/animations.css @@ -0,0 +1,20 @@ + .animate-if { + background:white; + border:1px solid black; + padding:10px; + } + + .animate-if.ng-enter, .animate-if.ng-leave { + -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; + transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; + } + + .animate-if.ng-enter, + .animate-if.ng-leave.ng-leave-active { + opacity:0; + } + + .animate-if.ng-leave, + .animate-if.ng-enter.ng-enter-active { + opacity:1; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example74/index-debug.html b/1.2.30/docs/examples/example-example74/index-debug.html new file mode 100644 index 0000000000..d8e2e45ed9 --- /dev/null +++ b/1.2.30/docs/examples/example-example74/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example74-debug + + + + + + + + + + + Click me:
+ Show when checked: + + I'm removed when the checkbox is unchecked. + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example74/index-jquery.html b/1.2.30/docs/examples/example-example74/index-jquery.html new file mode 100644 index 0000000000..304ef87d84 --- /dev/null +++ b/1.2.30/docs/examples/example-example74/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example74-jquery + + + + + + + + + + + + Click me:
+ Show when checked: + + I'm removed when the checkbox is unchecked. + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example74/index-production.html b/1.2.30/docs/examples/example-example74/index-production.html new file mode 100644 index 0000000000..e66c229f48 --- /dev/null +++ b/1.2.30/docs/examples/example-example74/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example74-production + + + + + + + + + + + Click me:
+ Show when checked: + + I'm removed when the checkbox is unchecked. + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example74/index.html b/1.2.30/docs/examples/example-example74/index.html new file mode 100644 index 0000000000..d0bd4eef29 --- /dev/null +++ b/1.2.30/docs/examples/example-example74/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example74 + + + + + + + + + + + Click me:
+ Show when checked: + + I'm removed when the checkbox is unchecked. + + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example74/manifest.json b/1.2.30/docs/examples/example-example74/manifest.json new file mode 100644 index 0000000000..b68954e1ff --- /dev/null +++ b/1.2.30/docs/examples/example-example74/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example74", + "files": [ + "index-production.html", + "animations.css" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example75/animations.css b/1.2.30/docs/examples/example-example75/animations.css new file mode 100644 index 0000000000..87a01ef8ec --- /dev/null +++ b/1.2.30/docs/examples/example-example75/animations.css @@ -0,0 +1,38 @@ + .slide-animate-container { + position:relative; + background:white; + border:1px solid black; + height:40px; + overflow:hidden; + } + + .slide-animate { + padding:10px; + } + + .slide-animate.ng-enter, .slide-animate.ng-leave { + -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; + transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; + + position:absolute; + top:0; + left:0; + right:0; + bottom:0; + display:block; + padding:10px; + } + + .slide-animate.ng-enter { + top:-50px; + } + .slide-animate.ng-enter.ng-enter-active { + top:0; + } + + .slide-animate.ng-leave { + top:0; + } + .slide-animate.ng-leave.ng-leave-active { + top:50px; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example75/index-debug.html b/1.2.30/docs/examples/example-example75/index-debug.html new file mode 100644 index 0000000000..94d56625fe --- /dev/null +++ b/1.2.30/docs/examples/example-example75/index-debug.html @@ -0,0 +1,28 @@ + + + + + Example - example-example75-debug + + + + + + + + + + + +
+ + url of the template: {{template.url}} +
+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example75/index-jquery.html b/1.2.30/docs/examples/example-example75/index-jquery.html new file mode 100644 index 0000000000..39059e97d9 --- /dev/null +++ b/1.2.30/docs/examples/example-example75/index-jquery.html @@ -0,0 +1,29 @@ + + + + + Example - example-example75-jquery + + + + + + + + + + + + +
+ + url of the template: {{template.url}} +
+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example75/index-production.html b/1.2.30/docs/examples/example-example75/index-production.html new file mode 100644 index 0000000000..6919734911 --- /dev/null +++ b/1.2.30/docs/examples/example-example75/index-production.html @@ -0,0 +1,28 @@ + + + + + Example - example-example75-production + + + + + + + + + + + +
+ + url of the template: {{template.url}} +
+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example75/index.html b/1.2.30/docs/examples/example-example75/index.html new file mode 100644 index 0000000000..22628389a5 --- /dev/null +++ b/1.2.30/docs/examples/example-example75/index.html @@ -0,0 +1,28 @@ + + + + + Example - example-example75 + + + + + + + + + + + +
+ + url of the template: {{template.url}} +
+
+
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example75/manifest.json b/1.2.30/docs/examples/example-example75/manifest.json new file mode 100644 index 0000000000..fa3175325a --- /dev/null +++ b/1.2.30/docs/examples/example-example75/manifest.json @@ -0,0 +1,11 @@ +{ + "name": "example-example75", + "files": [ + "index-production.html", + "script.js", + "template1.html", + "template2.html", + "animations.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example75/protractor.js b/1.2.30/docs/examples/example-example75/protractor.js new file mode 100644 index 0000000000..ae67a81037 --- /dev/null +++ b/1.2.30/docs/examples/example-example75/protractor.js @@ -0,0 +1,27 @@ + var templateSelect = element(by.model('template')); + var includeElem = element(by.css('[ng-include]')); + + it('should load template1.html', function() { + expect(includeElem.getText()).toMatch(/Content of template1.html/); + }); + + it('should load template2.html', function() { + if (browser.params.browser == 'firefox') { + // Firefox can't handle using selects + // See https://github.com/angular/protractor/issues/480 + return; + } + templateSelect.click(); + templateSelect.all(by.css('option')).get(2).click(); + expect(includeElem.getText()).toMatch(/Content of template2.html/); + }); + + it('should change to blank', function() { + if (browser.params.browser == 'firefox') { + // Firefox can't handle using selects + return; + } + templateSelect.click(); + templateSelect.all(by.css('option')).get(0).click(); + expect(includeElem.isPresent()).toBe(false); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example75/script.js b/1.2.30/docs/examples/example-example75/script.js new file mode 100644 index 0000000000..92680ca9f2 --- /dev/null +++ b/1.2.30/docs/examples/example-example75/script.js @@ -0,0 +1,7 @@ + angular.module('includeExample', ['ngAnimate']) + .controller('ExampleController', ['$scope', function($scope) { + $scope.templates = + [ { name: 'template1.html', url: 'template1.html'}, + { name: 'template2.html', url: 'template2.html'} ]; + $scope.template = $scope.templates[0]; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example75/template1.html b/1.2.30/docs/examples/example-example75/template1.html new file mode 100644 index 0000000000..e2ce5ca854 --- /dev/null +++ b/1.2.30/docs/examples/example-example75/template1.html @@ -0,0 +1 @@ + Content of template1.html \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example75/template2.html b/1.2.30/docs/examples/example-example75/template2.html new file mode 100644 index 0000000000..bc2c751a70 --- /dev/null +++ b/1.2.30/docs/examples/example-example75/template2.html @@ -0,0 +1 @@ + Content of template2.html \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example76/index-debug.html b/1.2.30/docs/examples/example-example76/index-debug.html new file mode 100644 index 0000000000..553c748f32 --- /dev/null +++ b/1.2.30/docs/examples/example-example76/index-debug.html @@ -0,0 +1,28 @@ + + + + + Example - example-example76-debug + + + + + + + + + +
+
+
+ list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}}; +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example76/index-jquery.html b/1.2.30/docs/examples/example-example76/index-jquery.html new file mode 100644 index 0000000000..aca5ee55c9 --- /dev/null +++ b/1.2.30/docs/examples/example-example76/index-jquery.html @@ -0,0 +1,29 @@ + + + + + Example - example-example76-jquery + + + + + + + + + + +
+
+
+ list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}}; +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example76/index-production.html b/1.2.30/docs/examples/example-example76/index-production.html new file mode 100644 index 0000000000..531bb6c99c --- /dev/null +++ b/1.2.30/docs/examples/example-example76/index-production.html @@ -0,0 +1,28 @@ + + + + + Example - example-example76-production + + + + + + + + + +
+
+
+ list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}}; +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example76/index.html b/1.2.30/docs/examples/example-example76/index.html new file mode 100644 index 0000000000..491d6fd658 --- /dev/null +++ b/1.2.30/docs/examples/example-example76/index.html @@ -0,0 +1,28 @@ + + + + + Example - example-example76 + + + + + + + + + +
+
+
+ list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}}; +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example76/manifest.json b/1.2.30/docs/examples/example-example76/manifest.json new file mode 100644 index 0000000000..88e6746615 --- /dev/null +++ b/1.2.30/docs/examples/example-example76/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example76", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example76/protractor.js b/1.2.30/docs/examples/example-example76/protractor.js new file mode 100644 index 0000000000..b1bc72d1d7 --- /dev/null +++ b/1.2.30/docs/examples/example-example76/protractor.js @@ -0,0 +1,7 @@ + it('should alias index positions', function() { + var elements = element.all(by.css('.example-init')); + expect(elements.get(0).getText()).toBe('list[ 0 ][ 0 ] = a;'); + expect(elements.get(1).getText()).toBe('list[ 0 ][ 1 ] = b;'); + expect(elements.get(2).getText()).toBe('list[ 1 ][ 0 ] = c;'); + expect(elements.get(3).getText()).toBe('list[ 1 ][ 1 ] = d;'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example77/index-debug.html b/1.2.30/docs/examples/example-example77/index-debug.html new file mode 100644 index 0000000000..4dea7677e8 --- /dev/null +++ b/1.2.30/docs/examples/example-example77/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example77-debug + + + + + + + + +
Normal: {{1 + 2}}
+
Ignored: {{1 + 2}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example77/index-jquery.html b/1.2.30/docs/examples/example-example77/index-jquery.html new file mode 100644 index 0000000000..dda857a6a3 --- /dev/null +++ b/1.2.30/docs/examples/example-example77/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example77-jquery + + + + + + + + + +
Normal: {{1 + 2}}
+
Ignored: {{1 + 2}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example77/index-production.html b/1.2.30/docs/examples/example-example77/index-production.html new file mode 100644 index 0000000000..a56ae69cef --- /dev/null +++ b/1.2.30/docs/examples/example-example77/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example77-production + + + + + + + + +
Normal: {{1 + 2}}
+
Ignored: {{1 + 2}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example77/index.html b/1.2.30/docs/examples/example-example77/index.html new file mode 100644 index 0000000000..a47d1a9ee1 --- /dev/null +++ b/1.2.30/docs/examples/example-example77/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example77 + + + + + + + + +
Normal: {{1 + 2}}
+
Ignored: {{1 + 2}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example77/manifest.json b/1.2.30/docs/examples/example-example77/manifest.json new file mode 100644 index 0000000000..9d7a2bfbd1 --- /dev/null +++ b/1.2.30/docs/examples/example-example77/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example77", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example77/protractor.js b/1.2.30/docs/examples/example-example77/protractor.js new file mode 100644 index 0000000000..92e76aeb1f --- /dev/null +++ b/1.2.30/docs/examples/example-example77/protractor.js @@ -0,0 +1,4 @@ + it('should check ng-non-bindable', function() { + expect(element(by.binding('1 + 2')).getText()).toContain('3'); + expect(element.all(by.css('div')).last().getText()).toMatch(/1 \+ 2/); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example78/index-debug.html b/1.2.30/docs/examples/example-example78/index-debug.html new file mode 100644 index 0000000000..0651cb077e --- /dev/null +++ b/1.2.30/docs/examples/example-example78/index-debug.html @@ -0,0 +1,46 @@ + + + + + Example - example-example78-debug + + + + + + + + + +
+ Person 1:
+ Person 2:
+ Number of People:
+ + + Without Offset: + +
+ + + With Offset(2): + + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example78/index-jquery.html b/1.2.30/docs/examples/example-example78/index-jquery.html new file mode 100644 index 0000000000..7d81ca744b --- /dev/null +++ b/1.2.30/docs/examples/example-example78/index-jquery.html @@ -0,0 +1,47 @@ + + + + + Example - example-example78-jquery + + + + + + + + + + +
+ Person 1:
+ Person 2:
+ Number of People:
+ + + Without Offset: + +
+ + + With Offset(2): + + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example78/index-production.html b/1.2.30/docs/examples/example-example78/index-production.html new file mode 100644 index 0000000000..7f29f201e0 --- /dev/null +++ b/1.2.30/docs/examples/example-example78/index-production.html @@ -0,0 +1,46 @@ + + + + + Example - example-example78-production + + + + + + + + + +
+ Person 1:
+ Person 2:
+ Number of People:
+ + + Without Offset: + +
+ + + With Offset(2): + + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example78/index.html b/1.2.30/docs/examples/example-example78/index.html new file mode 100644 index 0000000000..cd8b991782 --- /dev/null +++ b/1.2.30/docs/examples/example-example78/index.html @@ -0,0 +1,46 @@ + + + + + Example - example-example78 + + + + + + + + + +
+ Person 1:
+ Person 2:
+ Number of People:
+ + + Without Offset: + +
+ + + With Offset(2): + + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example78/manifest.json b/1.2.30/docs/examples/example-example78/manifest.json new file mode 100644 index 0000000000..25504d8adb --- /dev/null +++ b/1.2.30/docs/examples/example-example78/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example78", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example78/protractor.js b/1.2.30/docs/examples/example-example78/protractor.js new file mode 100644 index 0000000000..65fe79ff37 --- /dev/null +++ b/1.2.30/docs/examples/example-example78/protractor.js @@ -0,0 +1,45 @@ + it('should show correct pluralized string', function() { + var withoutOffset = element.all(by.css('ng-pluralize')).get(0); + var withOffset = element.all(by.css('ng-pluralize')).get(1); + var countInput = element(by.model('personCount')); + + expect(withoutOffset.getText()).toEqual('1 person is viewing.'); + expect(withOffset.getText()).toEqual('Igor is viewing.'); + + countInput.clear(); + countInput.sendKeys('0'); + + expect(withoutOffset.getText()).toEqual('Nobody is viewing.'); + expect(withOffset.getText()).toEqual('Nobody is viewing.'); + + countInput.clear(); + countInput.sendKeys('2'); + + expect(withoutOffset.getText()).toEqual('2 people are viewing.'); + expect(withOffset.getText()).toEqual('Igor and Misko are viewing.'); + + countInput.clear(); + countInput.sendKeys('3'); + + expect(withoutOffset.getText()).toEqual('3 people are viewing.'); + expect(withOffset.getText()).toEqual('Igor, Misko and one other person are viewing.'); + + countInput.clear(); + countInput.sendKeys('4'); + + expect(withoutOffset.getText()).toEqual('4 people are viewing.'); + expect(withOffset.getText()).toEqual('Igor, Misko and 2 other people are viewing.'); + }); + it('should show data-bound names', function() { + var withOffset = element.all(by.css('ng-pluralize')).get(1); + var personCount = element(by.model('personCount')); + var person1 = element(by.model('person1')); + var person2 = element(by.model('person2')); + personCount.clear(); + personCount.sendKeys('4'); + person1.clear(); + person1.sendKeys('Di'); + person2.clear(); + person2.sendKeys('Vojta'); + expect(withOffset.getText()).toEqual('Di, Vojta and 2 other people are viewing.'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example79/animations.css b/1.2.30/docs/examples/example-example79/animations.css new file mode 100644 index 0000000000..5d21c71bba --- /dev/null +++ b/1.2.30/docs/examples/example-example79/animations.css @@ -0,0 +1,34 @@ + .example-animate-container { + background:white; + border:1px solid black; + list-style:none; + margin:0; + padding:0 10px; + } + + .animate-repeat { + line-height:40px; + list-style:none; + box-sizing:border-box; + } + + .animate-repeat.ng-move, + .animate-repeat.ng-enter, + .animate-repeat.ng-leave { + -webkit-transition:all linear 0.5s; + transition:all linear 0.5s; + } + + .animate-repeat.ng-leave.ng-leave-active, + .animate-repeat.ng-move, + .animate-repeat.ng-enter { + opacity:0; + max-height:0; + } + + .animate-repeat.ng-leave, + .animate-repeat.ng-move.ng-move-active, + .animate-repeat.ng-enter.ng-enter-active { + opacity:1; + max-height:40px; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example79/index-debug.html b/1.2.30/docs/examples/example-example79/index-debug.html new file mode 100644 index 0000000000..3f6c9385af --- /dev/null +++ b/1.2.30/docs/examples/example-example79/index-debug.html @@ -0,0 +1,37 @@ + + + + + Example - example-example79-debug + + + + + + + + + + +
+ I have {{friends.length}} friends. They are: + +
    +
  • + [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old. +
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example79/index-jquery.html b/1.2.30/docs/examples/example-example79/index-jquery.html new file mode 100644 index 0000000000..8c43715bfc --- /dev/null +++ b/1.2.30/docs/examples/example-example79/index-jquery.html @@ -0,0 +1,38 @@ + + + + + Example - example-example79-jquery + + + + + + + + + + + +
+ I have {{friends.length}} friends. They are: + +
    +
  • + [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old. +
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example79/index-production.html b/1.2.30/docs/examples/example-example79/index-production.html new file mode 100644 index 0000000000..ba3a6a7f2c --- /dev/null +++ b/1.2.30/docs/examples/example-example79/index-production.html @@ -0,0 +1,37 @@ + + + + + Example - example-example79-production + + + + + + + + + + +
+ I have {{friends.length}} friends. They are: + +
    +
  • + [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old. +
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example79/index.html b/1.2.30/docs/examples/example-example79/index.html new file mode 100644 index 0000000000..2cd32ac9ce --- /dev/null +++ b/1.2.30/docs/examples/example-example79/index.html @@ -0,0 +1,37 @@ + + + + + Example - example-example79 + + + + + + + + + + +
+ I have {{friends.length}} friends. They are: + +
    +
  • + [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old. +
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example79/manifest.json b/1.2.30/docs/examples/example-example79/manifest.json new file mode 100644 index 0000000000..fc6f3c108d --- /dev/null +++ b/1.2.30/docs/examples/example-example79/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example79", + "files": [ + "index-production.html", + "animations.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example79/protractor.js b/1.2.30/docs/examples/example-example79/protractor.js new file mode 100644 index 0000000000..b90d6fb61a --- /dev/null +++ b/1.2.30/docs/examples/example-example79/protractor.js @@ -0,0 +1,20 @@ +var friends = element.all(by.repeater('friend in friends')); + +it('should render initial data set', function() { + expect(friends.count()).toBe(10); + expect(friends.get(0).getText()).toEqual('[1] John who is 25 years old.'); + expect(friends.get(1).getText()).toEqual('[2] Jessie who is 30 years old.'); + expect(friends.last().getText()).toEqual('[10] Samantha who is 60 years old.'); + expect(element(by.binding('friends.length')).getText()) + .toMatch("I have 10 friends. They are:"); +}); + + it('should update repeater when filter predicate changes', function() { + expect(friends.count()).toBe(10); + + element(by.model('q')).sendKeys('ma'); + + expect(friends.count()).toBe(2); + expect(friends.get(0).getText()).toEqual('[1] Mary who is 28 years old.'); + expect(friends.last().getText()).toEqual('[2] Samantha who is 60 years old.'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example8/index-debug.html b/1.2.30/docs/examples/example-example8/index-debug.html new file mode 100644 index 0000000000..187765e2e6 --- /dev/null +++ b/1.2.30/docs/examples/example-example8/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example8-debug + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example8/index-jquery.html b/1.2.30/docs/examples/example-example8/index-jquery.html new file mode 100644 index 0000000000..79bfe885e1 --- /dev/null +++ b/1.2.30/docs/examples/example-example8/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example8-jquery + + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example8/index-production.html b/1.2.30/docs/examples/example-example8/index-production.html new file mode 100644 index 0000000000..168b7d1268 --- /dev/null +++ b/1.2.30/docs/examples/example-example8/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example8-production + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example8/index.html b/1.2.30/docs/examples/example-example8/index.html new file mode 100644 index 0000000000..0db73087ba --- /dev/null +++ b/1.2.30/docs/examples/example-example8/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example8 + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example8/manifest.json b/1.2.30/docs/examples/example-example8/manifest.json new file mode 100644 index 0000000000..38510102c2 --- /dev/null +++ b/1.2.30/docs/examples/example-example8/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example8", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example8/script.js b/1.2.30/docs/examples/example-example8/script.js new file mode 100644 index 0000000000..79becdf4d1 --- /dev/null +++ b/1.2.30/docs/examples/example-example8/script.js @@ -0,0 +1,12 @@ + angular.module('docsSimpleDirective', []) + .controller('Controller', ['$scope', function($scope) { + $scope.customer = { + name: 'Naomi', + address: '1600 Amphitheatre' + }; + }]) + .directive('myCustomer', function() { + return { + template: 'Name: {{customer.name}} Address: {{customer.address}}' + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example80/animations.css b/1.2.30/docs/examples/example-example80/animations.css new file mode 100644 index 0000000000..5a8125160e --- /dev/null +++ b/1.2.30/docs/examples/example-example80/animations.css @@ -0,0 +1,21 @@ + .animate-show { + -webkit-transition:all linear 0.5s; + transition:all linear 0.5s; + line-height:20px; + opacity:1; + padding:10px; + border:1px solid black; + background:white; + } + + .animate-show.ng-hide { + line-height:0; + opacity:0; + padding:0 10px; + } + + .check-element { + padding:10px; + border:1px solid black; + background:white; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example80/glyphicons.css b/1.2.30/docs/examples/example-example80/glyphicons.css new file mode 100644 index 0000000000..e81b05ec1e --- /dev/null +++ b/1.2.30/docs/examples/example-example80/glyphicons.css @@ -0,0 +1 @@ + @import url(//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example80/index-debug.html b/1.2.30/docs/examples/example-example80/index-debug.html new file mode 100644 index 0000000000..a8e5760fa6 --- /dev/null +++ b/1.2.30/docs/examples/example-example80/index-debug.html @@ -0,0 +1,31 @@ + + + + + Example - example-example80-debug + + + + + + + + + + + + Click me:
+
+ Show: +
+ I show up when your checkbox is checked. +
+
+
+ Hide: +
+ I hide when your checkbox is checked. +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example80/index-jquery.html b/1.2.30/docs/examples/example-example80/index-jquery.html new file mode 100644 index 0000000000..43692efa51 --- /dev/null +++ b/1.2.30/docs/examples/example-example80/index-jquery.html @@ -0,0 +1,32 @@ + + + + + Example - example-example80-jquery + + + + + + + + + + + + + Click me:
+
+ Show: +
+ I show up when your checkbox is checked. +
+
+
+ Hide: +
+ I hide when your checkbox is checked. +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example80/index-production.html b/1.2.30/docs/examples/example-example80/index-production.html new file mode 100644 index 0000000000..385d91f63c --- /dev/null +++ b/1.2.30/docs/examples/example-example80/index-production.html @@ -0,0 +1,31 @@ + + + + + Example - example-example80-production + + + + + + + + + + + + Click me:
+
+ Show: +
+ I show up when your checkbox is checked. +
+
+
+ Hide: +
+ I hide when your checkbox is checked. +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example80/index.html b/1.2.30/docs/examples/example-example80/index.html new file mode 100644 index 0000000000..ff65d258a7 --- /dev/null +++ b/1.2.30/docs/examples/example-example80/index.html @@ -0,0 +1,31 @@ + + + + + Example - example-example80 + + + + + + + + + + + + Click me:
+
+ Show: +
+ I show up when your checkbox is checked. +
+
+
+ Hide: +
+ I hide when your checkbox is checked. +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example80/manifest.json b/1.2.30/docs/examples/example-example80/manifest.json new file mode 100644 index 0000000000..d714cb3fe8 --- /dev/null +++ b/1.2.30/docs/examples/example-example80/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-example80", + "files": [ + "index-production.html", + "glyphicons.css", + "animations.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example80/protractor.js b/1.2.30/docs/examples/example-example80/protractor.js new file mode 100644 index 0000000000..a0c35c8644 --- /dev/null +++ b/1.2.30/docs/examples/example-example80/protractor.js @@ -0,0 +1,12 @@ + var thumbsUp = element(by.css('span.glyphicon-thumbs-up')); + var thumbsDown = element(by.css('span.glyphicon-thumbs-down')); + + it('should check ng-show / ng-hide', function() { + expect(thumbsUp.isDisplayed()).toBeFalsy(); + expect(thumbsDown.isDisplayed()).toBeTruthy(); + + element(by.model('checked')).click(); + + expect(thumbsUp.isDisplayed()).toBeTruthy(); + expect(thumbsDown.isDisplayed()).toBeFalsy(); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example81/animations.css b/1.2.30/docs/examples/example-example81/animations.css new file mode 100644 index 0000000000..a755d7b690 --- /dev/null +++ b/1.2.30/docs/examples/example-example81/animations.css @@ -0,0 +1,21 @@ + .animate-hide { + -webkit-transition:all linear 0.5s; + transition:all linear 0.5s; + line-height:20px; + opacity:1; + padding:10px; + border:1px solid black; + background:white; + } + + .animate-hide.ng-hide { + line-height:0; + opacity:0; + padding:0 10px; + } + + .check-element { + padding:10px; + border:1px solid black; + background:white; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example81/glyphicons.css b/1.2.30/docs/examples/example-example81/glyphicons.css new file mode 100644 index 0000000000..e81b05ec1e --- /dev/null +++ b/1.2.30/docs/examples/example-example81/glyphicons.css @@ -0,0 +1 @@ + @import url(//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example81/index-debug.html b/1.2.30/docs/examples/example-example81/index-debug.html new file mode 100644 index 0000000000..572f926225 --- /dev/null +++ b/1.2.30/docs/examples/example-example81/index-debug.html @@ -0,0 +1,31 @@ + + + + + Example - example-example81-debug + + + + + + + + + + + + Click me:
+
+ Show: +
+ I show up when your checkbox is checked. +
+
+
+ Hide: +
+ I hide when your checkbox is checked. +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example81/index-jquery.html b/1.2.30/docs/examples/example-example81/index-jquery.html new file mode 100644 index 0000000000..789a578577 --- /dev/null +++ b/1.2.30/docs/examples/example-example81/index-jquery.html @@ -0,0 +1,32 @@ + + + + + Example - example-example81-jquery + + + + + + + + + + + + + Click me:
+
+ Show: +
+ I show up when your checkbox is checked. +
+
+
+ Hide: +
+ I hide when your checkbox is checked. +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example81/index-production.html b/1.2.30/docs/examples/example-example81/index-production.html new file mode 100644 index 0000000000..a668e0dbe5 --- /dev/null +++ b/1.2.30/docs/examples/example-example81/index-production.html @@ -0,0 +1,31 @@ + + + + + Example - example-example81-production + + + + + + + + + + + + Click me:
+
+ Show: +
+ I show up when your checkbox is checked. +
+
+
+ Hide: +
+ I hide when your checkbox is checked. +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example81/index.html b/1.2.30/docs/examples/example-example81/index.html new file mode 100644 index 0000000000..8acd6bb0f1 --- /dev/null +++ b/1.2.30/docs/examples/example-example81/index.html @@ -0,0 +1,31 @@ + + + + + Example - example-example81 + + + + + + + + + + + + Click me:
+
+ Show: +
+ I show up when your checkbox is checked. +
+
+
+ Hide: +
+ I hide when your checkbox is checked. +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example81/manifest.json b/1.2.30/docs/examples/example-example81/manifest.json new file mode 100644 index 0000000000..dee8cda3fd --- /dev/null +++ b/1.2.30/docs/examples/example-example81/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-example81", + "files": [ + "index-production.html", + "glyphicons.css", + "animations.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example81/protractor.js b/1.2.30/docs/examples/example-example81/protractor.js new file mode 100644 index 0000000000..a0c35c8644 --- /dev/null +++ b/1.2.30/docs/examples/example-example81/protractor.js @@ -0,0 +1,12 @@ + var thumbsUp = element(by.css('span.glyphicon-thumbs-up')); + var thumbsDown = element(by.css('span.glyphicon-thumbs-down')); + + it('should check ng-show / ng-hide', function() { + expect(thumbsUp.isDisplayed()).toBeFalsy(); + expect(thumbsDown.isDisplayed()).toBeTruthy(); + + element(by.model('checked')).click(); + + expect(thumbsUp.isDisplayed()).toBeTruthy(); + expect(thumbsDown.isDisplayed()).toBeFalsy(); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example82/index-debug.html b/1.2.30/docs/examples/example-example82/index-debug.html new file mode 100644 index 0000000000..0c5b55e00e --- /dev/null +++ b/1.2.30/docs/examples/example-example82/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example82-debug + + + + + + + + + + + + +
+ Sample Text +
myStyle={{myStyle}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example82/index-jquery.html b/1.2.30/docs/examples/example-example82/index-jquery.html new file mode 100644 index 0000000000..676ab2bf0b --- /dev/null +++ b/1.2.30/docs/examples/example-example82/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example82-jquery + + + + + + + + + + + + + +
+ Sample Text +
myStyle={{myStyle}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example82/index-production.html b/1.2.30/docs/examples/example-example82/index-production.html new file mode 100644 index 0000000000..990de68d3e --- /dev/null +++ b/1.2.30/docs/examples/example-example82/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example82-production + + + + + + + + + + + + +
+ Sample Text +
myStyle={{myStyle}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example82/index.html b/1.2.30/docs/examples/example-example82/index.html new file mode 100644 index 0000000000..ab755108a0 --- /dev/null +++ b/1.2.30/docs/examples/example-example82/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example82 + + + + + + + + + + + + +
+ Sample Text +
myStyle={{myStyle}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example82/manifest.json b/1.2.30/docs/examples/example-example82/manifest.json new file mode 100644 index 0000000000..5fde9206a4 --- /dev/null +++ b/1.2.30/docs/examples/example-example82/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example82", + "files": [ + "index-production.html", + "style.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example82/protractor.js b/1.2.30/docs/examples/example-example82/protractor.js new file mode 100644 index 0000000000..5520cd4b01 --- /dev/null +++ b/1.2.30/docs/examples/example-example82/protractor.js @@ -0,0 +1,9 @@ + var colorSpan = element(by.css('span')); + + it('should check ng-style', function() { + expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)'); + element(by.css('input[value=\'set color\']')).click(); + expect(colorSpan.getCssValue('color')).toBe('rgba(255, 0, 0, 1)'); + element(by.css('input[value=clear]')).click(); + expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example82/style.css b/1.2.30/docs/examples/example-example82/style.css new file mode 100644 index 0000000000..3813c5ab68 --- /dev/null +++ b/1.2.30/docs/examples/example-example82/style.css @@ -0,0 +1,3 @@ + span { + color: black; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example83/animations.css b/1.2.30/docs/examples/example-example83/animations.css new file mode 100644 index 0000000000..029267121d --- /dev/null +++ b/1.2.30/docs/examples/example-example83/animations.css @@ -0,0 +1,31 @@ + .animate-switch-container { + position:relative; + background:white; + border:1px solid black; + height:40px; + overflow:hidden; + } + + .animate-switch { + padding:10px; + } + + .animate-switch.ng-animate { + -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; + transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s; + + position:absolute; + top:0; + left:0; + right:0; + bottom:0; + } + + .animate-switch.ng-leave.ng-leave-active, + .animate-switch.ng-enter { + top:-50px; + } + .animate-switch.ng-leave, + .animate-switch.ng-enter.ng-enter-active { + top:0; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example83/index-debug.html b/1.2.30/docs/examples/example-example83/index-debug.html new file mode 100644 index 0000000000..30fc0220a9 --- /dev/null +++ b/1.2.30/docs/examples/example-example83/index-debug.html @@ -0,0 +1,30 @@ + + + + + Example - example-example83-debug + + + + + + + + + + + +
+ + selection={{selection}} +
+
+
Settings Div
+
Home Span
+
default
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example83/index-jquery.html b/1.2.30/docs/examples/example-example83/index-jquery.html new file mode 100644 index 0000000000..13810e1247 --- /dev/null +++ b/1.2.30/docs/examples/example-example83/index-jquery.html @@ -0,0 +1,31 @@ + + + + + Example - example-example83-jquery + + + + + + + + + + + + +
+ + selection={{selection}} +
+
+
Settings Div
+
Home Span
+
default
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example83/index-production.html b/1.2.30/docs/examples/example-example83/index-production.html new file mode 100644 index 0000000000..fa19f6f865 --- /dev/null +++ b/1.2.30/docs/examples/example-example83/index-production.html @@ -0,0 +1,30 @@ + + + + + Example - example-example83-production + + + + + + + + + + + +
+ + selection={{selection}} +
+
+
Settings Div
+
Home Span
+
default
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example83/index.html b/1.2.30/docs/examples/example-example83/index.html new file mode 100644 index 0000000000..407418d3ce --- /dev/null +++ b/1.2.30/docs/examples/example-example83/index.html @@ -0,0 +1,30 @@ + + + + + Example - example-example83 + + + + + + + + + + + +
+ + selection={{selection}} +
+
+
Settings Div
+
Home Span
+
default
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example83/manifest.json b/1.2.30/docs/examples/example-example83/manifest.json new file mode 100644 index 0000000000..4dacc008a2 --- /dev/null +++ b/1.2.30/docs/examples/example-example83/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-example83", + "files": [ + "index-production.html", + "script.js", + "animations.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example83/protractor.js b/1.2.30/docs/examples/example-example83/protractor.js new file mode 100644 index 0000000000..13428b5d9d --- /dev/null +++ b/1.2.30/docs/examples/example-example83/protractor.js @@ -0,0 +1,14 @@ + var switchElem = element(by.css('[ng-switch]')); + var select = element(by.model('selection')); + + it('should start in settings', function() { + expect(switchElem.getText()).toMatch(/Settings Div/); + }); + it('should change to home', function() { + select.all(by.css('option')).get(1).click(); + expect(switchElem.getText()).toMatch(/Home Span/); + }); + it('should select default', function() { + select.all(by.css('option')).get(2).click(); + expect(switchElem.getText()).toMatch(/default/); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example83/script.js b/1.2.30/docs/examples/example-example83/script.js new file mode 100644 index 0000000000..eeb7d5ab4e --- /dev/null +++ b/1.2.30/docs/examples/example-example83/script.js @@ -0,0 +1,5 @@ + angular.module('switchExample', ['ngAnimate']) + .controller('ExampleController', ['$scope', function($scope) { + $scope.items = ['settings', 'home', 'other']; + $scope.selection = $scope.items[0]; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example84/index-debug.html b/1.2.30/docs/examples/example-example84/index-debug.html new file mode 100644 index 0000000000..43cf435ced --- /dev/null +++ b/1.2.30/docs/examples/example-example84/index-debug.html @@ -0,0 +1,38 @@ + + + + + Example - example-example84-debug + + + + + + + + + +
+
+
+ {{text}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example84/index-jquery.html b/1.2.30/docs/examples/example-example84/index-jquery.html new file mode 100644 index 0000000000..cc0ee33591 --- /dev/null +++ b/1.2.30/docs/examples/example-example84/index-jquery.html @@ -0,0 +1,39 @@ + + + + + Example - example-example84-jquery + + + + + + + + + + +
+
+
+ {{text}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example84/index-production.html b/1.2.30/docs/examples/example-example84/index-production.html new file mode 100644 index 0000000000..20abe0222d --- /dev/null +++ b/1.2.30/docs/examples/example-example84/index-production.html @@ -0,0 +1,38 @@ + + + + + Example - example-example84-production + + + + + + + + + +
+
+
+ {{text}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example84/index.html b/1.2.30/docs/examples/example-example84/index.html new file mode 100644 index 0000000000..9749121973 --- /dev/null +++ b/1.2.30/docs/examples/example-example84/index.html @@ -0,0 +1,38 @@ + + + + + Example - example-example84 + + + + + + + + + +
+
+
+ {{text}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example84/manifest.json b/1.2.30/docs/examples/example-example84/manifest.json new file mode 100644 index 0000000000..ed1896798e --- /dev/null +++ b/1.2.30/docs/examples/example-example84/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example84", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example84/protractor.js b/1.2.30/docs/examples/example-example84/protractor.js new file mode 100644 index 0000000000..cede5558e4 --- /dev/null +++ b/1.2.30/docs/examples/example-example84/protractor.js @@ -0,0 +1,10 @@ + it('should have transcluded', function() { + var titleElement = element(by.model('title')); + titleElement.clear(); + titleElement.sendKeys('TITLE'); + var textElement = element(by.model('text')); + textElement.clear(); + textElement.sendKeys('TEXT'); + expect(element(by.binding('title')).getText()).toEqual('TITLE'); + expect(element(by.binding('text')).getText()).toEqual('TEXT'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example85/index-debug.html b/1.2.30/docs/examples/example-example85/index-debug.html new file mode 100644 index 0000000000..d21cf65e12 --- /dev/null +++ b/1.2.30/docs/examples/example-example85/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example85-debug + + + + + + + + + + + Load inlined template +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example85/index-jquery.html b/1.2.30/docs/examples/example-example85/index-jquery.html new file mode 100644 index 0000000000..2190833041 --- /dev/null +++ b/1.2.30/docs/examples/example-example85/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example85-jquery + + + + + + + + + + + + Load inlined template +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example85/index-production.html b/1.2.30/docs/examples/example-example85/index-production.html new file mode 100644 index 0000000000..65d64861b4 --- /dev/null +++ b/1.2.30/docs/examples/example-example85/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example85-production + + + + + + + + + + + Load inlined template +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example85/index.html b/1.2.30/docs/examples/example-example85/index.html new file mode 100644 index 0000000000..9747765ec8 --- /dev/null +++ b/1.2.30/docs/examples/example-example85/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example85 + + + + + + + + + + + Load inlined template +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example85/manifest.json b/1.2.30/docs/examples/example-example85/manifest.json new file mode 100644 index 0000000000..f835b19b0f --- /dev/null +++ b/1.2.30/docs/examples/example-example85/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example85", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example85/protractor.js b/1.2.30/docs/examples/example-example85/protractor.js new file mode 100644 index 0000000000..a42438787a --- /dev/null +++ b/1.2.30/docs/examples/example-example85/protractor.js @@ -0,0 +1,4 @@ + it('should load template defined inside script tag', function() { + element(by.css('#tpl-link')).click(); + expect(element(by.css('#tpl-content')).getText()).toMatch(/Content of the template/); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example86/index-debug.html b/1.2.30/docs/examples/example-example86/index-debug.html new file mode 100644 index 0000000000..68e52e6004 --- /dev/null +++ b/1.2.30/docs/examples/example-example86/index-debug.html @@ -0,0 +1,61 @@ + + + + + Example - example-example86-debug + + + + + + + + + +
+
    +
  • + Name: + [X] +
  • +
  • + [add] +
  • +
+
+ Color (null not allowed): +
+ + Color (null allowed): + + +
+ + Color grouped by shade: +
+ + + Select bogus.
+
+ Currently selected: {{ {selected_color:myColor} }} +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example86/index-jquery.html b/1.2.30/docs/examples/example-example86/index-jquery.html new file mode 100644 index 0000000000..826d375497 --- /dev/null +++ b/1.2.30/docs/examples/example-example86/index-jquery.html @@ -0,0 +1,62 @@ + + + + + Example - example-example86-jquery + + + + + + + + + + +
+
    +
  • + Name: + [X] +
  • +
  • + [add] +
  • +
+
+ Color (null not allowed): +
+ + Color (null allowed): + + +
+ + Color grouped by shade: +
+ + + Select bogus.
+
+ Currently selected: {{ {selected_color:myColor} }} +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example86/index-production.html b/1.2.30/docs/examples/example-example86/index-production.html new file mode 100644 index 0000000000..7b85d7204f --- /dev/null +++ b/1.2.30/docs/examples/example-example86/index-production.html @@ -0,0 +1,61 @@ + + + + + Example - example-example86-production + + + + + + + + + +
+
    +
  • + Name: + [X] +
  • +
  • + [add] +
  • +
+
+ Color (null not allowed): +
+ + Color (null allowed): + + +
+ + Color grouped by shade: +
+ + + Select bogus.
+
+ Currently selected: {{ {selected_color:myColor} }} +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example86/index.html b/1.2.30/docs/examples/example-example86/index.html new file mode 100644 index 0000000000..4525e4b47f --- /dev/null +++ b/1.2.30/docs/examples/example-example86/index.html @@ -0,0 +1,61 @@ + + + + + Example - example-example86 + + + + + + + + + +
+
    +
  • + Name: + [X] +
  • +
  • + [add] +
  • +
+
+ Color (null not allowed): +
+ + Color (null allowed): + + +
+ + Color grouped by shade: +
+ + + Select bogus.
+
+ Currently selected: {{ {selected_color:myColor} }} +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example86/manifest.json b/1.2.30/docs/examples/example-example86/manifest.json new file mode 100644 index 0000000000..d9a4fba24a --- /dev/null +++ b/1.2.30/docs/examples/example-example86/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example86", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example86/protractor.js b/1.2.30/docs/examples/example-example86/protractor.js new file mode 100644 index 0000000000..f5d74334f0 --- /dev/null +++ b/1.2.30/docs/examples/example-example86/protractor.js @@ -0,0 +1,9 @@ + it('should check ng-options', function() { + expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red'); + element.all(by.model('myColor')).first().click(); + element.all(by.css('select[ng-model="myColor"] option')).first().click(); + expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black'); + element(by.css('.nullable select[ng-model="myColor"]')).click(); + element.all(by.css('.nullable select[ng-model="myColor"] option')).first().click(); + expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example87/index-debug.html b/1.2.30/docs/examples/example-example87/index-debug.html new file mode 100644 index 0000000000..b43400c59e --- /dev/null +++ b/1.2.30/docs/examples/example-example87/index-debug.html @@ -0,0 +1,20 @@ + + + + + Example - example-example87-debug + + + + + + + + + +
+

$document title:

+

window.document title:

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example87/index-jquery.html b/1.2.30/docs/examples/example-example87/index-jquery.html new file mode 100644 index 0000000000..4415fc73e1 --- /dev/null +++ b/1.2.30/docs/examples/example-example87/index-jquery.html @@ -0,0 +1,21 @@ + + + + + Example - example-example87-jquery + + + + + + + + + + +
+

$document title:

+

window.document title:

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example87/index-production.html b/1.2.30/docs/examples/example-example87/index-production.html new file mode 100644 index 0000000000..2ff34603b0 --- /dev/null +++ b/1.2.30/docs/examples/example-example87/index-production.html @@ -0,0 +1,20 @@ + + + + + Example - example-example87-production + + + + + + + + + +
+

$document title:

+

window.document title:

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example87/index.html b/1.2.30/docs/examples/example-example87/index.html new file mode 100644 index 0000000000..aedf41abf1 --- /dev/null +++ b/1.2.30/docs/examples/example-example87/index.html @@ -0,0 +1,20 @@ + + + + + Example - example-example87 + + + + + + + + + +
+

$document title:

+

window.document title:

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example87/manifest.json b/1.2.30/docs/examples/example-example87/manifest.json new file mode 100644 index 0000000000..b3e49b4f28 --- /dev/null +++ b/1.2.30/docs/examples/example-example87/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example87", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example87/script.js b/1.2.30/docs/examples/example-example87/script.js new file mode 100644 index 0000000000..7764817122 --- /dev/null +++ b/1.2.30/docs/examples/example-example87/script.js @@ -0,0 +1,5 @@ + angular.module('documentExample', []) + .controller('ExampleController', ['$scope', '$document', function($scope, $document) { + $scope.title = $document[0].title; + $scope.windowTitle = angular.element(window.document)[0].title; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example88/index-debug.html b/1.2.30/docs/examples/example-example88/index-debug.html new file mode 100644 index 0000000000..4c81441ac1 --- /dev/null +++ b/1.2.30/docs/examples/example-example88/index-debug.html @@ -0,0 +1,42 @@ + + + + + Example - example-example88-debug + + + + + + + + +
+ + Search: + + + + + + +
NamePhone
{{friend.name}}{{friend.phone}}
+
+ Any:
+ Name only
+ Phone only
+ Equality
+ + + + + + +
NamePhone
{{friendObj.name}}{{friendObj.phone}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example88/index-jquery.html b/1.2.30/docs/examples/example-example88/index-jquery.html new file mode 100644 index 0000000000..c4b137f725 --- /dev/null +++ b/1.2.30/docs/examples/example-example88/index-jquery.html @@ -0,0 +1,43 @@ + + + + + Example - example-example88-jquery + + + + + + + + + +
+ + Search: + + + + + + +
NamePhone
{{friend.name}}{{friend.phone}}
+
+ Any:
+ Name only
+ Phone only
+ Equality
+ + + + + + +
NamePhone
{{friendObj.name}}{{friendObj.phone}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example88/index-production.html b/1.2.30/docs/examples/example-example88/index-production.html new file mode 100644 index 0000000000..7de3aed830 --- /dev/null +++ b/1.2.30/docs/examples/example-example88/index-production.html @@ -0,0 +1,42 @@ + + + + + Example - example-example88-production + + + + + + + + +
+ + Search: + + + + + + +
NamePhone
{{friend.name}}{{friend.phone}}
+
+ Any:
+ Name only
+ Phone only
+ Equality
+ + + + + + +
NamePhone
{{friendObj.name}}{{friendObj.phone}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example88/index.html b/1.2.30/docs/examples/example-example88/index.html new file mode 100644 index 0000000000..a02035ab41 --- /dev/null +++ b/1.2.30/docs/examples/example-example88/index.html @@ -0,0 +1,42 @@ + + + + + Example - example-example88 + + + + + + + + +
+ + Search: + + + + + + +
NamePhone
{{friend.name}}{{friend.phone}}
+
+ Any:
+ Name only
+ Phone only
+ Equality
+ + + + + + +
NamePhone
{{friendObj.name}}{{friendObj.phone}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example88/manifest.json b/1.2.30/docs/examples/example-example88/manifest.json new file mode 100644 index 0000000000..64c4ccfa99 --- /dev/null +++ b/1.2.30/docs/examples/example-example88/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example88", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example88/protractor.js b/1.2.30/docs/examples/example-example88/protractor.js new file mode 100644 index 0000000000..6dcd056616 --- /dev/null +++ b/1.2.30/docs/examples/example-example88/protractor.js @@ -0,0 +1,33 @@ + var expectFriendNames = function(expectedNames, key) { + element.all(by.repeater(key + ' in friends').column(key + '.name')).then(function(arr) { + arr.forEach(function(wd, i) { + expect(wd.getText()).toMatch(expectedNames[i]); + }); + }); + }; + + it('should search across all fields when filtering with a string', function() { + var searchText = element(by.model('searchText')); + searchText.clear(); + searchText.sendKeys('m'); + expectFriendNames(['Mary', 'Mike', 'Adam'], 'friend'); + + searchText.clear(); + searchText.sendKeys('76'); + expectFriendNames(['John', 'Julie'], 'friend'); + }); + + it('should search in specific fields when filtering with a predicate object', function() { + var searchAny = element(by.model('search.$')); + searchAny.clear(); + searchAny.sendKeys('i'); + expectFriendNames(['Mary', 'Mike', 'Julie', 'Juliette'], 'friendObj'); + }); + it('should use a equal comparison when comparator is true', function() { + var searchName = element(by.model('search.name')); + var strict = element(by.model('strict')); + searchName.clear(); + searchName.sendKeys('Julie'); + strict.click(); + expectFriendNames(['Julie'], 'friendObj'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example89/index-debug.html b/1.2.30/docs/examples/example-example89/index-debug.html new file mode 100644 index 0000000000..e5a1f0329c --- /dev/null +++ b/1.2.30/docs/examples/example-example89/index-debug.html @@ -0,0 +1,26 @@ + + + + + Example - example-example89-debug + + + + + + + + + +
+
+ default currency symbol ($): {{amount | currency}}
+ custom currency identifier (USD$): {{amount | currency:"USD$"}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example89/index-jquery.html b/1.2.30/docs/examples/example-example89/index-jquery.html new file mode 100644 index 0000000000..c675f4a3b0 --- /dev/null +++ b/1.2.30/docs/examples/example-example89/index-jquery.html @@ -0,0 +1,27 @@ + + + + + Example - example-example89-jquery + + + + + + + + + + +
+
+ default currency symbol ($): {{amount | currency}}
+ custom currency identifier (USD$): {{amount | currency:"USD$"}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example89/index-production.html b/1.2.30/docs/examples/example-example89/index-production.html new file mode 100644 index 0000000000..6a75e56ed7 --- /dev/null +++ b/1.2.30/docs/examples/example-example89/index-production.html @@ -0,0 +1,26 @@ + + + + + Example - example-example89-production + + + + + + + + + +
+
+ default currency symbol ($): {{amount | currency}}
+ custom currency identifier (USD$): {{amount | currency:"USD$"}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example89/index.html b/1.2.30/docs/examples/example-example89/index.html new file mode 100644 index 0000000000..af0657cdac --- /dev/null +++ b/1.2.30/docs/examples/example-example89/index.html @@ -0,0 +1,26 @@ + + + + + Example - example-example89 + + + + + + + + + +
+
+ default currency symbol ($): {{amount | currency}}
+ custom currency identifier (USD$): {{amount | currency:"USD$"}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example89/manifest.json b/1.2.30/docs/examples/example-example89/manifest.json new file mode 100644 index 0000000000..2bfd5ff4b5 --- /dev/null +++ b/1.2.30/docs/examples/example-example89/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example89", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example89/protractor.js b/1.2.30/docs/examples/example-example89/protractor.js new file mode 100644 index 0000000000..f5be614890 --- /dev/null +++ b/1.2.30/docs/examples/example-example89/protractor.js @@ -0,0 +1,15 @@ + it('should init with 1234.56', function() { + expect(element(by.id('currency-default')).getText()).toBe('$1,234.56'); + expect(element(by.binding('amount | currency:"USD$"')).getText()).toBe('USD$1,234.56'); + }); + it('should update', function() { + if (browser.params.browser == 'safari') { + // Safari does not understand the minus key. See + // https://github.com/angular/protractor/issues/481 + return; + } + element(by.model('amount')).clear(); + element(by.model('amount')).sendKeys('-1234'); + expect(element(by.id('currency-default')).getText()).toBe('($1,234.00)'); + expect(element(by.binding('amount | currency:"USD$"')).getText()).toBe('(USD$1,234.00)'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example9/index-debug.html b/1.2.30/docs/examples/example-example9/index-debug.html new file mode 100644 index 0000000000..5724d14b62 --- /dev/null +++ b/1.2.30/docs/examples/example-example9/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example9-debug + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example9/index-jquery.html b/1.2.30/docs/examples/example-example9/index-jquery.html new file mode 100644 index 0000000000..63e7f18106 --- /dev/null +++ b/1.2.30/docs/examples/example-example9/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example9-jquery + + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example9/index-production.html b/1.2.30/docs/examples/example-example9/index-production.html new file mode 100644 index 0000000000..1e99d8ffe2 --- /dev/null +++ b/1.2.30/docs/examples/example-example9/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example9-production + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example9/index.html b/1.2.30/docs/examples/example-example9/index.html new file mode 100644 index 0000000000..e786c8743b --- /dev/null +++ b/1.2.30/docs/examples/example-example9/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example9 + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example9/manifest.json b/1.2.30/docs/examples/example-example9/manifest.json new file mode 100644 index 0000000000..7f53c7d8f0 --- /dev/null +++ b/1.2.30/docs/examples/example-example9/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example9", + "files": [ + "index-production.html", + "script.js", + "my-customer.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example9/my-customer.html b/1.2.30/docs/examples/example-example9/my-customer.html new file mode 100644 index 0000000000..82930dca78 --- /dev/null +++ b/1.2.30/docs/examples/example-example9/my-customer.html @@ -0,0 +1 @@ + Name: {{customer.name}} Address: {{customer.address}} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example9/script.js b/1.2.30/docs/examples/example-example9/script.js new file mode 100644 index 0000000000..75e0299e50 --- /dev/null +++ b/1.2.30/docs/examples/example-example9/script.js @@ -0,0 +1,12 @@ + angular.module('docsTemplateUrlDirective', []) + .controller('Controller', ['$scope', function($scope) { + $scope.customer = { + name: 'Naomi', + address: '1600 Amphitheatre' + }; + }]) + .directive('myCustomer', function() { + return { + templateUrl: 'my-customer.html' + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example90/index-debug.html b/1.2.30/docs/examples/example-example90/index-debug.html new file mode 100644 index 0000000000..188ef7d569 --- /dev/null +++ b/1.2.30/docs/examples/example-example90/index-debug.html @@ -0,0 +1,27 @@ + + + + + Example - example-example90-debug + + + + + + + + + +
+ Enter number:
+ Default formatting: {{val | number}}
+ No fractions: {{val | number:0}}
+ Negative number: {{-val | number:4}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example90/index-jquery.html b/1.2.30/docs/examples/example-example90/index-jquery.html new file mode 100644 index 0000000000..682dd8095b --- /dev/null +++ b/1.2.30/docs/examples/example-example90/index-jquery.html @@ -0,0 +1,28 @@ + + + + + Example - example-example90-jquery + + + + + + + + + + +
+ Enter number:
+ Default formatting: {{val | number}}
+ No fractions: {{val | number:0}}
+ Negative number: {{-val | number:4}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example90/index-production.html b/1.2.30/docs/examples/example-example90/index-production.html new file mode 100644 index 0000000000..5a36472d0b --- /dev/null +++ b/1.2.30/docs/examples/example-example90/index-production.html @@ -0,0 +1,27 @@ + + + + + Example - example-example90-production + + + + + + + + + +
+ Enter number:
+ Default formatting: {{val | number}}
+ No fractions: {{val | number:0}}
+ Negative number: {{-val | number:4}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example90/index.html b/1.2.30/docs/examples/example-example90/index.html new file mode 100644 index 0000000000..a4975caf26 --- /dev/null +++ b/1.2.30/docs/examples/example-example90/index.html @@ -0,0 +1,27 @@ + + + + + Example - example-example90 + + + + + + + + + +
+ Enter number:
+ Default formatting: {{val | number}}
+ No fractions: {{val | number:0}}
+ Negative number: {{-val | number:4}} +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example90/manifest.json b/1.2.30/docs/examples/example-example90/manifest.json new file mode 100644 index 0000000000..67f2927674 --- /dev/null +++ b/1.2.30/docs/examples/example-example90/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example90", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example90/protractor.js b/1.2.30/docs/examples/example-example90/protractor.js new file mode 100644 index 0000000000..167435649d --- /dev/null +++ b/1.2.30/docs/examples/example-example90/protractor.js @@ -0,0 +1,13 @@ + it('should format numbers', function() { + expect(element(by.id('number-default')).getText()).toBe('1,234.568'); + expect(element(by.binding('val | number:0')).getText()).toBe('1,235'); + expect(element(by.binding('-val | number:4')).getText()).toBe('-1,234.5679'); + }); + + it('should update', function() { + element(by.model('val')).clear(); + element(by.model('val')).sendKeys('3374.333'); + expect(element(by.id('number-default')).getText()).toBe('3,374.333'); + expect(element(by.binding('val | number:0')).getText()).toBe('3,374'); + expect(element(by.binding('-val | number:4')).getText()).toBe('-3,374.3330'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example91/index-debug.html b/1.2.30/docs/examples/example-example91/index-debug.html new file mode 100644 index 0000000000..f5c09bbdbf --- /dev/null +++ b/1.2.30/docs/examples/example-example91/index-debug.html @@ -0,0 +1,23 @@ + + + + + Example - example-example91-debug + + + + + + + + + {{1288323623006 | date:'medium'}}: + {{1288323623006 | date:'medium'}}
+ {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}: + {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}
+ {{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}: + {{'1288323623006' | date:'MM/dd/yyyy @ h:mma'}}
+ {{1288323623006 | date:"MM/dd/yyyy 'at' h:mma"}}: + {{'1288323623006' | date:"MM/dd/yyyy 'at' h:mma"}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example91/index-jquery.html b/1.2.30/docs/examples/example-example91/index-jquery.html new file mode 100644 index 0000000000..899e36bee0 --- /dev/null +++ b/1.2.30/docs/examples/example-example91/index-jquery.html @@ -0,0 +1,24 @@ + + + + + Example - example-example91-jquery + + + + + + + + + + {{1288323623006 | date:'medium'}}: + {{1288323623006 | date:'medium'}}
+ {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}: + {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}
+ {{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}: + {{'1288323623006' | date:'MM/dd/yyyy @ h:mma'}}
+ {{1288323623006 | date:"MM/dd/yyyy 'at' h:mma"}}: + {{'1288323623006' | date:"MM/dd/yyyy 'at' h:mma"}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example91/index-production.html b/1.2.30/docs/examples/example-example91/index-production.html new file mode 100644 index 0000000000..15ac9af14f --- /dev/null +++ b/1.2.30/docs/examples/example-example91/index-production.html @@ -0,0 +1,23 @@ + + + + + Example - example-example91-production + + + + + + + + + {{1288323623006 | date:'medium'}}: + {{1288323623006 | date:'medium'}}
+ {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}: + {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}
+ {{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}: + {{'1288323623006' | date:'MM/dd/yyyy @ h:mma'}}
+ {{1288323623006 | date:"MM/dd/yyyy 'at' h:mma"}}: + {{'1288323623006' | date:"MM/dd/yyyy 'at' h:mma"}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example91/index.html b/1.2.30/docs/examples/example-example91/index.html new file mode 100644 index 0000000000..b2329756e2 --- /dev/null +++ b/1.2.30/docs/examples/example-example91/index.html @@ -0,0 +1,23 @@ + + + + + Example - example-example91 + + + + + + + + + {{1288323623006 | date:'medium'}}: + {{1288323623006 | date:'medium'}}
+ {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}: + {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}
+ {{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}: + {{'1288323623006' | date:'MM/dd/yyyy @ h:mma'}}
+ {{1288323623006 | date:"MM/dd/yyyy 'at' h:mma"}}: + {{'1288323623006' | date:"MM/dd/yyyy 'at' h:mma"}}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example91/manifest.json b/1.2.30/docs/examples/example-example91/manifest.json new file mode 100644 index 0000000000..2f231d02ae --- /dev/null +++ b/1.2.30/docs/examples/example-example91/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example91", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example91/protractor.js b/1.2.30/docs/examples/example-example91/protractor.js new file mode 100644 index 0000000000..4d2d2a2cca --- /dev/null +++ b/1.2.30/docs/examples/example-example91/protractor.js @@ -0,0 +1,10 @@ + it('should format date', function() { + expect(element(by.binding("1288323623006 | date:'medium'")).getText()). + toMatch(/Oct 2\d, 2010 \d{1,2}:\d{2}:\d{2} (AM|PM)/); + expect(element(by.binding("1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'")).getText()). + toMatch(/2010\-10\-2\d \d{2}:\d{2}:\d{2} (\-|\+)?\d{4}/); + expect(element(by.binding("'1288323623006' | date:'MM/dd/yyyy @ h:mma'")).getText()). + toMatch(/10\/2\d\/2010 @ \d{1,2}:\d{2}(AM|PM)/); + expect(element(by.binding("'1288323623006' | date:\"MM/dd/yyyy 'at' h:mma\"")).getText()). + toMatch(/10\/2\d\/2010 at \d{1,2}:\d{2}(AM|PM)/); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example92/index-debug.html b/1.2.30/docs/examples/example-example92/index-debug.html new file mode 100644 index 0000000000..3557165d68 --- /dev/null +++ b/1.2.30/docs/examples/example-example92/index-debug.html @@ -0,0 +1,16 @@ + + + + + Example - example-example92-debug + + + + + + + + +
{{ {'name':'value'} | json }}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example92/index-jquery.html b/1.2.30/docs/examples/example-example92/index-jquery.html new file mode 100644 index 0000000000..108ac536d3 --- /dev/null +++ b/1.2.30/docs/examples/example-example92/index-jquery.html @@ -0,0 +1,17 @@ + + + + + Example - example-example92-jquery + + + + + + + + + +
{{ {'name':'value'} | json }}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example92/index-production.html b/1.2.30/docs/examples/example-example92/index-production.html new file mode 100644 index 0000000000..7621aba671 --- /dev/null +++ b/1.2.30/docs/examples/example-example92/index-production.html @@ -0,0 +1,16 @@ + + + + + Example - example-example92-production + + + + + + + + +
{{ {'name':'value'} | json }}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example92/index.html b/1.2.30/docs/examples/example-example92/index.html new file mode 100644 index 0000000000..459fb82087 --- /dev/null +++ b/1.2.30/docs/examples/example-example92/index.html @@ -0,0 +1,16 @@ + + + + + Example - example-example92 + + + + + + + + +
{{ {'name':'value'} | json }}
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example92/manifest.json b/1.2.30/docs/examples/example-example92/manifest.json new file mode 100644 index 0000000000..f7be1816a7 --- /dev/null +++ b/1.2.30/docs/examples/example-example92/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example92", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example92/protractor.js b/1.2.30/docs/examples/example-example92/protractor.js new file mode 100644 index 0000000000..b4f5b33fda --- /dev/null +++ b/1.2.30/docs/examples/example-example92/protractor.js @@ -0,0 +1,3 @@ + it('should jsonify filtered objects', function() { + expect(element(by.binding("{'name':'value'}")).getText()).toMatch(/\{\n "name": ?"value"\n}/); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example93/index-debug.html b/1.2.30/docs/examples/example-example93/index-debug.html new file mode 100644 index 0000000000..6302728928 --- /dev/null +++ b/1.2.30/docs/examples/example-example93/index-debug.html @@ -0,0 +1,30 @@ + + + + + Example - example-example93-debug + + + + + + + + + +
+ Limit {{numbers}} to: +

Output numbers: {{ numbers | limitTo:numLimit }}

+ Limit {{letters}} to: +

Output letters: {{ letters | limitTo:letterLimit }}

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example93/index-jquery.html b/1.2.30/docs/examples/example-example93/index-jquery.html new file mode 100644 index 0000000000..8c64d5ec1e --- /dev/null +++ b/1.2.30/docs/examples/example-example93/index-jquery.html @@ -0,0 +1,31 @@ + + + + + Example - example-example93-jquery + + + + + + + + + + +
+ Limit {{numbers}} to: +

Output numbers: {{ numbers | limitTo:numLimit }}

+ Limit {{letters}} to: +

Output letters: {{ letters | limitTo:letterLimit }}

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example93/index-production.html b/1.2.30/docs/examples/example-example93/index-production.html new file mode 100644 index 0000000000..181c94ada4 --- /dev/null +++ b/1.2.30/docs/examples/example-example93/index-production.html @@ -0,0 +1,30 @@ + + + + + Example - example-example93-production + + + + + + + + + +
+ Limit {{numbers}} to: +

Output numbers: {{ numbers | limitTo:numLimit }}

+ Limit {{letters}} to: +

Output letters: {{ letters | limitTo:letterLimit }}

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example93/index.html b/1.2.30/docs/examples/example-example93/index.html new file mode 100644 index 0000000000..a69a422fc8 --- /dev/null +++ b/1.2.30/docs/examples/example-example93/index.html @@ -0,0 +1,30 @@ + + + + + Example - example-example93 + + + + + + + + + +
+ Limit {{numbers}} to: +

Output numbers: {{ numbers | limitTo:numLimit }}

+ Limit {{letters}} to: +

Output letters: {{ letters | limitTo:letterLimit }}

+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example93/manifest.json b/1.2.30/docs/examples/example-example93/manifest.json new file mode 100644 index 0000000000..b40a78d3e7 --- /dev/null +++ b/1.2.30/docs/examples/example-example93/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example93", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example93/protractor.js b/1.2.30/docs/examples/example-example93/protractor.js new file mode 100644 index 0000000000..8f5a809361 --- /dev/null +++ b/1.2.30/docs/examples/example-example93/protractor.js @@ -0,0 +1,30 @@ + var numLimitInput = element(by.model('numLimit')); + var letterLimitInput = element(by.model('letterLimit')); + var limitedNumbers = element(by.binding('numbers | limitTo:numLimit')); + var limitedLetters = element(by.binding('letters | limitTo:letterLimit')); + + it('should limit the number array to first three items', function() { + expect(numLimitInput.getAttribute('value')).toBe('3'); + expect(letterLimitInput.getAttribute('value')).toBe('3'); + expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3]'); + expect(limitedLetters.getText()).toEqual('Output letters: abc'); + }); + + // There is a bug in safari and protractor that doesn't like the minus key + // it('should update the output when -3 is entered', function() { + // numLimitInput.clear(); + // numLimitInput.sendKeys('-3'); + // letterLimitInput.clear(); + // letterLimitInput.sendKeys('-3'); + // expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]'); + // expect(limitedLetters.getText()).toEqual('Output letters: ghi'); + // }); + + it('should not exceed the maximum size of input array', function() { + numLimitInput.clear(); + numLimitInput.sendKeys('100'); + letterLimitInput.clear(); + letterLimitInput.sendKeys('100'); + expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3,4,5,6,7,8,9]'); + expect(limitedLetters.getText()).toEqual('Output letters: abcdefghi'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example94/index-debug.html b/1.2.30/docs/examples/example-example94/index-debug.html new file mode 100644 index 0000000000..46112594cf --- /dev/null +++ b/1.2.30/docs/examples/example-example94/index-debug.html @@ -0,0 +1,45 @@ + + + + + Example - example-example94-debug + + + + + + + + + +
+
Sorting predicate = {{predicate}}; reverse = {{reverse}}
+
+ [ unsorted ] + + + + + + + + + + + +
Name + (^)Phone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example94/index-jquery.html b/1.2.30/docs/examples/example-example94/index-jquery.html new file mode 100644 index 0000000000..f1dfd8ed35 --- /dev/null +++ b/1.2.30/docs/examples/example-example94/index-jquery.html @@ -0,0 +1,46 @@ + + + + + Example - example-example94-jquery + + + + + + + + + + +
+
Sorting predicate = {{predicate}}; reverse = {{reverse}}
+
+ [ unsorted ] + + + + + + + + + + + +
Name + (^)Phone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example94/index-production.html b/1.2.30/docs/examples/example-example94/index-production.html new file mode 100644 index 0000000000..81b44a29e6 --- /dev/null +++ b/1.2.30/docs/examples/example-example94/index-production.html @@ -0,0 +1,45 @@ + + + + + Example - example-example94-production + + + + + + + + + +
+
Sorting predicate = {{predicate}}; reverse = {{reverse}}
+
+ [ unsorted ] + + + + + + + + + + + +
Name + (^)Phone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example94/index.html b/1.2.30/docs/examples/example-example94/index.html new file mode 100644 index 0000000000..70032de7f7 --- /dev/null +++ b/1.2.30/docs/examples/example-example94/index.html @@ -0,0 +1,45 @@ + + + + + Example - example-example94 + + + + + + + + + +
+
Sorting predicate = {{predicate}}; reverse = {{reverse}}
+
+ [ unsorted ] + + + + + + + + + + + +
Name + (^)Phone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example94/manifest.json b/1.2.30/docs/examples/example-example94/manifest.json new file mode 100644 index 0000000000..2c005f1b23 --- /dev/null +++ b/1.2.30/docs/examples/example-example94/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example94", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example95/index-debug.html b/1.2.30/docs/examples/example-example95/index-debug.html new file mode 100644 index 0000000000..a2f188135a --- /dev/null +++ b/1.2.30/docs/examples/example-example95/index-debug.html @@ -0,0 +1,31 @@ + + + + + Example - example-example95-debug + + + + + + + + + +
+ + + + + + + + + + + +
Name + (^)Phone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example95/index-jquery.html b/1.2.30/docs/examples/example-example95/index-jquery.html new file mode 100644 index 0000000000..f381595402 --- /dev/null +++ b/1.2.30/docs/examples/example-example95/index-jquery.html @@ -0,0 +1,32 @@ + + + + + Example - example-example95-jquery + + + + + + + + + + +
+ + + + + + + + + + + +
Name + (^)Phone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example95/index-production.html b/1.2.30/docs/examples/example-example95/index-production.html new file mode 100644 index 0000000000..f63c2574ac --- /dev/null +++ b/1.2.30/docs/examples/example-example95/index-production.html @@ -0,0 +1,31 @@ + + + + + Example - example-example95-production + + + + + + + + + +
+ + + + + + + + + + + +
Name + (^)Phone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example95/index.html b/1.2.30/docs/examples/example-example95/index.html new file mode 100644 index 0000000000..e52cdcdcaa --- /dev/null +++ b/1.2.30/docs/examples/example-example95/index.html @@ -0,0 +1,31 @@ + + + + + Example - example-example95 + + + + + + + + + +
+ + + + + + + + + + + +
Name + (^)Phone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example95/manifest.json b/1.2.30/docs/examples/example-example95/manifest.json new file mode 100644 index 0000000000..8e6f75afaf --- /dev/null +++ b/1.2.30/docs/examples/example-example95/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example95", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example95/script.js b/1.2.30/docs/examples/example-example95/script.js new file mode 100644 index 0000000000..697fab5052 --- /dev/null +++ b/1.2.30/docs/examples/example-example95/script.js @@ -0,0 +1,15 @@ + angular.module('orderByExample', []) + .controller('ExampleController', ['$scope', '$filter', function($scope, $filter) { + var orderBy = $filter('orderBy'); + $scope.friends = [ + { name: 'John', phone: '555-1212', age: 10 }, + { name: 'Mary', phone: '555-9876', age: 19 }, + { name: 'Mike', phone: '555-4321', age: 21 }, + { name: 'Adam', phone: '555-5678', age: 35 }, + { name: 'Julie', phone: '555-8765', age: 29 } + ]; + $scope.order = function(predicate, reverse) { + $scope.friends = orderBy($scope.friends, predicate, reverse); + }; + $scope.order('-age',false); + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example96/http-hello.html b/1.2.30/docs/examples/example-example96/http-hello.html new file mode 100644 index 0000000000..7b24164aa1 --- /dev/null +++ b/1.2.30/docs/examples/example-example96/http-hello.html @@ -0,0 +1 @@ +Hello, $http! \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example96/index-debug.html b/1.2.30/docs/examples/example-example96/index-debug.html new file mode 100644 index 0000000000..6099927d1a --- /dev/null +++ b/1.2.30/docs/examples/example-example96/index-debug.html @@ -0,0 +1,36 @@ + + + + + Example - example-example96-debug + + + + + + + + + +
+ + +
+ + + +
http status code: {{status}}
+
http response data: {{data}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example96/index-jquery.html b/1.2.30/docs/examples/example-example96/index-jquery.html new file mode 100644 index 0000000000..2f2f53b959 --- /dev/null +++ b/1.2.30/docs/examples/example-example96/index-jquery.html @@ -0,0 +1,37 @@ + + + + + Example - example-example96-jquery + + + + + + + + + + +
+ + +
+ + + +
http status code: {{status}}
+
http response data: {{data}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example96/index-production.html b/1.2.30/docs/examples/example-example96/index-production.html new file mode 100644 index 0000000000..643318a69c --- /dev/null +++ b/1.2.30/docs/examples/example-example96/index-production.html @@ -0,0 +1,36 @@ + + + + + Example - example-example96-production + + + + + + + + + +
+ + +
+ + + +
http status code: {{status}}
+
http response data: {{data}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example96/index.html b/1.2.30/docs/examples/example-example96/index.html new file mode 100644 index 0000000000..80aba50de8 --- /dev/null +++ b/1.2.30/docs/examples/example-example96/index.html @@ -0,0 +1,36 @@ + + + + + Example - example-example96 + + + + + + + + + +
+ + +
+ + + +
http status code: {{status}}
+
http response data: {{data}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example96/manifest.json b/1.2.30/docs/examples/example-example96/manifest.json new file mode 100644 index 0000000000..f52481b503 --- /dev/null +++ b/1.2.30/docs/examples/example-example96/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-example96", + "files": [ + "index-production.html", + "script.js", + "http-hello.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example96/protractor.js b/1.2.30/docs/examples/example-example96/protractor.js new file mode 100644 index 0000000000..078bd13887 --- /dev/null +++ b/1.2.30/docs/examples/example-example96/protractor.js @@ -0,0 +1,29 @@ +var status = element(by.binding('status')); +var data = element(by.binding('data')); +var fetchBtn = element(by.id('fetchbtn')); +var sampleGetBtn = element(by.id('samplegetbtn')); +var sampleJsonpBtn = element(by.id('samplejsonpbtn')); +var invalidJsonpBtn = element(by.id('invalidjsonpbtn')); + +it('should make an xhr GET request', function() { + sampleGetBtn.click(); + fetchBtn.click(); + expect(status.getText()).toMatch('200'); + expect(data.getText()).toMatch(/Hello, \$http!/); +}); + +// Commented out due to flakes. See https://github.com/angular/angular.js/issues/9185 +// it('should make a JSONP request to angularjs.org', function() { +// sampleJsonpBtn.click(); +// fetchBtn.click(); +// expect(status.getText()).toMatch('200'); +// expect(data.getText()).toMatch(/Super Hero!/); +// }); + +it('should make JSONP request to invalid URL and invoke the error handler', + function() { + invalidJsonpBtn.click(); + fetchBtn.click(); + expect(status.getText()).toMatch('0'); + expect(data.getText()).toMatch('Request failed'); +}); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example96/script.js b/1.2.30/docs/examples/example-example96/script.js new file mode 100644 index 0000000000..7194e6e5ea --- /dev/null +++ b/1.2.30/docs/examples/example-example96/script.js @@ -0,0 +1,26 @@ +angular.module('httpExample', []) + .controller('FetchController', ['$scope', '$http', '$templateCache', + function($scope, $http, $templateCache) { + $scope.method = 'GET'; + $scope.url = 'http-hello.html'; + + $scope.fetch = function() { + $scope.code = null; + $scope.response = null; + + $http({method: $scope.method, url: $scope.url, cache: $templateCache}). + success(function(data, status) { + $scope.status = status; + $scope.data = data; + }). + error(function(data, status) { + $scope.data = data || "Request failed"; + $scope.status = status; + }); + }; + + $scope.updateModel = function(method, url) { + $scope.method = method; + $scope.url = url; + }; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example97/index-debug.html b/1.2.30/docs/examples/example-example97/index-debug.html new file mode 100644 index 0000000000..76134c2138 --- /dev/null +++ b/1.2.30/docs/examples/example-example97/index-debug.html @@ -0,0 +1,31 @@ + + + + + Example - example-example97-debug + + + + + + + + + +
+ //demo.label// +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example97/index-jquery.html b/1.2.30/docs/examples/example-example97/index-jquery.html new file mode 100644 index 0000000000..05a9802258 --- /dev/null +++ b/1.2.30/docs/examples/example-example97/index-jquery.html @@ -0,0 +1,32 @@ + + + + + Example - example-example97-jquery + + + + + + + + + + +
+ //demo.label// +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example97/index-production.html b/1.2.30/docs/examples/example-example97/index-production.html new file mode 100644 index 0000000000..436effb63a --- /dev/null +++ b/1.2.30/docs/examples/example-example97/index-production.html @@ -0,0 +1,31 @@ + + + + + Example - example-example97-production + + + + + + + + + +
+ //demo.label// +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example97/index.html b/1.2.30/docs/examples/example-example97/index.html new file mode 100644 index 0000000000..65f310fb7b --- /dev/null +++ b/1.2.30/docs/examples/example-example97/index.html @@ -0,0 +1,31 @@ + + + + + Example - example-example97 + + + + + + + + + +
+ //demo.label// +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example97/manifest.json b/1.2.30/docs/examples/example-example97/manifest.json new file mode 100644 index 0000000000..36894d155a --- /dev/null +++ b/1.2.30/docs/examples/example-example97/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example97", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example97/protractor.js b/1.2.30/docs/examples/example-example97/protractor.js new file mode 100644 index 0000000000..088c6693da --- /dev/null +++ b/1.2.30/docs/examples/example-example97/protractor.js @@ -0,0 +1,3 @@ +it('should interpolate binding with custom symbols', function() { + expect(element(by.binding('demo.label')).getText()).toBe('This binding is brought you by // interpolation symbols.'); +}); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example98/index-debug.html b/1.2.30/docs/examples/example-example98/index-debug.html new file mode 100644 index 0000000000..e3ab601f8b --- /dev/null +++ b/1.2.30/docs/examples/example-example98/index-debug.html @@ -0,0 +1,98 @@ + + + + + Example - example-example98-debug + + + + + + + + + + +
+
+ Date format:
+ Current time is: +
+ Blood 1 : {{blood_1}} + Blood 2 : {{blood_2}} + + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example98/index-jquery.html b/1.2.30/docs/examples/example-example98/index-jquery.html new file mode 100644 index 0000000000..b8ddabc211 --- /dev/null +++ b/1.2.30/docs/examples/example-example98/index-jquery.html @@ -0,0 +1,99 @@ + + + + + Example - example-example98-jquery + + + + + + + + + + + +
+
+ Date format:
+ Current time is: +
+ Blood 1 : {{blood_1}} + Blood 2 : {{blood_2}} + + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example98/index-production.html b/1.2.30/docs/examples/example-example98/index-production.html new file mode 100644 index 0000000000..72a628fdc2 --- /dev/null +++ b/1.2.30/docs/examples/example-example98/index-production.html @@ -0,0 +1,98 @@ + + + + + Example - example-example98-production + + + + + + + + + + +
+
+ Date format:
+ Current time is: +
+ Blood 1 : {{blood_1}} + Blood 2 : {{blood_2}} + + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example98/index.html b/1.2.30/docs/examples/example-example98/index.html new file mode 100644 index 0000000000..61472af89e --- /dev/null +++ b/1.2.30/docs/examples/example-example98/index.html @@ -0,0 +1,98 @@ + + + + + Example - example-example98 + + + + + + + + + + +
+
+ Date format:
+ Current time is: +
+ Blood 1 : {{blood_1}} + Blood 2 : {{blood_2}} + + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example98/manifest.json b/1.2.30/docs/examples/example-example98/manifest.json new file mode 100644 index 0000000000..76df59a3ae --- /dev/null +++ b/1.2.30/docs/examples/example-example98/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example98", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example99/index-debug.html b/1.2.30/docs/examples/example-example99/index-debug.html new file mode 100644 index 0000000000..2dabf257a0 --- /dev/null +++ b/1.2.30/docs/examples/example-example99/index-debug.html @@ -0,0 +1,25 @@ + + + + + Example - example-example99-debug + + + + + + + + + +
+

Reload this page with open console, enter text and hit the log button...

+ Message: + + + + + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example99/index-jquery.html b/1.2.30/docs/examples/example-example99/index-jquery.html new file mode 100644 index 0000000000..7132ca58a3 --- /dev/null +++ b/1.2.30/docs/examples/example-example99/index-jquery.html @@ -0,0 +1,26 @@ + + + + + Example - example-example99-jquery + + + + + + + + + + +
+

Reload this page with open console, enter text and hit the log button...

+ Message: + + + + + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example99/index-production.html b/1.2.30/docs/examples/example-example99/index-production.html new file mode 100644 index 0000000000..5f95188ebd --- /dev/null +++ b/1.2.30/docs/examples/example-example99/index-production.html @@ -0,0 +1,25 @@ + + + + + Example - example-example99-production + + + + + + + + + +
+

Reload this page with open console, enter text and hit the log button...

+ Message: + + + + + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example99/index.html b/1.2.30/docs/examples/example-example99/index.html new file mode 100644 index 0000000000..8573d43b41 --- /dev/null +++ b/1.2.30/docs/examples/example-example99/index.html @@ -0,0 +1,25 @@ + + + + + Example - example-example99 + + + + + + + + + +
+

Reload this page with open console, enter text and hit the log button...

+ Message: + + + + + +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example99/manifest.json b/1.2.30/docs/examples/example-example99/manifest.json new file mode 100644 index 0000000000..14b77e36de --- /dev/null +++ b/1.2.30/docs/examples/example-example99/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example99", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-example99/script.js b/1.2.30/docs/examples/example-example99/script.js new file mode 100644 index 0000000000..10d06307c4 --- /dev/null +++ b/1.2.30/docs/examples/example-example99/script.js @@ -0,0 +1,5 @@ + angular.module('logExample', []) + .controller('LogController', ['$scope', '$log', function($scope, $log) { + $scope.$log = $log; + $scope.message = 'Hello World!'; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-1/index-debug.html b/1.2.30/docs/examples/example-guide-concepts-1/index-debug.html new file mode 100644 index 0000000000..4cbc653c82 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-1/index-debug.html @@ -0,0 +1,27 @@ + + + + + Example - example-guide-concepts-1-debug + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: +
+
+ Total: {{qty * cost | currency}} +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-1/index-jquery.html b/1.2.30/docs/examples/example-guide-concepts-1/index-jquery.html new file mode 100644 index 0000000000..95ca456dd7 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-1/index-jquery.html @@ -0,0 +1,28 @@ + + + + + Example - example-guide-concepts-1-jquery + + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: +
+
+ Total: {{qty * cost | currency}} +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-1/index-production.html b/1.2.30/docs/examples/example-guide-concepts-1/index-production.html new file mode 100644 index 0000000000..7dbd4b66cc --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-1/index-production.html @@ -0,0 +1,27 @@ + + + + + Example - example-guide-concepts-1-production + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: +
+
+ Total: {{qty * cost | currency}} +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-1/index.html b/1.2.30/docs/examples/example-guide-concepts-1/index.html new file mode 100644 index 0000000000..331012dfc5 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-1/index.html @@ -0,0 +1,27 @@ + + + + + Example - example-guide-concepts-1 + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: +
+
+ Total: {{qty * cost | currency}} +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-1/manifest.json b/1.2.30/docs/examples/example-guide-concepts-1/manifest.json new file mode 100644 index 0000000000..f4c83905a1 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-1/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-guide-concepts-1", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-2/index-debug.html b/1.2.30/docs/examples/example-guide-concepts-2/index-debug.html new file mode 100644 index 0000000000..287b05e470 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-2/index-debug.html @@ -0,0 +1,35 @@ + + + + + Example - example-guide-concepts-2-debug + + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: + +
+
+ Total: + + {{invoice.total(c) | currency:c}} + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-2/index-jquery.html b/1.2.30/docs/examples/example-guide-concepts-2/index-jquery.html new file mode 100644 index 0000000000..f22986f9d2 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-2/index-jquery.html @@ -0,0 +1,36 @@ + + + + + Example - example-guide-concepts-2-jquery + + + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: + +
+
+ Total: + + {{invoice.total(c) | currency:c}} + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-2/index-production.html b/1.2.30/docs/examples/example-guide-concepts-2/index-production.html new file mode 100644 index 0000000000..1d07340d61 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-2/index-production.html @@ -0,0 +1,35 @@ + + + + + Example - example-guide-concepts-2-production + + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: + +
+
+ Total: + + {{invoice.total(c) | currency:c}} + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-2/index.html b/1.2.30/docs/examples/example-guide-concepts-2/index.html new file mode 100644 index 0000000000..33786533f8 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-2/index.html @@ -0,0 +1,35 @@ + + + + + Example - example-guide-concepts-2 + + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: + +
+
+ Total: + + {{invoice.total(c) | currency:c}} + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-2/invoice1.js b/1.2.30/docs/examples/example-guide-concepts-2/invoice1.js new file mode 100644 index 0000000000..4d65f22276 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-2/invoice1.js @@ -0,0 +1,22 @@ + angular.module('invoice1', []) + .controller('InvoiceController', function() { + this.qty = 1; + this.cost = 2; + this.inCurr = 'EUR'; + this.currencies = ['USD', 'EUR', 'CNY']; + this.usdToForeignRates = { + USD: 1, + EUR: 0.74, + CNY: 6.09 + }; + + this.total = function total(outCurr) { + return this.convertCurrency(this.qty * this.cost, this.inCurr, outCurr); + }; + this.convertCurrency = function convertCurrency(amount, inCurr, outCurr) { + return amount * this.usdToForeignRates[outCurr] / this.usdToForeignRates[inCurr]; + }; + this.pay = function pay() { + window.alert("Thanks!"); + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-2/manifest.json b/1.2.30/docs/examples/example-guide-concepts-2/manifest.json new file mode 100644 index 0000000000..9c6af114cc --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-2/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-guide-concepts-2", + "files": [ + "index-production.html", + "invoice1.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-21/finance2.js b/1.2.30/docs/examples/example-guide-concepts-21/finance2.js new file mode 100644 index 0000000000..270108aedb --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-21/finance2.js @@ -0,0 +1,17 @@ + angular.module('finance2', []) + .factory('currencyConverter', function() { + var currencies = ['USD', 'EUR', 'CNY']; + var usdToForeignRates = { + USD: 1, + EUR: 0.74, + CNY: 6.09 + }; + var convert = function (amount, inCurr, outCurr) { + return amount * usdToForeignRates[outCurr] / usdToForeignRates[inCurr]; + }; + + return { + currencies: currencies, + convert: convert + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-21/index-debug.html b/1.2.30/docs/examples/example-guide-concepts-21/index-debug.html new file mode 100644 index 0000000000..718a9b64b0 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-21/index-debug.html @@ -0,0 +1,36 @@ + + + + + Example - example-guide-concepts-21-debug + + + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: + +
+
+ Total: + + {{invoice.total(c) | currency:c}} + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-21/index-jquery.html b/1.2.30/docs/examples/example-guide-concepts-21/index-jquery.html new file mode 100644 index 0000000000..217d858afb --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-21/index-jquery.html @@ -0,0 +1,37 @@ + + + + + Example - example-guide-concepts-21-jquery + + + + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: + +
+
+ Total: + + {{invoice.total(c) | currency:c}} + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-21/index-production.html b/1.2.30/docs/examples/example-guide-concepts-21/index-production.html new file mode 100644 index 0000000000..3d7b3a0355 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-21/index-production.html @@ -0,0 +1,36 @@ + + + + + Example - example-guide-concepts-21-production + + + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: + +
+
+ Total: + + {{invoice.total(c) | currency:c}} + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-21/index.html b/1.2.30/docs/examples/example-guide-concepts-21/index.html new file mode 100644 index 0000000000..d856b72571 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-21/index.html @@ -0,0 +1,36 @@ + + + + + Example - example-guide-concepts-21 + + + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: + +
+
+ Total: + + {{invoice.total(c) | currency:c}} + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-21/invoice2.js b/1.2.30/docs/examples/example-guide-concepts-21/invoice2.js new file mode 100644 index 0000000000..77caa7ebf0 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-21/invoice2.js @@ -0,0 +1,14 @@ + angular.module('invoice2', ['finance2']) + .controller('InvoiceController', ['currencyConverter', function(currencyConverter) { + this.qty = 1; + this.cost = 2; + this.inCurr = 'EUR'; + this.currencies = currencyConverter.currencies; + + this.total = function total(outCurr) { + return currencyConverter.convert(this.qty * this.cost, this.inCurr, outCurr); + }; + this.pay = function pay() { + window.alert("Thanks!"); + }; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-21/manifest.json b/1.2.30/docs/examples/example-guide-concepts-21/manifest.json new file mode 100644 index 0000000000..036dcd520a --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-21/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-guide-concepts-21", + "files": [ + "index-production.html", + "finance2.js", + "invoice2.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-3/finance3.js b/1.2.30/docs/examples/example-guide-concepts-3/finance3.js new file mode 100644 index 0000000000..c768dd1893 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-3/finance3.js @@ -0,0 +1,34 @@ + angular.module('finance3', []) + .factory('currencyConverter', ['$http', function($http) { + var YAHOO_FINANCE_URL_PATTERN = + '//query.yahooapis.com/v1/public/yql?q=select * from '+ + 'yahoo.finance.xchange where pair in ("PAIRS")&format=json&'+ + 'env=store://datatables.org/alltableswithkeys&callback=JSON_CALLBACK'; + var currencies = ['USD', 'EUR', 'CNY']; + var usdToForeignRates = {}; + + var convert = function (amount, inCurr, outCurr) { + return amount * usdToForeignRates[outCurr] / usdToForeignRates[inCurr]; + }; + + var refresh = function() { + var url = YAHOO_FINANCE_URL_PATTERN. + replace('PAIRS', 'USD' + currencies.join('","USD')); + return $http.jsonp(url).success(function(data) { + var newUsdToForeignRates = {}; + angular.forEach(data.query.results.rate, function(rate) { + var currency = rate.id.substring(3,6); + newUsdToForeignRates[currency] = window.parseFloat(rate.Rate); + }); + usdToForeignRates = newUsdToForeignRates; + }); + }; + + refresh(); + + return { + currencies: currencies, + convert: convert, + refresh: refresh + }; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-3/index-debug.html b/1.2.30/docs/examples/example-guide-concepts-3/index-debug.html new file mode 100644 index 0000000000..9d778e4610 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-3/index-debug.html @@ -0,0 +1,36 @@ + + + + + Example - example-guide-concepts-3-debug + + + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: + +
+
+ Total: + + {{invoice.total(c) | currency:c}} + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-3/index-jquery.html b/1.2.30/docs/examples/example-guide-concepts-3/index-jquery.html new file mode 100644 index 0000000000..d1efe5ae0e --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-3/index-jquery.html @@ -0,0 +1,37 @@ + + + + + Example - example-guide-concepts-3-jquery + + + + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: + +
+
+ Total: + + {{invoice.total(c) | currency:c}} + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-3/index-production.html b/1.2.30/docs/examples/example-guide-concepts-3/index-production.html new file mode 100644 index 0000000000..3fc87b016b --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-3/index-production.html @@ -0,0 +1,36 @@ + + + + + Example - example-guide-concepts-3-production + + + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: + +
+
+ Total: + + {{invoice.total(c) | currency:c}} + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-3/index.html b/1.2.30/docs/examples/example-guide-concepts-3/index.html new file mode 100644 index 0000000000..6046ff454c --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-3/index.html @@ -0,0 +1,36 @@ + + + + + Example - example-guide-concepts-3 + + + + + + + + + + +
+ Invoice: +
+ Quantity: +
+
+ Costs: + +
+
+ Total: + + {{invoice.total(c) | currency:c}} + + +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-3/invoice3.js b/1.2.30/docs/examples/example-guide-concepts-3/invoice3.js new file mode 100644 index 0000000000..d9b1640be0 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-3/invoice3.js @@ -0,0 +1,14 @@ + angular.module('invoice3', ['finance3']) + .controller('InvoiceController', ['currencyConverter', function(currencyConverter) { + this.qty = 1; + this.cost = 2; + this.inCurr = 'EUR'; + this.currencies = currencyConverter.currencies; + + this.total = function total(outCurr) { + return currencyConverter.convert(this.qty * this.cost, this.inCurr, outCurr); + }; + this.pay = function pay() { + window.alert("Thanks!"); + }; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-guide-concepts-3/manifest.json b/1.2.30/docs/examples/example-guide-concepts-3/manifest.json new file mode 100644 index 0000000000..4581d36108 --- /dev/null +++ b/1.2.30/docs/examples/example-guide-concepts-3/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-guide-concepts-3", + "files": [ + "index-production.html", + "invoice3.js", + "finance3.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-input-directive/index-debug.html b/1.2.30/docs/examples/example-input-directive/index-debug.html new file mode 100644 index 0000000000..9a2fd647bd --- /dev/null +++ b/1.2.30/docs/examples/example-input-directive/index-debug.html @@ -0,0 +1,44 @@ + + + + + Example - example-input-directive-debug + + + + + + + + + +
+
+ User name: + + Required!
+ Last name: + + Too short! + + Too long!
+
+
+ user = {{user}}
+ myForm.userName.$valid = {{myForm.userName.$valid}}
+ myForm.userName.$error = {{myForm.userName.$error}}
+ myForm.lastName.$valid = {{myForm.lastName.$valid}}
+ myForm.lastName.$error = {{myForm.lastName.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+ myForm.$error.minlength = {{!!myForm.$error.minlength}}
+ myForm.$error.maxlength = {{!!myForm.$error.maxlength}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-input-directive/index-jquery.html b/1.2.30/docs/examples/example-input-directive/index-jquery.html new file mode 100644 index 0000000000..ff49180caa --- /dev/null +++ b/1.2.30/docs/examples/example-input-directive/index-jquery.html @@ -0,0 +1,45 @@ + + + + + Example - example-input-directive-jquery + + + + + + + + + + +
+
+ User name: + + Required!
+ Last name: + + Too short! + + Too long!
+
+
+ user = {{user}}
+ myForm.userName.$valid = {{myForm.userName.$valid}}
+ myForm.userName.$error = {{myForm.userName.$error}}
+ myForm.lastName.$valid = {{myForm.lastName.$valid}}
+ myForm.lastName.$error = {{myForm.lastName.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+ myForm.$error.minlength = {{!!myForm.$error.minlength}}
+ myForm.$error.maxlength = {{!!myForm.$error.maxlength}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-input-directive/index-production.html b/1.2.30/docs/examples/example-input-directive/index-production.html new file mode 100644 index 0000000000..adaafd2531 --- /dev/null +++ b/1.2.30/docs/examples/example-input-directive/index-production.html @@ -0,0 +1,44 @@ + + + + + Example - example-input-directive-production + + + + + + + + + +
+
+ User name: + + Required!
+ Last name: + + Too short! + + Too long!
+
+
+ user = {{user}}
+ myForm.userName.$valid = {{myForm.userName.$valid}}
+ myForm.userName.$error = {{myForm.userName.$error}}
+ myForm.lastName.$valid = {{myForm.lastName.$valid}}
+ myForm.lastName.$error = {{myForm.lastName.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+ myForm.$error.minlength = {{!!myForm.$error.minlength}}
+ myForm.$error.maxlength = {{!!myForm.$error.maxlength}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-input-directive/index.html b/1.2.30/docs/examples/example-input-directive/index.html new file mode 100644 index 0000000000..bf756c240d --- /dev/null +++ b/1.2.30/docs/examples/example-input-directive/index.html @@ -0,0 +1,44 @@ + + + + + Example - example-input-directive + + + + + + + + + +
+
+ User name: + + Required!
+ Last name: + + Too short! + + Too long!
+
+
+ user = {{user}}
+ myForm.userName.$valid = {{myForm.userName.$valid}}
+ myForm.userName.$error = {{myForm.userName.$error}}
+ myForm.lastName.$valid = {{myForm.lastName.$valid}}
+ myForm.lastName.$error = {{myForm.lastName.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+ myForm.$error.minlength = {{!!myForm.$error.minlength}}
+ myForm.$error.maxlength = {{!!myForm.$error.maxlength}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-input-directive/manifest.json b/1.2.30/docs/examples/example-input-directive/manifest.json new file mode 100644 index 0000000000..b4c6da9122 --- /dev/null +++ b/1.2.30/docs/examples/example-input-directive/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-input-directive", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-input-directive/protractor.js b/1.2.30/docs/examples/example-input-directive/protractor.js new file mode 100644 index 0000000000..f3c5e1694c --- /dev/null +++ b/1.2.30/docs/examples/example-input-directive/protractor.js @@ -0,0 +1,51 @@ + var user = element(by.binding('{{user}}')); + var userNameValid = element(by.binding('myForm.userName.$valid')); + var lastNameValid = element(by.binding('myForm.lastName.$valid')); + var lastNameError = element(by.binding('myForm.lastName.$error')); + var formValid = element(by.binding('myForm.$valid')); + var userNameInput = element(by.model('user.name')); + var userLastInput = element(by.model('user.last')); + + it('should initialize to model', function() { + expect(user.getText()).toContain('{"name":"guest","last":"visitor"}'); + expect(userNameValid.getText()).toContain('true'); + expect(formValid.getText()).toContain('true'); + }); + + it('should be invalid if empty when required', function() { + userNameInput.clear(); + userNameInput.sendKeys(''); + + expect(user.getText()).toContain('{"last":"visitor"}'); + expect(userNameValid.getText()).toContain('false'); + expect(formValid.getText()).toContain('false'); + }); + + it('should be valid if empty when min length is set', function() { + userLastInput.clear(); + userLastInput.sendKeys(''); + + expect(user.getText()).toContain('{"name":"guest","last":""}'); + expect(lastNameValid.getText()).toContain('true'); + expect(formValid.getText()).toContain('true'); + }); + + it('should be invalid if less than required min length', function() { + userLastInput.clear(); + userLastInput.sendKeys('xx'); + + expect(user.getText()).toContain('{"name":"guest"}'); + expect(lastNameValid.getText()).toContain('false'); + expect(lastNameError.getText()).toContain('minlength'); + expect(formValid.getText()).toContain('false'); + }); + + it('should be invalid if longer than max length', function() { + userLastInput.clear(); + userLastInput.sendKeys('some ridiculously long name'); + + expect(user.getText()).toContain('{"name":"guest"}'); + expect(lastNameValid.getText()).toContain('false'); + expect(lastNameError.getText()).toContain('maxlength'); + expect(formValid.getText()).toContain('false'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-hashbang-mode/addressBar.js b/1.2.30/docs/examples/example-location-hashbang-mode/addressBar.js new file mode 100644 index 0000000000..18d61630bc --- /dev/null +++ b/1.2.30/docs/examples/example-location-hashbang-mode/addressBar.js @@ -0,0 +1,24 @@ + angular.module('address-bar', []) + .directive('ngAddressBar', function($browser, $timeout) { + return { + template: 'Address: ', + link: function(scope, element, attrs){ + var input = element.children("input"), delay; + + input.on('keypress keyup keydown', function(event) { + delay = (!delay ? $timeout(fireUrlChange, 250) : null); + event.stopPropagation(); + }) + .val($browser.url()); + + $browser.url = function(url) { + return url ? input.val(url) : input.val(); + }; + + function fireUrlChange() { + delay = null; + $browser.urlChange(input.val()); + } + } + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-hashbang-mode/app.js b/1.2.30/docs/examples/example-location-hashbang-mode/app.js new file mode 100644 index 0000000000..2e6189741c --- /dev/null +++ b/1.2.30/docs/examples/example-location-hashbang-mode/app.js @@ -0,0 +1,25 @@ + angular.module('hashbang-mode', ['fake-browser', 'address-bar']) + + .constant('initUrl', 'http://www.example.com/base/index.html#!/path?a=b#h') + .constant('baseHref', '/base/index.html') + .value('$sniffer', { history: false }) + + .config(function($locationProvider) { + $locationProvider.html5Mode(true).hashPrefix('!'); + }) + + .controller("LocationController", function($scope, $location) { + $scope.$location = {}; + angular.forEach("protocol host port path search hash".split(" "), function(method){ + $scope.$location[method] = function(){ + var result = $location[method].call($location); + return angular.isObject(result) ? angular.toJson(result) : result; + }; + }); + }) + + .run(function($rootElement) { + $rootElement.on('click', function(e) { + e.stopPropagation(); + }); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-hashbang-mode/fakeBrowser.js b/1.2.30/docs/examples/example-location-hashbang-mode/fakeBrowser.js new file mode 100644 index 0000000000..5522847cca --- /dev/null +++ b/1.2.30/docs/examples/example-location-hashbang-mode/fakeBrowser.js @@ -0,0 +1,24 @@ + angular.module('fake-browser', []) + + .config(function($provide) { + $provide.decorator('$browser', function($delegate, baseHref, initUrl) { + + $delegate.onUrlChange = function(fn) { + this.urlChange = fn; + }; + + $delegate.url = function() { + return initUrl; + }; + + $delegate.defer = function(fn, delay) { + setTimeout(function() { fn(); }, delay || 0); + }; + + $delegate.baseHref = function() { + return baseHref; + }; + + return $delegate; + }); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-hashbang-mode/index-debug.html b/1.2.30/docs/examples/example-location-hashbang-mode/index-debug.html new file mode 100644 index 0000000000..92b995afac --- /dev/null +++ b/1.2.30/docs/examples/example-location-hashbang-mode/index-debug.html @@ -0,0 +1,34 @@ + + + + + Example - example-location-hashbang-mode-debug + + + + + + + + + + + +
+


+
+ $location.protocol() =
+ $location.host() =
+ $location.port() =
+ $location.path() =
+ $location.search() =
+ $location.hash() =
+
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-hashbang-mode/index-jquery.html b/1.2.30/docs/examples/example-location-hashbang-mode/index-jquery.html new file mode 100644 index 0000000000..dcfc3b8b11 --- /dev/null +++ b/1.2.30/docs/examples/example-location-hashbang-mode/index-jquery.html @@ -0,0 +1,35 @@ + + + + + Example - example-location-hashbang-mode-jquery + + + + + + + + + + + + +
+


+
+ $location.protocol() =
+ $location.host() =
+ $location.port() =
+ $location.path() =
+ $location.search() =
+ $location.hash() =
+
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-hashbang-mode/index-production.html b/1.2.30/docs/examples/example-location-hashbang-mode/index-production.html new file mode 100644 index 0000000000..9cba2d597b --- /dev/null +++ b/1.2.30/docs/examples/example-location-hashbang-mode/index-production.html @@ -0,0 +1,34 @@ + + + + + Example - example-location-hashbang-mode-production + + + + + + + + + + + +
+


+
+ $location.protocol() =
+ $location.host() =
+ $location.port() =
+ $location.path() =
+ $location.search() =
+ $location.hash() =
+
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-hashbang-mode/index.html b/1.2.30/docs/examples/example-location-hashbang-mode/index.html new file mode 100644 index 0000000000..404e03d687 --- /dev/null +++ b/1.2.30/docs/examples/example-location-hashbang-mode/index.html @@ -0,0 +1,34 @@ + + + + + Example - example-location-hashbang-mode + + + + + + + + + + + +
+


+
+ $location.protocol() =
+ $location.host() =
+ $location.port() =
+ $location.path() =
+ $location.search() =
+ $location.hash() =
+
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-hashbang-mode/manifest.json b/1.2.30/docs/examples/example-location-hashbang-mode/manifest.json new file mode 100644 index 0000000000..504da50af8 --- /dev/null +++ b/1.2.30/docs/examples/example-location-hashbang-mode/manifest.json @@ -0,0 +1,10 @@ +{ + "name": "example-location-hashbang-mode", + "files": [ + "index-production.html", + "app.js", + "fakeBrowser.js", + "addressBar.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-hashbang-mode/protractor.js b/1.2.30/docs/examples/example-location-hashbang-mode/protractor.js new file mode 100644 index 0000000000..20a9785645 --- /dev/null +++ b/1.2.30/docs/examples/example-location-hashbang-mode/protractor.js @@ -0,0 +1,42 @@ + var addressBar = element(by.css("#addressBar")), + url = 'http://www.example.com/base/index.html#!/path?a=b#h'; + + it("should show fake browser info on load", function(){ + expect(addressBar.getAttribute('value')).toBe(url); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/path'); + expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}'); + expect(element(by.binding('$location.hash')).getText()).toBe('h'); + + }); + + it("should change $location accordingly", function(){ + var navigation = element.all(by.css("#navigation a")); + + navigation.get(0).click(); + + expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/index.html#!/first?a=b"); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/first'); + expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}'); + expect(element(by.binding('$location.hash')).getText()).toBe(''); + + + navigation.get(1).click(); + + expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/index.html#!/sec/ond?flag#hash"); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/sec/ond'); + expect(element(by.binding('$location.search')).getText()).toBe('{"flag":true}'); + expect(element(by.binding('$location.hash')).getText()).toBe('hash'); + + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-html5-mode/addressBar.js b/1.2.30/docs/examples/example-location-html5-mode/addressBar.js new file mode 100644 index 0000000000..18d61630bc --- /dev/null +++ b/1.2.30/docs/examples/example-location-html5-mode/addressBar.js @@ -0,0 +1,24 @@ + angular.module('address-bar', []) + .directive('ngAddressBar', function($browser, $timeout) { + return { + template: 'Address: ', + link: function(scope, element, attrs){ + var input = element.children("input"), delay; + + input.on('keypress keyup keydown', function(event) { + delay = (!delay ? $timeout(fireUrlChange, 250) : null); + event.stopPropagation(); + }) + .val($browser.url()); + + $browser.url = function(url) { + return url ? input.val(url) : input.val(); + }; + + function fireUrlChange() { + delay = null; + $browser.urlChange(input.val()); + } + } + }; + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-html5-mode/app.js b/1.2.30/docs/examples/example-location-html5-mode/app.js new file mode 100644 index 0000000000..d4b08b1f87 --- /dev/null +++ b/1.2.30/docs/examples/example-location-html5-mode/app.js @@ -0,0 +1,23 @@ + angular.module('html5-mode', ['fake-browser', 'address-bar']) + + .constant('initUrl', 'http://www.example.com/base/path?a=b#h') + .constant('baseHref', '/base/index.html') + .value('$sniffer', { history: true }) + + .controller("LocationController", function($scope, $location) { + $scope.$location = {}; + angular.forEach("protocol host port path search hash".split(" "), function(method){ + $scope.$location[method] = function(){ + var result = $location[method].call($location); + return angular.isObject(result) ? angular.toJson(result) : result; + }; + }); + }) + + .config(function($locationProvider) { + $locationProvider.html5Mode(true).hashPrefix('!'); + }) + + .run(function($rootElement) { + $rootElement.on('click', function(e) { e.stopPropagation(); }); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-html5-mode/fakeBrowser.js b/1.2.30/docs/examples/example-location-html5-mode/fakeBrowser.js new file mode 100644 index 0000000000..72a24e2656 --- /dev/null +++ b/1.2.30/docs/examples/example-location-html5-mode/fakeBrowser.js @@ -0,0 +1,24 @@ +angular.module('fake-browser', []) + +.config(function($provide) { + $provide.decorator('$browser', function($delegate, baseHref, initUrl) { + + $delegate.onUrlChange = function(fn) { + this.urlChange = fn; + }; + + $delegate.url = function() { + return initUrl; + }; + + $delegate.defer = function(fn, delay) { + setTimeout(function() { fn(); }, delay || 0); + }; + + $delegate.baseHref = function() { + return baseHref; + }; + + return $delegate; + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-html5-mode/index-debug.html b/1.2.30/docs/examples/example-location-html5-mode/index-debug.html new file mode 100644 index 0000000000..a3539a00f0 --- /dev/null +++ b/1.2.30/docs/examples/example-location-html5-mode/index-debug.html @@ -0,0 +1,34 @@ + + + + + Example - example-location-html5-mode-debug + + + + + + + + + + + +
+


+
+ $location.protocol() =
+ $location.host() =
+ $location.port() =
+ $location.path() =
+ $location.search() =
+ $location.hash() =
+
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-html5-mode/index-jquery.html b/1.2.30/docs/examples/example-location-html5-mode/index-jquery.html new file mode 100644 index 0000000000..000324ea2f --- /dev/null +++ b/1.2.30/docs/examples/example-location-html5-mode/index-jquery.html @@ -0,0 +1,35 @@ + + + + + Example - example-location-html5-mode-jquery + + + + + + + + + + + + +
+


+
+ $location.protocol() =
+ $location.host() =
+ $location.port() =
+ $location.path() =
+ $location.search() =
+ $location.hash() =
+
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-html5-mode/index-production.html b/1.2.30/docs/examples/example-location-html5-mode/index-production.html new file mode 100644 index 0000000000..3cf6ade0b7 --- /dev/null +++ b/1.2.30/docs/examples/example-location-html5-mode/index-production.html @@ -0,0 +1,34 @@ + + + + + Example - example-location-html5-mode-production + + + + + + + + + + + +
+


+
+ $location.protocol() =
+ $location.host() =
+ $location.port() =
+ $location.path() =
+ $location.search() =
+ $location.hash() =
+
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-html5-mode/index.html b/1.2.30/docs/examples/example-location-html5-mode/index.html new file mode 100644 index 0000000000..e2d053cf86 --- /dev/null +++ b/1.2.30/docs/examples/example-location-html5-mode/index.html @@ -0,0 +1,34 @@ + + + + + Example - example-location-html5-mode + + + + + + + + + + + +
+


+
+ $location.protocol() =
+ $location.host() =
+ $location.port() =
+ $location.path() =
+ $location.search() =
+ $location.hash() =
+
+ +
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-html5-mode/manifest.json b/1.2.30/docs/examples/example-location-html5-mode/manifest.json new file mode 100644 index 0000000000..d8e7e30e19 --- /dev/null +++ b/1.2.30/docs/examples/example-location-html5-mode/manifest.json @@ -0,0 +1,10 @@ +{ + "name": "example-location-html5-mode", + "files": [ + "index-production.html", + "app.js", + "fakeBrowser.js", + "addressBar.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-location-html5-mode/protractor.js b/1.2.30/docs/examples/example-location-html5-mode/protractor.js new file mode 100644 index 0000000000..77071717e9 --- /dev/null +++ b/1.2.30/docs/examples/example-location-html5-mode/protractor.js @@ -0,0 +1,42 @@ + var addressBar = element(by.css("#addressBar")), + url = 'http://www.example.com/base/path?a=b#h'; + + + it("should show fake browser info on load", function(){ + expect(addressBar.getAttribute('value')).toBe(url); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/path'); + expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}'); + expect(element(by.binding('$location.hash')).getText()).toBe('h'); + + }); + + it("should change $location accordingly", function(){ + var navigation = element.all(by.css("#navigation a")); + + navigation.get(0).click(); + + expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/first?a=b"); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/first'); + expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}'); + expect(element(by.binding('$location.hash')).getText()).toBe(''); + + + navigation.get(1).click(); + + expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/sec/ond?flag#hash"); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/sec/ond'); + expect(element(by.binding('$location.search')).getText()).toBe('{"flag":true}'); + expect(element(by.binding('$location.hash')).getText()).toBe('hash'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-multi-bootstrap/controller.js b/1.2.30/docs/examples/example-multi-bootstrap/controller.js new file mode 100644 index 0000000000..5f1ca61d14 --- /dev/null +++ b/1.2.30/docs/examples/example-multi-bootstrap/controller.js @@ -0,0 +1,6 @@ +var app = angular.module('multi-bootstrap', []) + +.controller('BrokenTable', function($scope) { + $scope.headings = ['One', 'Two', 'Three']; + $scope.fillings = [[1, 2, 3], ['A', 'B', 'C'], [7, 8, 9]]; +}); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-multi-bootstrap/index-debug.html b/1.2.30/docs/examples/example-multi-bootstrap/index-debug.html new file mode 100644 index 0000000000..755f137ebc --- /dev/null +++ b/1.2.30/docs/examples/example-multi-bootstrap/index-debug.html @@ -0,0 +1,27 @@ + + + + + Example - example-multi-bootstrap-debug + + + + + + + + + + +
+ + + + + + + +
{{heading}}
{{fill}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-multi-bootstrap/index-jquery.html b/1.2.30/docs/examples/example-multi-bootstrap/index-jquery.html new file mode 100644 index 0000000000..353565dbe8 --- /dev/null +++ b/1.2.30/docs/examples/example-multi-bootstrap/index-jquery.html @@ -0,0 +1,28 @@ + + + + + Example - example-multi-bootstrap-jquery + + + + + + + + + + + +
+ + + + + + + +
{{heading}}
{{fill}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-multi-bootstrap/index-production.html b/1.2.30/docs/examples/example-multi-bootstrap/index-production.html new file mode 100644 index 0000000000..a8f70cfad9 --- /dev/null +++ b/1.2.30/docs/examples/example-multi-bootstrap/index-production.html @@ -0,0 +1,27 @@ + + + + + Example - example-multi-bootstrap-production + + + + + + + + + + +
+ + + + + + + +
{{heading}}
{{fill}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-multi-bootstrap/index.html b/1.2.30/docs/examples/example-multi-bootstrap/index.html new file mode 100644 index 0000000000..94c2bef475 --- /dev/null +++ b/1.2.30/docs/examples/example-multi-bootstrap/index.html @@ -0,0 +1,27 @@ + + + + + Example - example-multi-bootstrap + + + + + + + + + + +
+ + + + + + + +
{{heading}}
{{fill}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-multi-bootstrap/manifest.json b/1.2.30/docs/examples/example-multi-bootstrap/manifest.json new file mode 100644 index 0000000000..b2685b5920 --- /dev/null +++ b/1.2.30/docs/examples/example-multi-bootstrap/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-multi-bootstrap", + "files": [ + "index-production.html", + "controller.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-multi-bootstrap/protractor.js b/1.2.30/docs/examples/example-multi-bootstrap/protractor.js new file mode 100644 index 0000000000..82f9ac81f2 --- /dev/null +++ b/1.2.30/docs/examples/example-multi-bootstrap/protractor.js @@ -0,0 +1,4 @@ +it('should only insert one table cell for each item in $scope.fillings', function() { + expect(element.all(by.css('td')).count()) + .toBe(9); +}); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngChange-directive/index-debug.html b/1.2.30/docs/examples/example-ngChange-directive/index-debug.html new file mode 100644 index 0000000000..92f9be620a --- /dev/null +++ b/1.2.30/docs/examples/example-ngChange-directive/index-debug.html @@ -0,0 +1,31 @@ + + + + + Example - example-ngChange-directive-debug + + + + + + + + + +
+ + +
+ debug = {{confirmed}}
+ counter = {{counter}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngChange-directive/index-jquery.html b/1.2.30/docs/examples/example-ngChange-directive/index-jquery.html new file mode 100644 index 0000000000..c91026cf0c --- /dev/null +++ b/1.2.30/docs/examples/example-ngChange-directive/index-jquery.html @@ -0,0 +1,32 @@ + + + + + Example - example-ngChange-directive-jquery + + + + + + + + + + +
+ + +
+ debug = {{confirmed}}
+ counter = {{counter}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngChange-directive/index-production.html b/1.2.30/docs/examples/example-ngChange-directive/index-production.html new file mode 100644 index 0000000000..57afd99587 --- /dev/null +++ b/1.2.30/docs/examples/example-ngChange-directive/index-production.html @@ -0,0 +1,31 @@ + + + + + Example - example-ngChange-directive-production + + + + + + + + + +
+ + +
+ debug = {{confirmed}}
+ counter = {{counter}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngChange-directive/index.html b/1.2.30/docs/examples/example-ngChange-directive/index.html new file mode 100644 index 0000000000..d6b803bb3d --- /dev/null +++ b/1.2.30/docs/examples/example-ngChange-directive/index.html @@ -0,0 +1,31 @@ + + + + + Example - example-ngChange-directive + + + + + + + + + +
+ + +
+ debug = {{confirmed}}
+ counter = {{counter}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngChange-directive/manifest.json b/1.2.30/docs/examples/example-ngChange-directive/manifest.json new file mode 100644 index 0000000000..738d489cdc --- /dev/null +++ b/1.2.30/docs/examples/example-ngChange-directive/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-ngChange-directive", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngChange-directive/protractor.js b/1.2.30/docs/examples/example-ngChange-directive/protractor.js new file mode 100644 index 0000000000..0e8c5f71da --- /dev/null +++ b/1.2.30/docs/examples/example-ngChange-directive/protractor.js @@ -0,0 +1,18 @@ + var counter = element(by.binding('counter')); + var debug = element(by.binding('confirmed')); + + it('should evaluate the expression if changing from view', function() { + expect(counter.getText()).toContain('0'); + + element(by.id('ng-change-example1')).click(); + + expect(counter.getText()).toContain('1'); + expect(debug.getText()).toContain('true'); + }); + + it('should not evaluate the expression if changing from model', function() { + element(by.id('ng-change-example2')).click(); + + expect(counter.getText()).toContain('0'); + expect(debug.getText()).toContain('true'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngController/app.js b/1.2.30/docs/examples/example-ngController/app.js new file mode 100644 index 0000000000..f9f5b3e4b8 --- /dev/null +++ b/1.2.30/docs/examples/example-ngController/app.js @@ -0,0 +1,27 @@ + angular.module('controllerExample', []) + .controller('SettingsController2', ['$scope', SettingsController2]); + + function SettingsController2($scope) { + $scope.name = "John Smith"; + $scope.contacts = [ + {type:'phone', value:'408 555 1212'}, + {type:'email', value:'john.smith@example.org'} ]; + + $scope.greet = function() { + alert($scope.name); + }; + + $scope.addContact = function() { + $scope.contacts.push({type:'email', value:'yourname@example.org'}); + }; + + $scope.removeContact = function(contactToRemove) { + var index = $scope.contacts.indexOf(contactToRemove); + $scope.contacts.splice(index, 1); + }; + + $scope.clearContact = function(contact) { + contact.type = 'phone'; + contact.value = ''; + }; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngController/index-debug.html b/1.2.30/docs/examples/example-ngController/index-debug.html new file mode 100644 index 0000000000..84f5972e44 --- /dev/null +++ b/1.2.30/docs/examples/example-ngController/index-debug.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngController-debug + + + + + + + + + +
+ Name: + [ greet ]
+ Contact: +
    +
  • + + + [ clear + | X ] +
  • +
  • [ add ]
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngController/index-jquery.html b/1.2.30/docs/examples/example-ngController/index-jquery.html new file mode 100644 index 0000000000..4268f791c7 --- /dev/null +++ b/1.2.30/docs/examples/example-ngController/index-jquery.html @@ -0,0 +1,34 @@ + + + + + Example - example-ngController-jquery + + + + + + + + + + +
+ Name: + [ greet ]
+ Contact: +
    +
  • + + + [ clear + | X ] +
  • +
  • [ add ]
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngController/index-production.html b/1.2.30/docs/examples/example-ngController/index-production.html new file mode 100644 index 0000000000..38a349f1e4 --- /dev/null +++ b/1.2.30/docs/examples/example-ngController/index-production.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngController-production + + + + + + + + + +
+ Name: + [ greet ]
+ Contact: +
    +
  • + + + [ clear + | X ] +
  • +
  • [ add ]
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngController/index.html b/1.2.30/docs/examples/example-ngController/index.html new file mode 100644 index 0000000000..8fe40aa898 --- /dev/null +++ b/1.2.30/docs/examples/example-ngController/index.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngController + + + + + + + + + +
+ Name: + [ greet ]
+ Contact: +
    +
  • + + + [ clear + | X ] +
  • +
  • [ add ]
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngController/manifest.json b/1.2.30/docs/examples/example-ngController/manifest.json new file mode 100644 index 0000000000..ae92ea9e23 --- /dev/null +++ b/1.2.30/docs/examples/example-ngController/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-ngController", + "files": [ + "index-production.html", + "app.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngController/protractor.js b/1.2.30/docs/examples/example-ngController/protractor.js new file mode 100644 index 0000000000..e8beea4100 --- /dev/null +++ b/1.2.30/docs/examples/example-ngController/protractor.js @@ -0,0 +1,28 @@ + it('should check controller', function() { + var container = element(by.id('ctrl-exmpl')); + + expect(container.element(by.model('name')) + .getAttribute('value')).toBe('John Smith'); + + var firstRepeat = + container.element(by.repeater('contact in contacts').row(0)); + var secondRepeat = + container.element(by.repeater('contact in contacts').row(1)); + + expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe('408 555 1212'); + expect(secondRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe('john.smith@example.org'); + + firstRepeat.element(by.linkText('clear')).click(); + + expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe(''); + + container.element(by.linkText('add')).click(); + + expect(container.element(by.repeater('contact in contacts').row(2)) + .element(by.model('contact.value')) + .getAttribute('value')) + .toBe('yourname@example.org'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngControllerAs/app.js b/1.2.30/docs/examples/example-ngControllerAs/app.js new file mode 100644 index 0000000000..ef08270fee --- /dev/null +++ b/1.2.30/docs/examples/example-ngControllerAs/app.js @@ -0,0 +1,27 @@ + angular.module('controllerAsExample', []) + .controller('SettingsController1', SettingsController1); + + function SettingsController1() { + this.name = "John Smith"; + this.contacts = [ + {type: 'phone', value: '408 555 1212'}, + {type: 'email', value: 'john.smith@example.org'} ]; + } + + SettingsController1.prototype.greet = function() { + alert(this.name); + }; + + SettingsController1.prototype.addContact = function() { + this.contacts.push({type: 'email', value: 'yourname@example.org'}); + }; + + SettingsController1.prototype.removeContact = function(contactToRemove) { + var index = this.contacts.indexOf(contactToRemove); + this.contacts.splice(index, 1); + }; + + SettingsController1.prototype.clearContact = function(contact) { + contact.type = 'phone'; + contact.value = ''; + }; \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngControllerAs/index-debug.html b/1.2.30/docs/examples/example-ngControllerAs/index-debug.html new file mode 100644 index 0000000000..2b5d702645 --- /dev/null +++ b/1.2.30/docs/examples/example-ngControllerAs/index-debug.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngControllerAs-debug + + + + + + + + + +
+ Name: + [ greet ]
+ Contact: +
    +
  • + + + [ clear + | X ] +
  • +
  • [ add ]
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngControllerAs/index-jquery.html b/1.2.30/docs/examples/example-ngControllerAs/index-jquery.html new file mode 100644 index 0000000000..4957869228 --- /dev/null +++ b/1.2.30/docs/examples/example-ngControllerAs/index-jquery.html @@ -0,0 +1,34 @@ + + + + + Example - example-ngControllerAs-jquery + + + + + + + + + + +
+ Name: + [ greet ]
+ Contact: +
    +
  • + + + [ clear + | X ] +
  • +
  • [ add ]
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngControllerAs/index-production.html b/1.2.30/docs/examples/example-ngControllerAs/index-production.html new file mode 100644 index 0000000000..91eb1bd5c7 --- /dev/null +++ b/1.2.30/docs/examples/example-ngControllerAs/index-production.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngControllerAs-production + + + + + + + + + +
+ Name: + [ greet ]
+ Contact: +
    +
  • + + + [ clear + | X ] +
  • +
  • [ add ]
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngControllerAs/index.html b/1.2.30/docs/examples/example-ngControllerAs/index.html new file mode 100644 index 0000000000..a3f3f60149 --- /dev/null +++ b/1.2.30/docs/examples/example-ngControllerAs/index.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngControllerAs + + + + + + + + + +
+ Name: + [ greet ]
+ Contact: +
    +
  • + + + [ clear + | X ] +
  • +
  • [ add ]
  • +
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngControllerAs/manifest.json b/1.2.30/docs/examples/example-ngControllerAs/manifest.json new file mode 100644 index 0000000000..b54b3acd59 --- /dev/null +++ b/1.2.30/docs/examples/example-ngControllerAs/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-ngControllerAs", + "files": [ + "index-production.html", + "app.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngControllerAs/protractor.js b/1.2.30/docs/examples/example-ngControllerAs/protractor.js new file mode 100644 index 0000000000..9a0b5e138f --- /dev/null +++ b/1.2.30/docs/examples/example-ngControllerAs/protractor.js @@ -0,0 +1,28 @@ + it('should check controller as', function() { + var container = element(by.id('ctrl-as-exmpl')); + expect(container.element(by.model('settings.name')) + .getAttribute('value')).toBe('John Smith'); + + var firstRepeat = + container.element(by.repeater('contact in settings.contacts').row(0)); + var secondRepeat = + container.element(by.repeater('contact in settings.contacts').row(1)); + + expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe('408 555 1212'); + + expect(secondRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe('john.smith@example.org'); + + firstRepeat.element(by.linkText('clear')).click(); + + expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe(''); + + container.element(by.linkText('add')).click(); + + expect(container.element(by.repeater('contact in settings.contacts').row(2)) + .element(by.model('contact.value')) + .getAttribute('value')) + .toBe('yourname@example.org'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngList-directive/index-debug.html b/1.2.30/docs/examples/example-ngList-directive/index-debug.html new file mode 100644 index 0000000000..a4a2ea3d24 --- /dev/null +++ b/1.2.30/docs/examples/example-ngList-directive/index-debug.html @@ -0,0 +1,32 @@ + + + + + Example - example-ngList-directive-debug + + + + + + + + + +
+ List: + + Required! +
+ names = {{names}}
+ myForm.namesInput.$valid = {{myForm.namesInput.$valid}}
+ myForm.namesInput.$error = {{myForm.namesInput.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngList-directive/index-jquery.html b/1.2.30/docs/examples/example-ngList-directive/index-jquery.html new file mode 100644 index 0000000000..35ed639f33 --- /dev/null +++ b/1.2.30/docs/examples/example-ngList-directive/index-jquery.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngList-directive-jquery + + + + + + + + + + +
+ List: + + Required! +
+ names = {{names}}
+ myForm.namesInput.$valid = {{myForm.namesInput.$valid}}
+ myForm.namesInput.$error = {{myForm.namesInput.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngList-directive/index-production.html b/1.2.30/docs/examples/example-ngList-directive/index-production.html new file mode 100644 index 0000000000..c2ec3fcb9e --- /dev/null +++ b/1.2.30/docs/examples/example-ngList-directive/index-production.html @@ -0,0 +1,32 @@ + + + + + Example - example-ngList-directive-production + + + + + + + + + +
+ List: + + Required! +
+ names = {{names}}
+ myForm.namesInput.$valid = {{myForm.namesInput.$valid}}
+ myForm.namesInput.$error = {{myForm.namesInput.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngList-directive/index.html b/1.2.30/docs/examples/example-ngList-directive/index.html new file mode 100644 index 0000000000..bf8c6e71ac --- /dev/null +++ b/1.2.30/docs/examples/example-ngList-directive/index.html @@ -0,0 +1,32 @@ + + + + + Example - example-ngList-directive + + + + + + + + + +
+ List: + + Required! +
+ names = {{names}}
+ myForm.namesInput.$valid = {{myForm.namesInput.$valid}}
+ myForm.namesInput.$error = {{myForm.namesInput.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngList-directive/manifest.json b/1.2.30/docs/examples/example-ngList-directive/manifest.json new file mode 100644 index 0000000000..f380b3b051 --- /dev/null +++ b/1.2.30/docs/examples/example-ngList-directive/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-ngList-directive", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngList-directive/protractor.js b/1.2.30/docs/examples/example-ngList-directive/protractor.js new file mode 100644 index 0000000000..5c4b0d2f08 --- /dev/null +++ b/1.2.30/docs/examples/example-ngList-directive/protractor.js @@ -0,0 +1,18 @@ + var listInput = element(by.model('names')); + var names = element(by.binding('{{names}}')); + var valid = element(by.binding('myForm.namesInput.$valid')); + var error = element(by.css('span.error')); + + it('should initialize to model', function() { + expect(names.getText()).toContain('["igor","misko","vojta"]'); + expect(valid.getText()).toContain('true'); + expect(error.getCssValue('display')).toBe('none'); + }); + + it('should be invalid if empty', function() { + listInput.clear(); + listInput.sendKeys(''); + + expect(names.getText()).toContain(''); + expect(valid.getText()).toContain('false'); + expect(error.getCssValue('display')).not.toBe('none'); }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngValue-directive/index-debug.html b/1.2.30/docs/examples/example-ngValue-directive/index-debug.html new file mode 100644 index 0000000000..b5e1776823 --- /dev/null +++ b/1.2.30/docs/examples/example-ngValue-directive/index-debug.html @@ -0,0 +1,34 @@ + + + + + Example - example-ngValue-directive-debug + + + + + + + + + +
+

Which is your favorite?

+ +
You chose {{my.favorite}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngValue-directive/index-jquery.html b/1.2.30/docs/examples/example-ngValue-directive/index-jquery.html new file mode 100644 index 0000000000..b70b4a0318 --- /dev/null +++ b/1.2.30/docs/examples/example-ngValue-directive/index-jquery.html @@ -0,0 +1,35 @@ + + + + + Example - example-ngValue-directive-jquery + + + + + + + + + + +
+

Which is your favorite?

+ +
You chose {{my.favorite}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngValue-directive/index-production.html b/1.2.30/docs/examples/example-ngValue-directive/index-production.html new file mode 100644 index 0000000000..c515e01d38 --- /dev/null +++ b/1.2.30/docs/examples/example-ngValue-directive/index-production.html @@ -0,0 +1,34 @@ + + + + + Example - example-ngValue-directive-production + + + + + + + + + +
+

Which is your favorite?

+ +
You chose {{my.favorite}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngValue-directive/index.html b/1.2.30/docs/examples/example-ngValue-directive/index.html new file mode 100644 index 0000000000..c94e899501 --- /dev/null +++ b/1.2.30/docs/examples/example-ngValue-directive/index.html @@ -0,0 +1,34 @@ + + + + + Example - example-ngValue-directive + + + + + + + + + +
+

Which is your favorite?

+ +
You chose {{my.favorite}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngValue-directive/manifest.json b/1.2.30/docs/examples/example-ngValue-directive/manifest.json new file mode 100644 index 0000000000..1e8f897466 --- /dev/null +++ b/1.2.30/docs/examples/example-ngValue-directive/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-ngValue-directive", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngValue-directive/protractor.js b/1.2.30/docs/examples/example-ngValue-directive/protractor.js new file mode 100644 index 0000000000..1b750cee10 --- /dev/null +++ b/1.2.30/docs/examples/example-ngValue-directive/protractor.js @@ -0,0 +1,9 @@ + var favorite = element(by.binding('my.favorite')); + + it('should initialize to model', function() { + expect(favorite.getText()).toContain('unicorns'); + }); + it('should bind the values to the inputs', function() { + element.all(by.model('my.favorite')).get(0).click(); + expect(favorite.getText()).toContain('pizza'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngView-directive/animations.css b/1.2.30/docs/examples/example-ngView-directive/animations.css new file mode 100644 index 0000000000..da5a8473ae --- /dev/null +++ b/1.2.30/docs/examples/example-ngView-directive/animations.css @@ -0,0 +1,39 @@ + .view-animate-container { + position:relative; + height:100px!important; + position:relative; + background:white; + border:1px solid black; + height:40px; + overflow:hidden; + } + + .view-animate { + padding:10px; + } + + .view-animate.ng-enter, .view-animate.ng-leave { + -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s; + transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s; + + display:block; + width:100%; + border-left:1px solid black; + + position:absolute; + top:0; + left:0; + right:0; + bottom:0; + padding:10px; + } + + .view-animate.ng-enter { + left:100%; + } + .view-animate.ng-enter.ng-enter-active { + left:0; + } + .view-animate.ng-leave.ng-leave-active { + left:-100%; + } \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngView-directive/book.html b/1.2.30/docs/examples/example-ngView-directive/book.html new file mode 100644 index 0000000000..1a50c4e977 --- /dev/null +++ b/1.2.30/docs/examples/example-ngView-directive/book.html @@ -0,0 +1,4 @@ +
+ controller: {{book.name}}
+ Book Id: {{book.params.bookId}}
+
\ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngView-directive/chapter.html b/1.2.30/docs/examples/example-ngView-directive/chapter.html new file mode 100644 index 0000000000..e12ec0779f --- /dev/null +++ b/1.2.30/docs/examples/example-ngView-directive/chapter.html @@ -0,0 +1,5 @@ +
+ controller: {{chapter.name}}
+ Book Id: {{chapter.params.bookId}}
+ Chapter Id: {{chapter.params.chapterId}} +
\ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngView-directive/index-debug.html b/1.2.30/docs/examples/example-ngView-directive/index-debug.html new file mode 100644 index 0000000000..590ce7640b --- /dev/null +++ b/1.2.30/docs/examples/example-ngView-directive/index-debug.html @@ -0,0 +1,40 @@ + + + + + Example - example-ngView-directive-debug + + + + + + + + + + + + +
+ Choose: + Moby | + Moby: Ch1 | + Gatsby | + Gatsby: Ch4 | + Scarlet Letter
+ +
+
+
+
+ +
$location.path() = {{main.$location.path()}}
+
$route.current.templateUrl = {{main.$route.current.templateUrl}}
+
$route.current.params = {{main.$route.current.params}}
+
$route.current.scope.name = {{main.$route.current.scope.name}}
+
$routeParams = {{main.$routeParams}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngView-directive/index-jquery.html b/1.2.30/docs/examples/example-ngView-directive/index-jquery.html new file mode 100644 index 0000000000..81a410ed07 --- /dev/null +++ b/1.2.30/docs/examples/example-ngView-directive/index-jquery.html @@ -0,0 +1,41 @@ + + + + + Example - example-ngView-directive-jquery + + + + + + + + + + + + + +
+ Choose: + Moby | + Moby: Ch1 | + Gatsby | + Gatsby: Ch4 | + Scarlet Letter
+ +
+
+
+
+ +
$location.path() = {{main.$location.path()}}
+
$route.current.templateUrl = {{main.$route.current.templateUrl}}
+
$route.current.params = {{main.$route.current.params}}
+
$route.current.scope.name = {{main.$route.current.scope.name}}
+
$routeParams = {{main.$routeParams}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngView-directive/index-production.html b/1.2.30/docs/examples/example-ngView-directive/index-production.html new file mode 100644 index 0000000000..eba501b217 --- /dev/null +++ b/1.2.30/docs/examples/example-ngView-directive/index-production.html @@ -0,0 +1,40 @@ + + + + + Example - example-ngView-directive-production + + + + + + + + + + + + +
+ Choose: + Moby | + Moby: Ch1 | + Gatsby | + Gatsby: Ch4 | + Scarlet Letter
+ +
+
+
+
+ +
$location.path() = {{main.$location.path()}}
+
$route.current.templateUrl = {{main.$route.current.templateUrl}}
+
$route.current.params = {{main.$route.current.params}}
+
$route.current.scope.name = {{main.$route.current.scope.name}}
+
$routeParams = {{main.$routeParams}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngView-directive/index.html b/1.2.30/docs/examples/example-ngView-directive/index.html new file mode 100644 index 0000000000..4e438925ec --- /dev/null +++ b/1.2.30/docs/examples/example-ngView-directive/index.html @@ -0,0 +1,40 @@ + + + + + Example - example-ngView-directive + + + + + + + + + + + + +
+ Choose: + Moby | + Moby: Ch1 | + Gatsby | + Gatsby: Ch4 | + Scarlet Letter
+ +
+
+
+
+ +
$location.path() = {{main.$location.path()}}
+
$route.current.templateUrl = {{main.$route.current.templateUrl}}
+
$route.current.params = {{main.$route.current.params}}
+
$route.current.scope.name = {{main.$route.current.scope.name}}
+
$routeParams = {{main.$routeParams}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngView-directive/manifest.json b/1.2.30/docs/examples/example-ngView-directive/manifest.json new file mode 100644 index 0000000000..5ebc47d05d --- /dev/null +++ b/1.2.30/docs/examples/example-ngView-directive/manifest.json @@ -0,0 +1,11 @@ +{ + "name": "example-ngView-directive", + "files": [ + "index-production.html", + "book.html", + "chapter.html", + "animations.css", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngView-directive/protractor.js b/1.2.30/docs/examples/example-ngView-directive/protractor.js new file mode 100644 index 0000000000..76425d75cd --- /dev/null +++ b/1.2.30/docs/examples/example-ngView-directive/protractor.js @@ -0,0 +1,13 @@ + it('should load and compile correct template', function() { + element(by.linkText('Moby: Ch1')).click(); + var content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: ChapterCtrl/); + expect(content).toMatch(/Book Id\: Moby/); + expect(content).toMatch(/Chapter Id\: 1/); + + element(by.partialLinkText('Scarlet')).click(); + + content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: BookCtrl/); + expect(content).toMatch(/Book Id\: Scarlet/); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-ngView-directive/script.js b/1.2.30/docs/examples/example-ngView-directive/script.js new file mode 100644 index 0000000000..71871e5e9e --- /dev/null +++ b/1.2.30/docs/examples/example-ngView-directive/script.js @@ -0,0 +1,31 @@ + angular.module('ngViewExample', ['ngRoute', 'ngAnimate']) + .config(['$routeProvider', '$locationProvider', + function($routeProvider, $locationProvider) { + $routeProvider + .when('/Book/:bookId', { + templateUrl: 'book.html', + controller: 'BookCtrl', + controllerAs: 'book' + }) + .when('/Book/:bookId/ch/:chapterId', { + templateUrl: 'chapter.html', + controller: 'ChapterCtrl', + controllerAs: 'chapter' + }); + + $locationProvider.html5Mode(true); + }]) + .controller('MainCtrl', ['$route', '$routeParams', '$location', + function($route, $routeParams, $location) { + this.$route = $route; + this.$location = $location; + this.$routeParams = $routeParams; + }]) + .controller('BookCtrl', ['$routeParams', function($routeParams) { + this.name = "BookCtrl"; + this.params = $routeParams; + }]) + .controller('ChapterCtrl', ['$routeParams', function($routeParams) { + this.name = "ChapterCtrl"; + this.params = $routeParams; + }]); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-number-input-directive/index-debug.html b/1.2.30/docs/examples/example-number-input-directive/index-debug.html new file mode 100644 index 0000000000..399c8351c4 --- /dev/null +++ b/1.2.30/docs/examples/example-number-input-directive/index-debug.html @@ -0,0 +1,34 @@ + + + + + Example - example-number-input-directive-debug + + + + + + + + + +
+ Number: + + Required! + + Not valid number! + value = {{value}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-number-input-directive/index-jquery.html b/1.2.30/docs/examples/example-number-input-directive/index-jquery.html new file mode 100644 index 0000000000..7df5a490bd --- /dev/null +++ b/1.2.30/docs/examples/example-number-input-directive/index-jquery.html @@ -0,0 +1,35 @@ + + + + + Example - example-number-input-directive-jquery + + + + + + + + + + +
+ Number: + + Required! + + Not valid number! + value = {{value}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-number-input-directive/index-production.html b/1.2.30/docs/examples/example-number-input-directive/index-production.html new file mode 100644 index 0000000000..06ba6a67a6 --- /dev/null +++ b/1.2.30/docs/examples/example-number-input-directive/index-production.html @@ -0,0 +1,34 @@ + + + + + Example - example-number-input-directive-production + + + + + + + + + +
+ Number: + + Required! + + Not valid number! + value = {{value}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-number-input-directive/index.html b/1.2.30/docs/examples/example-number-input-directive/index.html new file mode 100644 index 0000000000..4ed9615ddd --- /dev/null +++ b/1.2.30/docs/examples/example-number-input-directive/index.html @@ -0,0 +1,34 @@ + + + + + Example - example-number-input-directive + + + + + + + + + +
+ Number: + + Required! + + Not valid number! + value = {{value}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-number-input-directive/manifest.json b/1.2.30/docs/examples/example-number-input-directive/manifest.json new file mode 100644 index 0000000000..514d04f3b7 --- /dev/null +++ b/1.2.30/docs/examples/example-number-input-directive/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-number-input-directive", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-number-input-directive/protractor.js b/1.2.30/docs/examples/example-number-input-directive/protractor.js new file mode 100644 index 0000000000..f03b0e5549 --- /dev/null +++ b/1.2.30/docs/examples/example-number-input-directive/protractor.js @@ -0,0 +1,22 @@ + var value = element(by.binding('value')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('value')); + + it('should initialize to model', function() { + expect(value.getText()).toContain('12'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if over max', function() { + input.clear(); + input.sendKeys('123'); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('false'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-radio-input-directive/index-debug.html b/1.2.30/docs/examples/example-radio-input-directive/index-debug.html new file mode 100644 index 0000000000..3064d26a52 --- /dev/null +++ b/1.2.30/docs/examples/example-radio-input-directive/index-debug.html @@ -0,0 +1,32 @@ + + + + + Example - example-radio-input-directive-debug + + + + + + + + + +
+ Red
+ Green
+ Blue
+ color = {{color | json}}
+
+ Note that `ng-value="specialValue"` sets radio item's value to be the value of `$scope.specialValue`. + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-radio-input-directive/index-jquery.html b/1.2.30/docs/examples/example-radio-input-directive/index-jquery.html new file mode 100644 index 0000000000..247785879e --- /dev/null +++ b/1.2.30/docs/examples/example-radio-input-directive/index-jquery.html @@ -0,0 +1,33 @@ + + + + + Example - example-radio-input-directive-jquery + + + + + + + + + + +
+ Red
+ Green
+ Blue
+ color = {{color | json}}
+
+ Note that `ng-value="specialValue"` sets radio item's value to be the value of `$scope.specialValue`. + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-radio-input-directive/index-production.html b/1.2.30/docs/examples/example-radio-input-directive/index-production.html new file mode 100644 index 0000000000..57f6b4774a --- /dev/null +++ b/1.2.30/docs/examples/example-radio-input-directive/index-production.html @@ -0,0 +1,32 @@ + + + + + Example - example-radio-input-directive-production + + + + + + + + + +
+ Red
+ Green
+ Blue
+ color = {{color | json}}
+
+ Note that `ng-value="specialValue"` sets radio item's value to be the value of `$scope.specialValue`. + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-radio-input-directive/index.html b/1.2.30/docs/examples/example-radio-input-directive/index.html new file mode 100644 index 0000000000..f6f152e883 --- /dev/null +++ b/1.2.30/docs/examples/example-radio-input-directive/index.html @@ -0,0 +1,32 @@ + + + + + Example - example-radio-input-directive + + + + + + + + + +
+ Red
+ Green
+ Blue
+ color = {{color | json}}
+
+ Note that `ng-value="specialValue"` sets radio item's value to be the value of `$scope.specialValue`. + + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-radio-input-directive/manifest.json b/1.2.30/docs/examples/example-radio-input-directive/manifest.json new file mode 100644 index 0000000000..863bef42e2 --- /dev/null +++ b/1.2.30/docs/examples/example-radio-input-directive/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-radio-input-directive", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-radio-input-directive/protractor.js b/1.2.30/docs/examples/example-radio-input-directive/protractor.js new file mode 100644 index 0000000000..8ba665c237 --- /dev/null +++ b/1.2.30/docs/examples/example-radio-input-directive/protractor.js @@ -0,0 +1,9 @@ + it('should change state', function() { + var color = element(by.binding('color')); + + expect(color.getText()).toContain('blue'); + + element.all(by.model('color')).get(0).click(); + + expect(color.getText()).toContain('red'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-text-input-directive/index-debug.html b/1.2.30/docs/examples/example-text-input-directive/index-debug.html new file mode 100644 index 0000000000..5a48e2e9fb --- /dev/null +++ b/1.2.30/docs/examples/example-text-input-directive/index-debug.html @@ -0,0 +1,36 @@ + + + + + Example - example-text-input-directive-debug + + + + + + + + + +
+ Single word: + + Required! + + Single word only! + + text = {{text}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-text-input-directive/index-jquery.html b/1.2.30/docs/examples/example-text-input-directive/index-jquery.html new file mode 100644 index 0000000000..7078dd6f8c --- /dev/null +++ b/1.2.30/docs/examples/example-text-input-directive/index-jquery.html @@ -0,0 +1,37 @@ + + + + + Example - example-text-input-directive-jquery + + + + + + + + + + +
+ Single word: + + Required! + + Single word only! + + text = {{text}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-text-input-directive/index-production.html b/1.2.30/docs/examples/example-text-input-directive/index-production.html new file mode 100644 index 0000000000..f61e3823b3 --- /dev/null +++ b/1.2.30/docs/examples/example-text-input-directive/index-production.html @@ -0,0 +1,36 @@ + + + + + Example - example-text-input-directive-production + + + + + + + + + +
+ Single word: + + Required! + + Single word only! + + text = {{text}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-text-input-directive/index.html b/1.2.30/docs/examples/example-text-input-directive/index.html new file mode 100644 index 0000000000..ab131abec8 --- /dev/null +++ b/1.2.30/docs/examples/example-text-input-directive/index.html @@ -0,0 +1,36 @@ + + + + + Example - example-text-input-directive + + + + + + + + + +
+ Single word: + + Required! + + Single word only! + + text = {{text}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-text-input-directive/manifest.json b/1.2.30/docs/examples/example-text-input-directive/manifest.json new file mode 100644 index 0000000000..2612b8ac3a --- /dev/null +++ b/1.2.30/docs/examples/example-text-input-directive/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-text-input-directive", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-text-input-directive/protractor.js b/1.2.30/docs/examples/example-text-input-directive/protractor.js new file mode 100644 index 0000000000..8e933ee6d4 --- /dev/null +++ b/1.2.30/docs/examples/example-text-input-directive/protractor.js @@ -0,0 +1,23 @@ + var text = element(by.binding('text')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('text')); + + it('should initialize to model', function() { + expect(text.getText()).toContain('guest'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + + expect(text.getText()).toEqual('text ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if multi word', function() { + input.clear(); + input.sendKeys('hello world'); + + expect(valid.getText()).toContain('false'); + }); \ No newline at end of file diff --git a/1.2.30/docs/examples/example-url-input-directive/index-debug.html b/1.2.30/docs/examples/example-url-input-directive/index-debug.html new file mode 100644 index 0000000000..4991dc23ba --- /dev/null +++ b/1.2.30/docs/examples/example-url-input-directive/index-debug.html @@ -0,0 +1,34 @@ + + + + + Example - example-url-input-directive-debug + + + + + + + + + +
+ URL: + + Required! + + Not valid url! + text = {{text}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+ myForm.$error.url = {{!!myForm.$error.url}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-url-input-directive/index-jquery.html b/1.2.30/docs/examples/example-url-input-directive/index-jquery.html new file mode 100644 index 0000000000..f7138c1478 --- /dev/null +++ b/1.2.30/docs/examples/example-url-input-directive/index-jquery.html @@ -0,0 +1,35 @@ + + + + + Example - example-url-input-directive-jquery + + + + + + + + + + +
+ URL: + + Required! + + Not valid url! + text = {{text}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+ myForm.$error.url = {{!!myForm.$error.url}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-url-input-directive/index-production.html b/1.2.30/docs/examples/example-url-input-directive/index-production.html new file mode 100644 index 0000000000..cdf83c6fa9 --- /dev/null +++ b/1.2.30/docs/examples/example-url-input-directive/index-production.html @@ -0,0 +1,34 @@ + + + + + Example - example-url-input-directive-production + + + + + + + + + +
+ URL: + + Required! + + Not valid url! + text = {{text}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+ myForm.$error.url = {{!!myForm.$error.url}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-url-input-directive/index.html b/1.2.30/docs/examples/example-url-input-directive/index.html new file mode 100644 index 0000000000..2affab8661 --- /dev/null +++ b/1.2.30/docs/examples/example-url-input-directive/index.html @@ -0,0 +1,34 @@ + + + + + Example - example-url-input-directive + + + + + + + + + +
+ URL: + + Required! + + Not valid url! + text = {{text}}
+ myForm.input.$valid = {{myForm.input.$valid}}
+ myForm.input.$error = {{myForm.input.$error}}
+ myForm.$valid = {{myForm.$valid}}
+ myForm.$error.required = {{!!myForm.$error.required}}
+ myForm.$error.url = {{!!myForm.$error.url}}
+
+ + \ No newline at end of file diff --git a/1.2.30/docs/examples/example-url-input-directive/manifest.json b/1.2.30/docs/examples/example-url-input-directive/manifest.json new file mode 100644 index 0000000000..a92554ac20 --- /dev/null +++ b/1.2.30/docs/examples/example-url-input-directive/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-url-input-directive", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/1.2.30/docs/examples/example-url-input-directive/protractor.js b/1.2.30/docs/examples/example-url-input-directive/protractor.js new file mode 100644 index 0000000000..41ffdbe3b4 --- /dev/null +++ b/1.2.30/docs/examples/example-url-input-directive/protractor.js @@ -0,0 +1,23 @@ + var text = element(by.binding('text')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('text')); + + it('should initialize to model', function() { + expect(text.getText()).toContain('http://google.com'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + + expect(text.getText()).toEqual('text ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if not url', function() { + input.clear(); + input.sendKeys('box'); + + expect(valid.getText()).toContain('false'); + }); \ No newline at end of file diff --git a/1.2.30/docs/img/AngularJS-small.png b/1.2.30/docs/img/AngularJS-small.png new file mode 100644 index 0000000000..ab5e20f883 Binary files /dev/null and b/1.2.30/docs/img/AngularJS-small.png differ diff --git a/1.2.30/docs/img/One_Way_Data_Binding.png b/1.2.30/docs/img/One_Way_Data_Binding.png new file mode 100644 index 0000000000..60e7e3bf32 Binary files /dev/null and b/1.2.30/docs/img/One_Way_Data_Binding.png differ diff --git a/1.2.30/docs/img/Two_Way_Data_Binding.png b/1.2.30/docs/img/Two_Way_Data_Binding.png new file mode 100644 index 0000000000..3a9c6d1ecc Binary files /dev/null and b/1.2.30/docs/img/Two_Way_Data_Binding.png differ diff --git a/1.2.30/docs/img/angular_parts.png b/1.2.30/docs/img/angular_parts.png new file mode 100644 index 0000000000..a33a10ba7d Binary files /dev/null and b/1.2.30/docs/img/angular_parts.png differ diff --git a/1.2.30/docs/img/angularjs-for-header-only.svg b/1.2.30/docs/img/angularjs-for-header-only.svg new file mode 100644 index 0000000000..68689b6bb1 --- /dev/null +++ b/1.2.30/docs/img/angularjs-for-header-only.svg @@ -0,0 +1,41 @@ + + + +]> + + + + + + + + + + + + + + + + + diff --git a/1.2.30/docs/img/bullet.png b/1.2.30/docs/img/bullet.png new file mode 100755 index 0000000000..3575a8e60f Binary files /dev/null and b/1.2.30/docs/img/bullet.png differ diff --git a/1.2.30/docs/img/form_data_flow.png b/1.2.30/docs/img/form_data_flow.png new file mode 100644 index 0000000000..60e947a595 Binary files /dev/null and b/1.2.30/docs/img/form_data_flow.png differ diff --git a/1.2.30/docs/img/glyphicons-halflings-white.png b/1.2.30/docs/img/glyphicons-halflings-white.png new file mode 100644 index 0000000000..a20760bfde Binary files /dev/null and b/1.2.30/docs/img/glyphicons-halflings-white.png differ diff --git a/1.2.30/docs/img/glyphicons-halflings.png b/1.2.30/docs/img/glyphicons-halflings.png new file mode 100644 index 0000000000..92d4445dfd Binary files /dev/null and b/1.2.30/docs/img/glyphicons-halflings.png differ diff --git a/1.2.30/docs/img/guide/concepts-databinding1.png b/1.2.30/docs/img/guide/concepts-databinding1.png new file mode 100644 index 0000000000..87b7ffd0bf Binary files /dev/null and b/1.2.30/docs/img/guide/concepts-databinding1.png differ diff --git a/1.2.30/docs/img/guide/concepts-databinding2.png b/1.2.30/docs/img/guide/concepts-databinding2.png new file mode 100644 index 0000000000..be8cbafe29 Binary files /dev/null and b/1.2.30/docs/img/guide/concepts-databinding2.png differ diff --git a/1.2.30/docs/img/guide/concepts-directive.png b/1.2.30/docs/img/guide/concepts-directive.png new file mode 100644 index 0000000000..b77d5f8ec9 Binary files /dev/null and b/1.2.30/docs/img/guide/concepts-directive.png differ diff --git a/1.2.30/docs/img/guide/concepts-module-injector.png b/1.2.30/docs/img/guide/concepts-module-injector.png new file mode 100644 index 0000000000..31fcf84c62 Binary files /dev/null and b/1.2.30/docs/img/guide/concepts-module-injector.png differ diff --git a/1.2.30/docs/img/guide/concepts-module-service.png b/1.2.30/docs/img/guide/concepts-module-service.png new file mode 100644 index 0000000000..b7580be21b Binary files /dev/null and b/1.2.30/docs/img/guide/concepts-module-service.png differ diff --git a/1.2.30/docs/img/guide/concepts-runtime.png b/1.2.30/docs/img/guide/concepts-runtime.png new file mode 100644 index 0000000000..eededc2ab6 Binary files /dev/null and b/1.2.30/docs/img/guide/concepts-runtime.png differ diff --git a/1.2.30/docs/img/guide/concepts-scope.png b/1.2.30/docs/img/guide/concepts-scope.png new file mode 100644 index 0000000000..83ad8f8f43 Binary files /dev/null and b/1.2.30/docs/img/guide/concepts-scope.png differ diff --git a/1.2.30/docs/img/guide/concepts-startup.png b/1.2.30/docs/img/guide/concepts-startup.png new file mode 100644 index 0000000000..b896a2b516 Binary files /dev/null and b/1.2.30/docs/img/guide/concepts-startup.png differ diff --git a/1.2.30/docs/img/guide/concepts-view.png b/1.2.30/docs/img/guide/concepts-view.png new file mode 100644 index 0000000000..0222544bee Binary files /dev/null and b/1.2.30/docs/img/guide/concepts-view.png differ diff --git a/1.2.30/docs/img/guide/di_sequence_final.png b/1.2.30/docs/img/guide/di_sequence_final.png new file mode 100644 index 0000000000..d4d743bdbc Binary files /dev/null and b/1.2.30/docs/img/guide/di_sequence_final.png differ diff --git a/1.2.30/docs/img/guide/dom_scope_final.png b/1.2.30/docs/img/guide/dom_scope_final.png new file mode 100644 index 0000000000..c6385d12ed Binary files /dev/null and b/1.2.30/docs/img/guide/dom_scope_final.png differ diff --git a/1.2.30/docs/img/guide/hashbang_vs_regular_url.jpg b/1.2.30/docs/img/guide/hashbang_vs_regular_url.jpg new file mode 100644 index 0000000000..632b4febad Binary files /dev/null and b/1.2.30/docs/img/guide/hashbang_vs_regular_url.jpg differ diff --git a/1.2.30/docs/img/guide/scenario_runner.png b/1.2.30/docs/img/guide/scenario_runner.png new file mode 100644 index 0000000000..a39037a0aa Binary files /dev/null and b/1.2.30/docs/img/guide/scenario_runner.png differ diff --git a/1.2.30/docs/img/guide/simple_scope_final.png b/1.2.30/docs/img/guide/simple_scope_final.png new file mode 100644 index 0000000000..99a04797a5 Binary files /dev/null and b/1.2.30/docs/img/guide/simple_scope_final.png differ diff --git a/1.2.30/docs/img/helloworld.png b/1.2.30/docs/img/helloworld.png new file mode 100644 index 0000000000..957ce8e98b Binary files /dev/null and b/1.2.30/docs/img/helloworld.png differ diff --git a/1.2.30/docs/img/helloworld_2way.png b/1.2.30/docs/img/helloworld_2way.png new file mode 100644 index 0000000000..2c02313c1b Binary files /dev/null and b/1.2.30/docs/img/helloworld_2way.png differ diff --git a/1.2.30/docs/img/tutorial/catalog_screen.png b/1.2.30/docs/img/tutorial/catalog_screen.png new file mode 100644 index 0000000000..0b1968c5fb Binary files /dev/null and b/1.2.30/docs/img/tutorial/catalog_screen.png differ diff --git a/1.2.30/docs/img/tutorial/tutorial_00.png b/1.2.30/docs/img/tutorial/tutorial_00.png new file mode 100644 index 0000000000..65f3973eba Binary files /dev/null and b/1.2.30/docs/img/tutorial/tutorial_00.png differ diff --git a/1.2.30/docs/img/tutorial/tutorial_00_final.png b/1.2.30/docs/img/tutorial/tutorial_00_final.png new file mode 100644 index 0000000000..838a094483 Binary files /dev/null and b/1.2.30/docs/img/tutorial/tutorial_00_final.png differ diff --git a/1.2.30/docs/img/tutorial/tutorial_02.png b/1.2.30/docs/img/tutorial/tutorial_02.png new file mode 100644 index 0000000000..b4c1cab16d Binary files /dev/null and b/1.2.30/docs/img/tutorial/tutorial_02.png differ diff --git a/1.2.30/docs/img/tutorial/tutorial_03.png b/1.2.30/docs/img/tutorial/tutorial_03.png new file mode 100644 index 0000000000..3e432a352e Binary files /dev/null and b/1.2.30/docs/img/tutorial/tutorial_03.png differ diff --git a/1.2.30/docs/img/tutorial/tutorial_04.png b/1.2.30/docs/img/tutorial/tutorial_04.png new file mode 100644 index 0000000000..3d028771dc Binary files /dev/null and b/1.2.30/docs/img/tutorial/tutorial_04.png differ diff --git a/1.2.30/docs/img/tutorial/tutorial_05.png b/1.2.30/docs/img/tutorial/tutorial_05.png new file mode 100644 index 0000000000..be30217427 Binary files /dev/null and b/1.2.30/docs/img/tutorial/tutorial_05.png differ diff --git a/1.2.30/docs/img/tutorial/tutorial_05.pptx b/1.2.30/docs/img/tutorial/tutorial_05.pptx new file mode 100644 index 0000000000..1afe4c3df5 Binary files /dev/null and b/1.2.30/docs/img/tutorial/tutorial_05.pptx differ diff --git a/1.2.30/docs/img/tutorial/tutorial_07_final.png b/1.2.30/docs/img/tutorial/tutorial_07_final.png new file mode 100644 index 0000000000..3e7776c460 Binary files /dev/null and b/1.2.30/docs/img/tutorial/tutorial_07_final.png differ diff --git a/1.2.30/docs/img/tutorial/tutorial_08-09_final.png b/1.2.30/docs/img/tutorial/tutorial_08-09_final.png new file mode 100644 index 0000000000..02601d241b Binary files /dev/null and b/1.2.30/docs/img/tutorial/tutorial_08-09_final.png differ diff --git a/1.2.30/docs/img/tutorial/tutorial_10-11_final.png b/1.2.30/docs/img/tutorial/tutorial_10-11_final.png new file mode 100644 index 0000000000..55a821ad18 Binary files /dev/null and b/1.2.30/docs/img/tutorial/tutorial_10-11_final.png differ diff --git a/1.2.30/docs/index-debug.html b/1.2.30/docs/index-debug.html new file mode 100644 index 0000000000..e913ba1e96 --- /dev/null +++ b/1.2.30/docs/index-debug.html @@ -0,0 +1,260 @@ + + + + + + + + + AngularJS + + + + +
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+ +
+ + +
+ + diff --git a/1.2.30/docs/index-jquery.html b/1.2.30/docs/index-jquery.html new file mode 100644 index 0000000000..207717f396 --- /dev/null +++ b/1.2.30/docs/index-jquery.html @@ -0,0 +1,261 @@ + + + + + + + + + AngularJS + + + + +
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+ +
+ + +
+ + diff --git a/1.2.30/docs/index-production.html b/1.2.30/docs/index-production.html new file mode 100644 index 0000000000..f287f757ce --- /dev/null +++ b/1.2.30/docs/index-production.html @@ -0,0 +1,260 @@ + + + + + + + + + AngularJS + + + + +
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+ +
+ + +
+ + diff --git a/1.2.30/docs/index.html b/1.2.30/docs/index.html new file mode 100644 index 0000000000..c1cd89f22b --- /dev/null +++ b/1.2.30/docs/index.html @@ -0,0 +1,260 @@ + + + + + + + + + AngularJS + + + + +
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+ +
+ + +
+ + diff --git a/1.2.30/docs/js/angular-bootstrap/bootstrap.js b/1.2.30/docs/js/angular-bootstrap/bootstrap.js new file mode 100644 index 0000000000..a20f06a416 --- /dev/null +++ b/1.2.30/docs/js/angular-bootstrap/bootstrap.js @@ -0,0 +1,442 @@ +'use strict'; + +var directive = {}; + +directive.runnableExample = ['$templateCache', '$document', function($templateCache, $document) { + var exampleClassNameSelector = '.runnable-example-file'; + var doc = $document[0]; + var tpl = + ''; + + return { + restrict: 'C', + scope : true, + controller : ['$scope', function($scope) { + $scope.setTab = function(index) { + var tab = $scope.tabs[index]; + $scope.activeTabIndex = index; + $scope.$broadcast('tabChange', index, tab); + }; + }], + compile : function(element) { + element.html(tpl + element.html()); + return function(scope, element) { + var node = element[0]; + var examples = node.querySelectorAll(exampleClassNameSelector); + var tabs = [], now = Date.now(); + angular.forEach(examples, function(child, index) { + tabs.push(child.getAttribute('name')); + }); + + if(tabs.length > 0) { + scope.tabs = tabs; + scope.$on('tabChange', function(e, index, title) { + angular.forEach(examples, function(child) { + child.style.display = 'none'; + }); + var selected = examples[index]; + selected.style.display = 'block'; + }); + scope.setTab(0); + } + } + } + }; +}]; + +directive.dropdownToggle = + ['$document', '$location', '$window', + function ($document, $location, $window) { + var openElement = null, close; + return { + restrict: 'C', + link: function(scope, element, attrs) { + scope.$watch(function dropdownTogglePathWatch(){return $location.path();}, function dropdownTogglePathWatchAction() { + close && close(); + }); + + element.parent().on('click', function(event) { + close && close(); + }); + + element.on('click', function(event) { + event.preventDefault(); + event.stopPropagation(); + + var iWasOpen = false; + + if (openElement) { + iWasOpen = openElement === element; + close(); + } + + if (!iWasOpen){ + element.parent().addClass('open'); + openElement = element; + + close = function (event) { + event && event.preventDefault(); + event && event.stopPropagation(); + $document.off('click', close); + element.parent().removeClass('open'); + close = null; + openElement = null; + } + + $document.on('click', close); + } + }); + } + }; + }]; + +directive.syntax = function() { + return { + restrict: 'A', + link: function(scope, element, attrs) { + function makeLink(type, text, link, icon) { + return '' + + ' ' + text + + ''; + }; + + var html = ''; + var types = { + 'github' : { + text : 'View on Github', + key : 'syntaxGithub', + icon : 'icon-github' + }, + 'plunkr' : { + text : 'View on Plunkr', + key : 'syntaxPlunkr', + icon : 'icon-arrow-down' + }, + 'jsfiddle' : { + text : 'View on JSFiddle', + key : 'syntaxFiddle', + icon : 'icon-cloud' + } + }; + for(var type in types) { + var data = types[type]; + var link = attrs[data.key]; + if(link) { + html += makeLink(type, data.text, link, data.icon); + } + }; + + var nav = document.createElement('nav'); + nav.className = 'syntax-links'; + nav.innerHTML = html; + + var node = element[0]; + var par = node.parentNode; + par.insertBefore(nav, node); + } + } +} + +directive.tabbable = function() { + return { + restrict: 'C', + compile: function(element) { + var navTabs = angular.element(''), + tabContent = angular.element('
'); + + tabContent.append(element.contents()); + element.append(navTabs).append(tabContent); + }, + controller: ['$scope', '$element', function($scope, $element) { + var navTabs = $element.contents().eq(0), + ngModel = $element.controller('ngModel') || {}, + tabs = [], + selectedTab; + + ngModel.$render = function() { + var $viewValue = this.$viewValue; + + if (selectedTab ? (selectedTab.value != $viewValue) : $viewValue) { + if(selectedTab) { + selectedTab.paneElement.removeClass('active'); + selectedTab.tabElement.removeClass('active'); + selectedTab = null; + } + if($viewValue) { + for(var i = 0, ii = tabs.length; i < ii; i++) { + if ($viewValue == tabs[i].value) { + selectedTab = tabs[i]; + break; + } + } + if (selectedTab) { + selectedTab.paneElement.addClass('active'); + selectedTab.tabElement.addClass('active'); + } + } + + } + }; + + this.addPane = function(element, attr) { + var li = angular.element('
  • '), + a = li.find('a'), + tab = { + paneElement: element, + paneAttrs: attr, + tabElement: li + }; + + tabs.push(tab); + + attr.$observe('value', update)(); + attr.$observe('title', function(){ update(); a.text(tab.title); })(); + + function update() { + tab.title = attr.title; + tab.value = attr.value || attr.title; + if (!ngModel.$setViewValue && (!ngModel.$viewValue || tab == selectedTab)) { + // we are not part of angular + ngModel.$viewValue = tab.value; + } + ngModel.$render(); + } + + navTabs.append(li); + li.on('click', function(event) { + event.preventDefault(); + event.stopPropagation(); + if (ngModel.$setViewValue) { + $scope.$apply(function() { + ngModel.$setViewValue(tab.value); + ngModel.$render(); + }); + } else { + // we are not part of angular + ngModel.$viewValue = tab.value; + ngModel.$render(); + } + }); + + return function() { + tab.tabElement.remove(); + for(var i = 0, ii = tabs.length; i < ii; i++ ) { + if (tab == tabs[i]) { + tabs.splice(i, 1); + } + } + }; + } + }] + }; +}; + +directive.table = function() { + return { + restrict: 'E', + link: function(scope, element, attrs) { + if (!attrs['class']) { + element.addClass('table table-bordered table-striped code-table'); + } + } + }; +}; + +var popoverElement = function() { + var object = { + init : function() { + this.element = angular.element( + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + ); + this.node = this.element[0]; + this.element.css({ + 'display':'block', + 'position':'absolute' + }); + angular.element(document.body).append(this.element); + + var inner = this.element.children()[1]; + this.titleElement = angular.element(inner.childNodes[0].firstChild); + this.contentElement = angular.element(inner.childNodes[1]); + + //stop the click on the tooltip + this.element.bind('click', function(event) { + event.preventDefault(); + event.stopPropagation(); + }); + + var self = this; + angular.element(document.body).bind('click',function(event) { + if(self.visible()) self.hide(); + }); + }, + + show : function(x,y) { + this.element.addClass('visible'); + this.position(x || 0, y || 0); + }, + + hide : function() { + this.element.removeClass('visible'); + this.position(-9999,-9999); + }, + + visible : function() { + return this.position().y >= 0; + }, + + isSituatedAt : function(element) { + return this.besideElement ? element[0] == this.besideElement[0] : false; + }, + + title : function(value) { + return this.titleElement.html(value); + }, + + content : function(value) { + if(value && value.length > 0) { + value = marked(value); + } + return this.contentElement.html(value); + }, + + positionArrow : function(position) { + this.node.className = 'popover ' + position; + }, + + positionAway : function() { + this.besideElement = null; + this.hide(); + }, + + positionBeside : function(element) { + this.besideElement = element; + + var elm = element[0]; + var x = elm.offsetLeft; + var y = elm.offsetTop; + x -= 30; + y -= this.node.offsetHeight + 10; + this.show(x,y); + }, + + position : function(x,y) { + if(x != null && y != null) { + this.element.css('left',x + 'px'); + this.element.css('top', y + 'px'); + } + else { + return { + x : this.node.offsetLeft, + y : this.node.offsetTop + }; + } + } + }; + + object.init(); + object.hide(); + + return object; +}; + +directive.popover = ['popoverElement', function(popover) { + return { + restrict: 'A', + priority : 500, + link: function(scope, element, attrs) { + element.bind('click',function(event) { + event.preventDefault(); + event.stopPropagation(); + if(popover.isSituatedAt(element) && popover.visible()) { + popover.title(''); + popover.content(''); + popover.positionAway(); + } + else { + popover.title(attrs.title); + popover.content(attrs.content); + popover.positionBeside(element); + } + }); + } + } +}]; + +directive.tabPane = function() { + return { + require: '^tabbable', + restrict: 'C', + link: function(scope, element, attrs, tabsCtrl) { + element.on('$remove', tabsCtrl.addPane(element, attrs)); + } + }; +}; + +directive.foldout = ['$http', '$animate','$window', function($http, $animate, $window) { + return { + restrict: 'A', + priority : 500, + link: function(scope, element, attrs) { + var container, loading, url = attrs.url; + if(/\/build\//.test($window.location.href)) { + url = '/build/docs' + url; + } + element.bind('click',function() { + scope.$apply(function() { + if(!container) { + if(loading) return; + + loading = true; + var par = element.parent(); + container = angular.element('
    loading...
    '); + $animate.enter(container, null, par); + + $http.get(url, { cache : true }).success(function(html) { + loading = false; + + html = '
    ' + + '
    ' + + html + + '
    '; + container.html(html); + + //avoid showing the element if the user has already closed it + if(container.css('display') == 'block') { + container.css('display','none'); + $animate.addClass(container, 'ng-hide'); + } + }); + } + else { + container.hasClass('ng-hide') ? $animate.removeClass(container, 'ng-hide') : $animate.addClass(container, 'ng-hide'); + } + }); + }); + } + } +}]; + +angular.module('bootstrap', []) + .directive(directive) + .factory('popoverElement', popoverElement) + .run(function() { + marked.setOptions({ + gfm: true, + tables: true + }); + }); diff --git a/1.2.30/docs/js/angular-bootstrap/bootstrap.min.js b/1.2.30/docs/js/angular-bootstrap/bootstrap.min.js new file mode 100644 index 0000000000..8b82f3a1e5 --- /dev/null +++ b/1.2.30/docs/js/angular-bootstrap/bootstrap.min.js @@ -0,0 +1,2 @@ +"use strict";var directive={};directive.runnableExample=["$templateCache","$document",function(e,t){var n=".runnable-example-file",i=(t[0],'');return{restrict:"C",scope:!0,controller:["$scope",function(e){e.setTab=function(t){var n=e.tabs[t];e.activeTabIndex=t,e.$broadcast("tabChange",t,n)}}],compile:function(e){return e.html(i+e.html()),function(e,t){{var i=t[0],a=i.querySelectorAll(n),o=[];Date.now()}angular.forEach(a,function(e){o.push(e.getAttribute("name"))}),o.length>0&&(e.tabs=o,e.$on("tabChange",function(e,t){angular.forEach(a,function(e){e.style.display="none"});var n=a[t];n.style.display="block"}),e.setTab(0))}}}}],directive.dropdownToggle=["$document","$location","$window",function(e,t){var n,i=null;return{restrict:"C",link:function(a,o){a.$watch(function(){return t.path()},function(){n&&n()}),o.parent().on("click",function(){n&&n()}),o.on("click",function(t){t.preventDefault(),t.stopPropagation();var a=!1;i&&(a=i===o,n()),a||(o.parent().addClass("open"),i=o,n=function(t){t&&t.preventDefault(),t&&t.stopPropagation(),e.off("click",n),o.parent().removeClass("open"),n=null,i=null},e.on("click",n))})}}}],directive.syntax=function(){return{restrict:"A",link:function(e,t,n){function i(e,t,n,i){return' '+t+""}var a="",o={github:{text:"View on Github",key:"syntaxGithub",icon:"icon-github"},plunkr:{text:"View on Plunkr",key:"syntaxPlunkr",icon:"icon-arrow-down"},jsfiddle:{text:"View on JSFiddle",key:"syntaxFiddle",icon:"icon-cloud"}};for(var l in o){var r=o[l],s=n[r.key];s&&(a+=i(l,r.text,s,r.icon))}var c=document.createElement("nav");c.className="syntax-links",c.innerHTML=a;var u=t[0],d=u.parentNode;d.insertBefore(c,u)}}},directive.tabbable=function(){return{restrict:"C",compile:function(e){var t=angular.element(''),n=angular.element('
    ');n.append(e.contents()),e.append(t).append(n)},controller:["$scope","$element",function(e,t){var n,i=t.contents().eq(0),a=t.controller("ngModel")||{},o=[];a.$render=function(){var e=this.$viewValue;if((n?n.value!=e:e)&&(n&&(n.paneElement.removeClass("active"),n.tabElement.removeClass("active"),n=null),e)){for(var t=0,i=o.length;i>t;t++)if(e==o[t].value){n=o[t];break}n&&(n.paneElement.addClass("active"),n.tabElement.addClass("active"))}},this.addPane=function(t,l){function r(){u.title=l.title,u.value=l.value||l.title,a.$setViewValue||a.$viewValue&&u!=n||(a.$viewValue=u.value),a.$render()}var s=angular.element("
  • "),c=s.find("a"),u={paneElement:t,paneAttrs:l,tabElement:s};return o.push(u),l.$observe("value",r)(),l.$observe("title",function(){r(),c.text(u.title)})(),i.append(s),s.on("click",function(t){t.preventDefault(),t.stopPropagation(),a.$setViewValue?e.$apply(function(){a.$setViewValue(u.value),a.$render()}):(a.$viewValue=u.value,a.$render())}),function(){u.tabElement.remove();for(var e=0,t=o.length;t>e;e++)u==o[e]&&o.splice(e,1)}}}]}},directive.table=function(){return{restrict:"E",link:function(e,t,n){n["class"]||t.addClass("table table-bordered table-striped code-table")}}};var popoverElement=function(){var e={init:function(){this.element=angular.element('
    '),this.node=this.element[0],this.element.css({display:"block",position:"absolute"}),angular.element(document.body).append(this.element);var e=this.element.children()[1];this.titleElement=angular.element(e.childNodes[0].firstChild),this.contentElement=angular.element(e.childNodes[1]),this.element.bind("click",function(e){e.preventDefault(),e.stopPropagation()});var t=this;angular.element(document.body).bind("click",function(){t.visible()&&t.hide()})},show:function(e,t){this.element.addClass("visible"),this.position(e||0,t||0)},hide:function(){this.element.removeClass("visible"),this.position(-9999,-9999)},visible:function(){return this.position().y>=0},isSituatedAt:function(e){return this.besideElement?e[0]==this.besideElement[0]:!1},title:function(e){return this.titleElement.html(e)},content:function(e){return e&&e.length>0&&(e=marked(e)),this.contentElement.html(e)},positionArrow:function(e){this.node.className="popover "+e},positionAway:function(){this.besideElement=null,this.hide()},positionBeside:function(e){this.besideElement=e;var t=e[0],n=t.offsetLeft,i=t.offsetTop;n-=30,i-=this.node.offsetHeight+10,this.show(n,i)},position:function(e,t){return null==e||null==t?{x:this.node.offsetLeft,y:this.node.offsetTop}:(this.element.css("left",e+"px"),void this.element.css("top",t+"px"))}};return e.init(),e.hide(),e};directive.popover=["popoverElement",function(e){return{restrict:"A",priority:500,link:function(t,n,i){n.bind("click",function(t){t.preventDefault(),t.stopPropagation(),e.isSituatedAt(n)&&e.visible()?(e.title(""),e.content(""),e.positionAway()):(e.title(i.title),e.content(i.content),e.positionBeside(n))})}}}],directive.tabPane=function(){return{require:"^tabbable",restrict:"C",link:function(e,t,n,i){t.on("$remove",i.addPane(t,n))}}},directive.foldout=["$http","$animate","$window",function(e,t,n){return{restrict:"A",priority:500,link:function(i,a,o){var l,r,s=o.url;/\/build\//.test(n.location.href)&&(s="/build/docs"+s),a.bind("click",function(){i.$apply(function(){if(l)l.hasClass("ng-hide")?t.removeClass(l,"ng-hide"):t.addClass(l,"ng-hide");else{if(r)return;r=!0;var n=a.parent();l=angular.element('
    loading...
    '),t.enter(l,null,n),e.get(s,{cache:!0}).success(function(e){r=!1,e='
    '+e+"
    ",l.html(e),"block"==l.css("display")&&(l.css("display","none"),t.addClass(l,"ng-hide"))})}})})}}}],angular.module("bootstrap",[]).directive(directive).factory("popoverElement",popoverElement).run(function(){marked.setOptions({gfm:!0,tables:!0})}); +//# sourceMappingURL=../../js/angular-bootstrap/bootstrap.min.js.map \ No newline at end of file diff --git a/1.2.30/docs/js/angular-bootstrap/bootstrap.min.js.map b/1.2.30/docs/js/angular-bootstrap/bootstrap.min.js.map new file mode 100755 index 0000000000..b5ec023200 --- /dev/null +++ b/1.2.30/docs/js/angular-bootstrap/bootstrap.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["js/angular-bootstrap/bootstrap.js"],"names":[],"mappings":"AAAA,YAEA,IAAA,aAEA,WAAA,iBAAA,iBAAA,YAAA,SAAA,EAAA,GACA,GAAA,GAAA,yBAEA,GADA,EAAA,GAEA,gNAUA,QACA,SAAA,IACA,OAAA,EACA,YAAA,SAAA,SAAA,GACA,EAAA,OAAA,SAAA,GACA,GAAA,GAAA,EAAA,KAAA,EACA,GAAA,eAAA,EACA,EAAA,WAAA,YAAA,EAAA,MAGA,QAAA,SAAA,GAEA,MADA,GAAA,KAAA,EAAA,EAAA,QACA,SAAA,EAAA,GACA,CAAA,GAAA,GAAA,EAAA,GACA,EAAA,EAAA,iBAAA,GACA,IAAA,MAAA,MACA,QAAA,QAAA,EAAA,SAAA,GACA,EAAA,KAAA,EAAA,aAAA,WAGA,EAAA,OAAA,IACA,EAAA,KAAA,EACA,EAAA,IAAA,YAAA,SAAA,EAAA,GACA,QAAA,QAAA,EAAA,SAAA,GACA,EAAA,MAAA,QAAA,QAEA,IAAA,GAAA,EAAA,EACA,GAAA,MAAA,QAAA,UAEA,EAAA,OAAA,SAOA,UAAA,gBACA,YAAA,YAAA,UACA,SAAA,EAAA,GACA,GAAA,GAAA,EAAA,IACA,QACA,SAAA,IACA,KAAA,SAAA,EAAA,GACA,EAAA,OAAA,WAAA,MAAA,GAAA,QAAA,WACA,GAAA,MAGA,EAAA,SAAA,GAAA,QAAA,WACA,GAAA,MAGA,EAAA,GAAA,QAAA,SAAA,GACA,EAAA,iBACA,EAAA,iBAEA,IAAA,IAAA,CAEA,KACA,EAAA,IAAA,EACA,KAGA,IACA,EAAA,SAAA,SAAA,QACA,EAAA,EAEA,EAAA,SAAA,GACA,GAAA,EAAA,iBACA,GAAA,EAAA,kBACA,EAAA,IAAA,QAAA,GACA,EAAA,SAAA,YAAA,QACA,EAAA,KACA,EAAA,MAGA,EAAA,GAAA,QAAA,UAOA,UAAA,OAAA,WACA,OACA,SAAA,IACA,KAAA,SAAA,EAAA,EAAA,GACA,QAAA,GAAA,EAAA,EAAA,EAAA,GACA,MAAA,YAAA,EAAA,uBAAA,EAAA,iDACA,EAAA,aAAA,EACA,OAGA,GAAA,GAAA,GACA,GACA,QACA,KAAA,iBACA,IAAA,eACA,KAAA,eAEA,QACA,KAAA,iBACA,IAAA,eACA,KAAA,mBAEA,UACA,KAAA,mBACA,IAAA,eACA,KAAA,cAGA,KAAA,GAAA,KAAA,GAAA,CACA,GAAA,GAAA,EAAA,GACA,EAAA,EAAA,EAAA,IACA,KACA,GAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,OAIA,GAAA,GAAA,SAAA,cAAA,MACA,GAAA,UAAA,eACA,EAAA,UAAA,CAEA,IAAA,GAAA,EAAA,GACA,EAAA,EAAA,UACA,GAAA,aAAA,EAAA,MAKA,UAAA,SAAA,WACA,OACA,SAAA,IACA,QAAA,SAAA,GACA,GAAA,GAAA,QAAA,QAAA,kCACA,EAAA,QAAA,QAAA,kCAEA,GAAA,OAAA,EAAA,YACA,EAAA,OAAA,GAAA,OAAA,IAEA,YAAA,SAAA,WAAA,SAAA,EAAA,GACA,GAGA,GAHA,EAAA,EAAA,WAAA,GAAA,GACA,EAAA,EAAA,WAAA,eACA,IAGA,GAAA,QAAA,WACA,GAAA,GAAA,KAAA,UAEA,KAAA,EAAA,EAAA,OAAA,EAAA,KACA,IACA,EAAA,YAAA,YAAA,UACA,EAAA,WAAA,YAAA,UACA,EAAA,MAEA,GAAA,CACA,IAAA,GAAA,GAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IACA,GAAA,GAAA,EAAA,GAAA,MAAA,CACA,EAAA,EAAA,EACA,OAGA,IACA,EAAA,YAAA,SAAA,UACA,EAAA,WAAA,SAAA,aAOA,KAAA,QAAA,SAAA,EAAA,GAcA,QAAA,KACA,EAAA,MAAA,EAAA,MACA,EAAA,MAAA,EAAA,OAAA,EAAA,MACA,EAAA,eAAA,EAAA,YAAA,GAAA,IAEA,EAAA,WAAA,EAAA,OAEA,EAAA,UApBA,GAAA,GAAA,QAAA,QAAA,yBACA,EAAA,EAAA,KAAA,KACA,GACA,YAAA,EACA,UAAA,EACA,WAAA,EAkCA,OA/BA,GAAA,KAAA,GAEA,EAAA,SAAA,QAAA,KACA,EAAA,SAAA,QAAA,WAAA,IAAA,EAAA,KAAA,EAAA,WAYA,EAAA,OAAA,GACA,EAAA,GAAA,QAAA,SAAA,GACA,EAAA,iBACA,EAAA,kBACA,EAAA,cACA,EAAA,OAAA,WACA,EAAA,cAAA,EAAA,OACA,EAAA,aAIA,EAAA,WAAA,EAAA,MACA,EAAA,aAIA,WACA,EAAA,WAAA,QACA,KAAA,GAAA,GAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IACA,GAAA,EAAA,IACA,EAAA,OAAA,EAAA,SASA,UAAA,MAAA,WACA,OACA,SAAA,IACA,KAAA,SAAA,EAAA,EAAA,GACA,EAAA,UACA,EAAA,SAAA,mDAMA,IAAA,gBAAA,WACA,GAAA,IACA,KAAA,WACA,KAAA,QAAA,QAAA,QACA,6LAQA,KAAA,KAAA,KAAA,QAAA,GACA,KAAA,QAAA,KACA,QAAA,QACA,SAAA,aAEA,QAAA,QAAA,SAAA,MAAA,OAAA,KAAA,QAEA,IAAA,GAAA,KAAA,QAAA,WAAA,EACA,MAAA,aAAA,QAAA,QAAA,EAAA,WAAA,GAAA,YACA,KAAA,eAAA,QAAA,QAAA,EAAA,WAAA,IAGA,KAAA,QAAA,KAAA,QAAA,SAAA,GACA,EAAA,iBACA,EAAA,mBAGA,IAAA,GAAA,IACA,SAAA,QAAA,SAAA,MAAA,KAAA,QAAA,WACA,EAAA,WAAA,EAAA,UAIA,KAAA,SAAA,EAAA,GACA,KAAA,QAAA,SAAA,WACA,KAAA,SAAA,GAAA,EAAA,GAAA,IAGA,KAAA,WACA,KAAA,QAAA,YAAA,WACA,KAAA,SAAA,MAAA,QAGA,QAAA,WACA,MAAA,MAAA,WAAA,GAAA,GAGA,aAAA,SAAA,GACA,MAAA,MAAA,cAAA,EAAA,IAAA,KAAA,cAAA,IAAA,GAGA,MAAA,SAAA,GACA,MAAA,MAAA,aAAA,KAAA,IAGA,QAAA,SAAA,GAIA,MAHA,IAAA,EAAA,OAAA,IACA,EAAA,OAAA,IAEA,KAAA,eAAA,KAAA,IAGA,cAAA,SAAA,GACA,KAAA,KAAA,UAAA,WAAA,GAGA,aAAA,WACA,KAAA,cAAA,KACA,KAAA,QAGA,eAAA,SAAA,GACA,KAAA,cAAA,CAEA,IAAA,GAAA,EAAA,GACA,EAAA,EAAA,WACA,EAAA,EAAA,SACA,IAAA,GACA,GAAA,KAAA,KAAA,aAAA,GACA,KAAA,KAAA,EAAA,IAGA,SAAA,SAAA,EAAA,GACA,MAAA,OAAA,GAAA,MAAA,GAMA,EAAA,KAAA,KAAA,WACA,EAAA,KAAA,KAAA,YANA,KAAA,QAAA,IAAA,OAAA,EAAA,UACA,MAAA,QAAA,IAAA,MAAA,EAAA,QAcA,OAHA,GAAA,OACA,EAAA,OAEA,EAGA,WAAA,SAAA,iBAAA,SAAA,GACA,OACA,SAAA,IACA,SAAA,IACA,KAAA,SAAA,EAAA,EAAA,GACA,EAAA,KAAA,QAAA,SAAA,GACA,EAAA,iBACA,EAAA,kBACA,EAAA,aAAA,IAAA,EAAA,WACA,EAAA,MAAA,IACA,EAAA,QAAA,IACA,EAAA,iBAGA,EAAA,MAAA,EAAA,OACA,EAAA,QAAA,EAAA,SACA,EAAA,eAAA,UAOA,UAAA,QAAA,WACA,OACA,QAAA,YACA,SAAA,IACA,KAAA,SAAA,EAAA,EAAA,EAAA,GACA,EAAA,GAAA,UAAA,EAAA,QAAA,EAAA,OAKA,UAAA,SAAA,QAAA,WAAA,UAAA,SAAA,EAAA,EAAA,GACA,OACA,SAAA,IACA,SAAA,IACA,KAAA,SAAA,EAAA,EAAA,GACA,GAAA,GAAA,EAAA,EAAA,EAAA,GACA,aAAA,KAAA,EAAA,SAAA,QACA,EAAA,cAAA,GAEA,EAAA,KAAA,QAAA,WACA,EAAA,OAAA,WACA,GAAA,EAyBA,EAAA,SAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,eAzBA,CACA,GAAA,EAAA,MAEA,IAAA,CACA,IAAA,GAAA,EAAA,QACA,GAAA,QAAA,QAAA,yCACA,EAAA,MAAA,EAAA,KAAA,GAEA,EAAA,IAAA,GAAA,OAAA,IAAA,QAAA,SAAA,GACA,GAAA,EAEA,EAAA,+DAEA,EACA,SACA,EAAA,KAAA,GAGA,SAAA,EAAA,IAAA,aACA,EAAA,IAAA,UAAA,QACA,EAAA,SAAA,EAAA,uBAaA,QAAA,OAAA,gBACA,UAAA,WACA,QAAA,iBAAA,gBACA,IAAA,WACA,OAAA,YACA,KAAA,EACA,QAAA","file":"js/angular-bootstrap/bootstrap.min.js","sourcesContent":["'use strict';\n\nvar directive = {};\n\ndirective.runnableExample = ['$templateCache', '$document', function($templateCache, $document) {\n var exampleClassNameSelector = '.runnable-example-file';\n var doc = $document[0];\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 = [], now = Date.now();\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\ndirective.dropdownToggle =\n ['$document', '$location', '$window',\n function ($document, $location, $window) {\n var openElement = null, close;\n return {\n restrict: 'C',\n link: function(scope, element, attrs) {\n scope.$watch(function dropdownTogglePathWatch(){return $location.path();}, function dropdownTogglePathWatchAction() {\n close && close();\n });\n\n element.parent().on('click', function(event) {\n close && close();\n });\n\n element.on('click', function(event) {\n event.preventDefault();\n event.stopPropagation();\n\n var iWasOpen = false;\n\n if (openElement) {\n iWasOpen = openElement === element;\n close();\n }\n\n if (!iWasOpen){\n element.parent().addClass('open');\n openElement = element;\n\n close = function (event) {\n event && event.preventDefault();\n event && event.stopPropagation();\n $document.off('click', close);\n element.parent().removeClass('open');\n close = null;\n openElement = null;\n }\n\n $document.on('click', close);\n }\n });\n }\n };\n }];\n\ndirective.syntax = function() {\n return {\n restrict: 'A',\n link: function(scope, element, attrs) {\n function makeLink(type, text, link, icon) {\n return '' +\n ' ' + text +\n '';\n };\n\n var html = '';\n var types = {\n 'github' : {\n text : 'View on Github',\n key : 'syntaxGithub',\n icon : 'icon-github'\n },\n 'plunkr' : {\n text : 'View on Plunkr',\n key : 'syntaxPlunkr',\n icon : 'icon-arrow-down'\n },\n 'jsfiddle' : {\n text : 'View on JSFiddle',\n key : 'syntaxFiddle',\n icon : 'icon-cloud'\n }\n };\n for(var type in types) {\n var data = types[type];\n var link = attrs[data.key];\n if(link) {\n html += makeLink(type, data.text, link, data.icon);\n }\n };\n\n var nav = document.createElement('nav');\n nav.className = 'syntax-links';\n nav.innerHTML = html;\n\n var node = element[0];\n var par = node.parentNode;\n par.insertBefore(nav, node);\n }\n }\n}\n\ndirective.tabbable = function() {\n return {\n restrict: 'C',\n compile: function(element) {\n var navTabs = angular.element('
      '),\n tabContent = angular.element('
      ');\n\n tabContent.append(element.contents());\n element.append(navTabs).append(tabContent);\n },\n controller: ['$scope', '$element', function($scope, $element) {\n var navTabs = $element.contents().eq(0),\n ngModel = $element.controller('ngModel') || {},\n tabs = [],\n selectedTab;\n\n ngModel.$render = function() {\n var $viewValue = this.$viewValue;\n\n if (selectedTab ? (selectedTab.value != $viewValue) : $viewValue) {\n if(selectedTab) {\n selectedTab.paneElement.removeClass('active');\n selectedTab.tabElement.removeClass('active');\n selectedTab = null;\n }\n if($viewValue) {\n for(var i = 0, ii = tabs.length; i < ii; i++) {\n if ($viewValue == tabs[i].value) {\n selectedTab = tabs[i];\n break;\n }\n }\n if (selectedTab) {\n selectedTab.paneElement.addClass('active');\n selectedTab.tabElement.addClass('active');\n }\n }\n\n }\n };\n\n this.addPane = function(element, attr) {\n var li = angular.element('
    • '),\n a = li.find('a'),\n tab = {\n paneElement: element,\n paneAttrs: attr,\n tabElement: li\n };\n\n tabs.push(tab);\n\n attr.$observe('value', update)();\n attr.$observe('title', function(){ update(); a.text(tab.title); })();\n\n function update() {\n tab.title = attr.title;\n tab.value = attr.value || attr.title;\n if (!ngModel.$setViewValue && (!ngModel.$viewValue || tab == selectedTab)) {\n // we are not part of angular\n ngModel.$viewValue = tab.value;\n }\n ngModel.$render();\n }\n\n navTabs.append(li);\n li.on('click', function(event) {\n event.preventDefault();\n event.stopPropagation();\n if (ngModel.$setViewValue) {\n $scope.$apply(function() {\n ngModel.$setViewValue(tab.value);\n ngModel.$render();\n });\n } else {\n // we are not part of angular\n ngModel.$viewValue = tab.value;\n ngModel.$render();\n }\n });\n\n return function() {\n tab.tabElement.remove();\n for(var i = 0, ii = tabs.length; i < ii; i++ ) {\n if (tab == tabs[i]) {\n tabs.splice(i, 1);\n }\n }\n };\n }\n }]\n };\n};\n\ndirective.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\nvar popoverElement = function() {\n var object = {\n init : function() {\n this.element = angular.element(\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      '\n );\n this.node = this.element[0];\n this.element.css({\n 'display':'block',\n 'position':'absolute'\n });\n angular.element(document.body).append(this.element);\n\n var inner = this.element.children()[1];\n this.titleElement = angular.element(inner.childNodes[0].firstChild);\n this.contentElement = angular.element(inner.childNodes[1]);\n\n //stop the click on the tooltip\n this.element.bind('click', function(event) {\n event.preventDefault();\n event.stopPropagation();\n });\n\n var self = this;\n angular.element(document.body).bind('click',function(event) {\n if(self.visible()) self.hide();\n });\n },\n\n show : function(x,y) {\n this.element.addClass('visible');\n this.position(x || 0, y || 0);\n },\n\n hide : function() {\n this.element.removeClass('visible');\n this.position(-9999,-9999);\n },\n\n visible : function() {\n return this.position().y >= 0;\n },\n\n isSituatedAt : function(element) {\n return this.besideElement ? element[0] == this.besideElement[0] : false;\n },\n\n title : function(value) {\n return this.titleElement.html(value);\n },\n\n content : function(value) {\n if(value && value.length > 0) {\n value = marked(value);\n }\n return this.contentElement.html(value);\n },\n\n positionArrow : function(position) {\n this.node.className = 'popover ' + position;\n },\n\n positionAway : function() {\n this.besideElement = null;\n this.hide();\n },\n\n positionBeside : function(element) {\n this.besideElement = element;\n\n var elm = element[0];\n var x = elm.offsetLeft;\n var y = elm.offsetTop;\n x -= 30;\n y -= this.node.offsetHeight + 10;\n this.show(x,y);\n },\n\n position : function(x,y) {\n if(x != null && y != null) {\n this.element.css('left',x + 'px');\n this.element.css('top', y + 'px');\n }\n else {\n return {\n x : this.node.offsetLeft,\n y : this.node.offsetTop\n };\n }\n }\n };\n\n object.init();\n object.hide();\n\n return object;\n};\n\ndirective.popover = ['popoverElement', function(popover) {\n return {\n restrict: 'A',\n priority : 500,\n link: function(scope, element, attrs) {\n element.bind('click',function(event) {\n event.preventDefault();\n event.stopPropagation();\n if(popover.isSituatedAt(element) && popover.visible()) {\n popover.title('');\n popover.content('');\n popover.positionAway();\n }\n else {\n popover.title(attrs.title);\n popover.content(attrs.content);\n popover.positionBeside(element);\n }\n });\n }\n }\n}];\n\ndirective.tabPane = function() {\n return {\n require: '^tabbable',\n restrict: 'C',\n link: function(scope, element, attrs, tabsCtrl) {\n element.on('$remove', tabsCtrl.addPane(element, attrs));\n }\n };\n};\n\ndirective.foldout = ['$http', '$animate','$window', function($http, $animate, $window) {\n return {\n restrict: 'A',\n priority : 500,\n link: function(scope, element, attrs) {\n var container, loading, url = attrs.url;\n if(/\\/build\\//.test($window.location.href)) {\n url = '/build/docs' + url;\n }\n element.bind('click',function() {\n scope.$apply(function() {\n if(!container) {\n if(loading) return;\n\n loading = true;\n var par = element.parent();\n container = angular.element('
      loading...
      ');\n $animate.enter(container, null, par);\n\n $http.get(url, { cache : true }).success(function(html) {\n loading = false;\n\n html = '
      ' +\n '
      ' +\n html +\n '
      ';\n container.html(html);\n\n //avoid showing the element if the user has already closed it\n if(container.css('display') == 'block') {\n container.css('display','none');\n $animate.addClass(container, 'ng-hide');\n }\n });\n }\n else {\n container.hasClass('ng-hide') ? $animate.removeClass(container, 'ng-hide') : $animate.addClass(container, 'ng-hide');\n }\n });\n });\n }\n }\n}];\n\nangular.module('bootstrap', [])\n .directive(directive)\n .factory('popoverElement', popoverElement)\n .run(function() {\n marked.setOptions({\n gfm: true,\n tables: true\n });\n });\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/1.2.30/docs/js/angular-bootstrap/dropdown-toggle.js b/1.2.30/docs/js/angular-bootstrap/dropdown-toggle.js new file mode 100644 index 0000000000..393b1384ca --- /dev/null +++ b/1.2.30/docs/js/angular-bootstrap/dropdown-toggle.js @@ -0,0 +1,145 @@ +/* This code is taken from the AngularUI - Bootstrap Project (https://github.com/angular-ui/bootstrap) + * + * The MIT License + * + * Copyright (c) 2012-2014 the AngularUI Team, https://github.com/organizations/angular-ui/teams/291112 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ + +angular.module('ui.bootstrap.dropdown', []) + +.constant('dropdownConfig', { + openClass: 'open' +}) + +.service('dropdownService', ['$document', function($document) { + var self = this, openScope = null; + + this.open = function( dropdownScope ) { + if ( !openScope ) { + $document.bind('click', closeDropdown); + $document.bind('keydown', escapeKeyBind); + } + + if ( openScope && openScope !== dropdownScope ) { + openScope.isOpen = false; + } + + openScope = dropdownScope; + }; + + this.close = function( dropdownScope ) { + if ( openScope === dropdownScope ) { + openScope = null; + $document.unbind('click', closeDropdown); + $document.unbind('keydown', escapeKeyBind); + } + }; + + var closeDropdown = function() { + openScope.$apply(function() { + openScope.isOpen = false; + }); + }; + + var escapeKeyBind = function( evt ) { + if ( evt.which === 27 ) { + closeDropdown(); + } + }; +}]) + +.controller('DropdownController', ['$scope', '$attrs', 'dropdownConfig', 'dropdownService', '$animate', function($scope, $attrs, dropdownConfig, dropdownService, $animate) { + var self = this, openClass = dropdownConfig.openClass; + + this.init = function( element ) { + self.$element = element; + $scope.isOpen = angular.isDefined($attrs.isOpen) ? $scope.$parent.$eval($attrs.isOpen) : false; + }; + + this.toggle = function( open ) { + return $scope.isOpen = arguments.length ? !!open : !$scope.isOpen; + }; + + // Allow other directives to watch status + this.isOpen = function() { + return $scope.isOpen; + }; + + $scope.$watch('isOpen', function( value ) { + $animate[value ? 'addClass' : 'removeClass'](self.$element, openClass); + + if ( value ) { + dropdownService.open( $scope ); + } else { + dropdownService.close( $scope ); + } + + $scope.onToggle({ open: !!value }); + }); + + $scope.$on('$locationChangeSuccess', function() { + $scope.isOpen = false; + }); +}]) + +.directive('dropdown', function() { + return { + restrict: 'CA', + controller: 'DropdownController', + scope: { + isOpen: '=?', + onToggle: '&' + }, + link: function(scope, element, attrs, dropdownCtrl) { + dropdownCtrl.init( element ); + } + }; +}) + +.directive('dropdownToggle', function() { + return { + restrict: 'CA', + require: '?^dropdown', + link: function(scope, element, attrs, dropdownCtrl) { + if ( !dropdownCtrl ) { + return; + } + + element.bind('click', function(event) { + event.preventDefault(); + event.stopPropagation(); + + if ( !element.hasClass('disabled') && !element.prop('disabled') ) { + scope.$apply(function() { + dropdownCtrl.toggle(); + }); + } + }); + + // WAI-ARIA + element.attr({ 'aria-haspopup': true, 'aria-expanded': false }); + scope.$watch(dropdownCtrl.isOpen, function( isOpen ) { + element.attr('aria-expanded', !!isOpen); + }); + } + }; +}); \ No newline at end of file diff --git a/1.2.30/docs/js/angular-bootstrap/dropdown-toggle.min.js b/1.2.30/docs/js/angular-bootstrap/dropdown-toggle.min.js new file mode 100644 index 0000000000..274415d14e --- /dev/null +++ b/1.2.30/docs/js/angular-bootstrap/dropdown-toggle.min.js @@ -0,0 +1,2 @@ +angular.module("ui.bootstrap.dropdown",[]).constant("dropdownConfig",{openClass:"open"}).service("dropdownService",["$document",function(n){var o=null;this.open=function(t){o||(n.bind("click",e),n.bind("keydown",i)),o&&o!==t&&(o.isOpen=!1),o=t},this.close=function(t){o===t&&(o=null,n.unbind("click",e),n.unbind("keydown",i))};var e=function(){o.$apply(function(){o.isOpen=!1})},i=function(n){27===n.which&&e()}}]).controller("DropdownController",["$scope","$attrs","dropdownConfig","dropdownService","$animate",function(n,o,e,i,t){var r=this,s=e.openClass;this.init=function(e){r.$element=e,n.isOpen=angular.isDefined(o.isOpen)?n.$parent.$eval(o.isOpen):!1},this.toggle=function(o){return n.isOpen=arguments.length?!!o:!n.isOpen},this.isOpen=function(){return n.isOpen},n.$watch("isOpen",function(o){t[o?"addClass":"removeClass"](r.$element,s),o?i.open(n):i.close(n),n.onToggle({open:!!o})}),n.$on("$locationChangeSuccess",function(){n.isOpen=!1})}]).directive("dropdown",function(){return{restrict:"CA",controller:"DropdownController",scope:{isOpen:"=?",onToggle:"&"},link:function(n,o,e,i){i.init(o)}}}).directive("dropdownToggle",function(){return{restrict:"CA",require:"?^dropdown",link:function(n,o,e,i){i&&(o.bind("click",function(e){e.preventDefault(),e.stopPropagation(),o.hasClass("disabled")||o.prop("disabled")||n.$apply(function(){i.toggle()})}),o.attr({"aria-haspopup":!0,"aria-expanded":!1}),n.$watch(i.isOpen,function(n){o.attr("aria-expanded",!!n)}))}}}); +//# sourceMappingURL=../../js/angular-bootstrap/dropdown-toggle.min.js.map \ No newline at end of file diff --git a/1.2.30/docs/js/angular-bootstrap/dropdown-toggle.min.js.map b/1.2.30/docs/js/angular-bootstrap/dropdown-toggle.min.js.map new file mode 100755 index 0000000000..835e42a62f --- /dev/null +++ b/1.2.30/docs/js/angular-bootstrap/dropdown-toggle.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["js/angular-bootstrap/dropdown-toggle.js"],"names":[],"mappings":"AA0BA,QAAA,OAAA,4BAEA,SAAA,kBACA,UAAA,SAGA,QAAA,mBAAA,YAAA,SAAA,GACA,GAAA,GAAA,IAEA,MAAA,KAAA,SAAA,GACA,IACA,EAAA,KAAA,QAAA,GACA,EAAA,KAAA,UAAA,IAGA,GAAA,IAAA,IACA,EAAA,QAAA,GAGA,EAAA,GAGA,KAAA,MAAA,SAAA,GACA,IAAA,IACA,EAAA,KACA,EAAA,OAAA,QAAA,GACA,EAAA,OAAA,UAAA,IAIA,IAAA,GAAA,WACA,EAAA,OAAA,WACA,EAAA,QAAA,KAIA,EAAA,SAAA,GACA,KAAA,EAAA,OACA,QAKA,WAAA,sBAAA,SAAA,SAAA,iBAAA,kBAAA,WAAA,SAAA,EAAA,EAAA,EAAA,EAAA,GACA,GAAA,GAAA,KAAA,EAAA,EAAA,SAEA,MAAA,KAAA,SAAA,GACA,EAAA,SAAA,EACA,EAAA,OAAA,QAAA,UAAA,EAAA,QAAA,EAAA,QAAA,MAAA,EAAA,SAAA,GAGA,KAAA,OAAA,SAAA,GACA,MAAA,GAAA,OAAA,UAAA,SAAA,GAAA,EAAA,QAIA,KAAA,OAAA,WACA,MAAA,GAAA,QAGA,EAAA,OAAA,SAAA,SAAA,GACA,EAAA,EAAA,WAAA,eAAA,EAAA,SAAA,GAEA,EACA,EAAA,KAAA,GAEA,EAAA,MAAA,GAGA,EAAA,UAAA,OAAA,MAGA,EAAA,IAAA,yBAAA,WACA,EAAA,QAAA,OAIA,UAAA,WAAA,WACA,OACA,SAAA,KACA,WAAA,qBACA,OACA,OAAA,KACA,SAAA,KAEA,KAAA,SAAA,EAAA,EAAA,EAAA,GACA,EAAA,KAAA,OAKA,UAAA,iBAAA,WACA,OACA,SAAA,KACA,QAAA,aACA,KAAA,SAAA,EAAA,EAAA,EAAA,GACA,IAIA,EAAA,KAAA,QAAA,SAAA,GACA,EAAA,iBACA,EAAA,kBAEA,EAAA,SAAA,aAAA,EAAA,KAAA,aACA,EAAA,OAAA,WACA,EAAA,aAMA,EAAA,MAAA,iBAAA,EAAA,iBAAA,IACA,EAAA,OAAA,EAAA,OAAA,SAAA,GACA,EAAA,KAAA,kBAAA","file":"js/angular-bootstrap/dropdown-toggle.min.js","sourcesContent":["/* This code is taken from the AngularUI - Bootstrap Project (https://github.com/angular-ui/bootstrap)\n *\n * The MIT License\n * \n * Copyright (c) 2012-2014 the AngularUI Team, https://github.com/organizations/angular-ui/teams/291112\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n */\n\nangular.module('ui.bootstrap.dropdown', [])\n\n.constant('dropdownConfig', {\n openClass: 'open'\n})\n\n.service('dropdownService', ['$document', function($document) {\n var self = this, openScope = null;\n\n this.open = function( dropdownScope ) {\n if ( !openScope ) {\n $document.bind('click', closeDropdown);\n $document.bind('keydown', escapeKeyBind);\n }\n\n if ( openScope && openScope !== dropdownScope ) {\n openScope.isOpen = false;\n }\n\n openScope = dropdownScope;\n };\n\n this.close = function( dropdownScope ) {\n if ( openScope === dropdownScope ) {\n openScope = null;\n $document.unbind('click', closeDropdown);\n $document.unbind('keydown', escapeKeyBind);\n }\n };\n\n var closeDropdown = function() {\n openScope.$apply(function() {\n openScope.isOpen = false;\n });\n };\n\n var escapeKeyBind = function( evt ) {\n if ( evt.which === 27 ) {\n closeDropdown();\n }\n };\n}])\n\n.controller('DropdownController', ['$scope', '$attrs', 'dropdownConfig', 'dropdownService', '$animate', function($scope, $attrs, dropdownConfig, dropdownService, $animate) {\n var self = this, openClass = dropdownConfig.openClass;\n\n this.init = function( element ) {\n self.$element = element;\n $scope.isOpen = angular.isDefined($attrs.isOpen) ? $scope.$parent.$eval($attrs.isOpen) : false;\n };\n\n this.toggle = function( open ) {\n return $scope.isOpen = arguments.length ? !!open : !$scope.isOpen;\n };\n\n // Allow other directives to watch status\n this.isOpen = function() {\n return $scope.isOpen;\n };\n\n $scope.$watch('isOpen', function( value ) {\n $animate[value ? 'addClass' : 'removeClass'](self.$element, openClass);\n\n if ( value ) {\n dropdownService.open( $scope );\n } else {\n dropdownService.close( $scope );\n }\n\n $scope.onToggle({ open: !!value });\n });\n\n $scope.$on('$locationChangeSuccess', function() {\n $scope.isOpen = false;\n });\n}])\n\n.directive('dropdown', function() {\n return {\n restrict: 'CA',\n controller: 'DropdownController',\n scope: {\n isOpen: '=?',\n onToggle: '&'\n },\n link: function(scope, element, attrs, dropdownCtrl) {\n dropdownCtrl.init( element );\n }\n };\n})\n\n.directive('dropdownToggle', function() {\n return {\n restrict: 'CA',\n require: '?^dropdown',\n link: function(scope, element, attrs, dropdownCtrl) {\n if ( !dropdownCtrl ) {\n return;\n }\n\n element.bind('click', function(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if ( !element.hasClass('disabled') && !element.prop('disabled') ) {\n scope.$apply(function() {\n dropdownCtrl.toggle();\n });\n }\n });\n\n // WAI-ARIA\n element.attr({ 'aria-haspopup': true, 'aria-expanded': false });\n scope.$watch(dropdownCtrl.isOpen, function( isOpen ) {\n element.attr('aria-expanded', !!isOpen);\n });\n }\n };\n});"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/1.2.30/docs/js/docs.js b/1.2.30/docs/js/docs.js new file mode 100644 index 0000000000..ecabebdf3d --- /dev/null +++ b/1.2.30/docs/js/docs.js @@ -0,0 +1,559 @@ +angular.module('docsApp', [ + 'ngRoute', + 'ngCookies', + 'ngSanitize', + 'ngAnimate', + 'DocsController', + 'versionsData', + 'pagesData', + 'navData', + 'directives', + 'errors', + 'examples', + 'search', + 'tutorials', + 'versions', + 'bootstrap', + 'ui.bootstrap.dropdown' +]) + + +.config(['$locationProvider', function($locationProvider) { + $locationProvider.html5Mode(true).hashPrefix('!'); +}]); + +angular.module('directives', []) + +/** + * backToTop Directive + * @param {Function} $anchorScroll + * + * @description Ensure that the browser scrolls when the anchor is clicked + */ +.directive('backToTop', ['$anchorScroll', '$location', function($anchorScroll, $location) { + return function link(scope, element) { + element.on('click', function(event) { + $location.hash(''); + scope.$apply($anchorScroll); + }); + }; +}]) + + +.directive('code', function() { + return { + restrict: 'E', + terminal: true, + compile: function(element) { + var linenums = element.hasClass('linenum');// || element.parent()[0].nodeName === 'PRE'; + var match = /lang-(\S)+/.exec(element.className); + var lang = match && match[1]; + var html = element.html(); + element.html(window.prettyPrintOne(html, lang, linenums)); + } + }; +}); + + +angular.module('DocsController', []) + +.controller('DocsController', [ + '$scope', '$rootScope', '$location', '$window', '$cookies', 'openPlunkr', + 'NG_PAGES', 'NG_NAVIGATION', 'NG_VERSION', + function($scope, $rootScope, $location, $window, $cookies, openPlunkr, + NG_PAGES, NG_NAVIGATION, NG_VERSION) { + + $scope.openPlunkr = openPlunkr; + + $scope.docsVersion = NG_VERSION.isSnapshot ? 'snapshot' : NG_VERSION.version; + + $scope.navClass = function(navItem) { + return { + active: navItem.href && this.currentPage.path, + 'nav-index-section': navItem.type === 'section' + }; + }; + + + + $scope.$on('$includeContentLoaded', function() { + var pagePath = $scope.currentPage ? $scope.currentPage.path : $location.path(); + $window._gaq.push(['_trackPageview', pagePath]); + }); + + $scope.$watch(function docsPathWatch() {return $location.path(); }, function docsPathWatchAction(path) { + + path = path.replace(/^\/?(.+?)(\/index)?\/?$/, '$1'); + + currentPage = $scope.currentPage = NG_PAGES[path]; + + if ( currentPage ) { + $scope.partialPath = 'partials/' + path + '.html'; + $scope.currentArea = NG_NAVIGATION[currentPage.area]; + var pathParts = currentPage.path.split('/'); + var breadcrumb = $scope.breadcrumb = []; + var breadcrumbPath = ''; + angular.forEach(pathParts, function(part) { + breadcrumbPath += part; + breadcrumb.push({ name: (NG_PAGES[breadcrumbPath]&&NG_PAGES[breadcrumbPath].name) || part, url: breadcrumbPath }); + breadcrumbPath += '/'; + }); + } else { + $scope.currentArea = NG_NAVIGATION['api']; + $scope.breadcrumb = []; + $scope.partialPath = 'Error404.html'; + } + }); + + /********************************** + Initialize + ***********************************/ + + $scope.versionNumber = angular.version.full; + $scope.version = angular.version.full + " " + angular.version.codeName; + $scope.loading = 0; + + + var INDEX_PATH = /^(\/|\/index[^\.]*.html)$/; + if (!$location.path() || INDEX_PATH.test($location.path())) { + $location.path('/api').replace(); + } + +}]); + +angular.module('errors', ['ngSanitize']) + +.filter('errorLink', ['$sanitize', function ($sanitize) { + var LINKY_URL_REGEXP = /((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s\.\;\,\(\)\{\}<>]/g, + MAILTO_REGEXP = /^mailto:/, + STACK_TRACE_REGEXP = /:\d+:\d+$/; + + var truncate = function (text, nchars) { + if (text.length > nchars) { + return text.substr(0, nchars - 3) + '...'; + } + return text; + }; + + return function (text, target) { + var targetHtml = target ? ' target="' + target + '"' : ''; + + if (!text) return text; + + return $sanitize(text.replace(LINKY_URL_REGEXP, function (url) { + if (STACK_TRACE_REGEXP.test(url)) { + return url; + } + + // if we did not match ftp/http/mailto then assume mailto + if (!/^((ftp|https?):\/\/|mailto:)/.test(url)) url = 'mailto:' + url; + + return '' + + truncate(url.replace(MAILTO_REGEXP, ''), 60) + + ''; + })); + }; +}]) + + +.directive('errorDisplay', ['$location', 'errorLinkFilter', function ($location, errorLinkFilter) { + var interpolate = function (formatString) { + var formatArgs = arguments; + return formatString.replace(/\{\d+\}/g, function (match) { + // Drop the braces and use the unary plus to convert to an integer. + // The index will be off by one because of the formatString. + var index = +match.slice(1, -1); + if (index + 1 >= formatArgs.length) { + return match; + } + return formatArgs[index+1]; + }); + }; + + return { + link: function (scope, element, attrs) { + var search = $location.search(), + formatArgs = [attrs.errorDisplay], + i; + + for (i = 0; angular.isDefined(search['p'+i]); i++) { + formatArgs.push(search['p'+i]); + } + element.html(errorLinkFilter(interpolate.apply(null, formatArgs), '_blank')); + } + }; +}]); + +angular.module('examples', []) + +.factory('formPostData', ['$document', function($document) { + return function(url, fields) { + /** + * Form previously posted to target="_blank", but pop-up blockers were causing this to not work. + * If a user chose to bypass pop-up blocker one time and click the link, they would arrive at + * a new default plnkr, not a plnkr with the desired template. + */ + var form = angular.element('
      '); + angular.forEach(fields, function(value, name) { + var input = angular.element(''); + input.attr('value', value); + form.append(input); + }); + $document.find('body').append(form); + form[0].submit(); + form.remove(); + }; +}]) + + +.factory('openPlunkr', ['formPostData', '$http', '$q', function(formPostData, $http, $q) { + return function(exampleFolder) { + + var exampleName = 'AngularJS Example'; + + // Load the manifest for the example + $http.get(exampleFolder + '/manifest.json') + .then(function(response) { + return response.data; + }) + .then(function(manifest) { + var filePromises = []; + + // Build a pretty title for the Plunkr + var exampleNameParts = manifest.name.split('-'); + exampleNameParts.unshift('AngularJS'); + angular.forEach(exampleNameParts, function(part, index) { + exampleNameParts[index] = part.charAt(0).toUpperCase() + part.substr(1); + }); + exampleName = exampleNameParts.join(' - '); + + angular.forEach(manifest.files, function(filename) { + filePromises.push($http.get(exampleFolder + '/' + filename, { transformResponse: [] }) + .then(function(response) { + + // The manifests provide the production index file but Plunkr wants + // a straight index.html + if (filename === "index-production.html") { + filename = "index.html" + } + + return { + name: filename, + content: response.data + }; + })); + }); + return $q.all(filePromises); + }) + .then(function(files) { + var postData = {}; + + angular.forEach(files, function(file) { + postData['files[' + file.name + ']'] = file.content; + }); + + postData['tags[0]'] = "angularjs"; + postData['tags[1]'] = "example"; + postData.private = true; + postData.description = exampleName; + + formPostData('http://plnkr.co/edit/?p=preview', postData); + }); + }; +}]); + +angular.module('search', []) + +.controller('DocsSearchCtrl', ['$scope', '$location', 'docsSearch', function($scope, $location, docsSearch) { + function clearResults() { + $scope.results = []; + $scope.colClassName = null; + $scope.hasResults = false; + } + + $scope.search = function(q) { + var MIN_SEARCH_LENGTH = 2; + if(q.length >= MIN_SEARCH_LENGTH) { + docsSearch(q).then(function(hits) { + var results = {}; + angular.forEach(hits, function(hit) { + var area = hit.area; + + var limit = (area == 'api') ? 40 : 14; + results[area] = results[area] || []; + if(results[area].length < limit) { + results[area].push(hit); + } + }); + + var totalAreas = 0; + for(var i in results) { + ++totalAreas; + } + if(totalAreas > 0) { + $scope.colClassName = 'cols-' + totalAreas; + } + $scope.hasResults = totalAreas > 0; + $scope.results = results; + }); + } + else { + clearResults(); + } + if(!$scope.$$phase) $scope.$apply(); + }; + + $scope.submit = function() { + var result; + for(var i in $scope.results) { + result = $scope.results[i][0]; + if(result) { + break; + } + } + if(result) { + $location.path(result.path); + $scope.hideResults(); + } + }; + + $scope.hideResults = function() { + clearResults(); + $scope.q = ''; + }; +}]) + + +.controller('Error404SearchCtrl', ['$scope', '$location', 'docsSearch', + function($scope, $location, docsSearch) { + docsSearch($location.path().split(/[\/\.:]/).pop()).then(function(results) { + $scope.results = {}; + angular.forEach(results, function(result) { + var area = $scope.results[result.area] || []; + area.push(result); + $scope.results[result.area] = area; + }); + }); +}]) + + +.provider('docsSearch', function() { + + // This version of the service builds the index in the current thread, + // which blocks rendering and other browser activities. + // It should only be used where the browser does not support WebWorkers + function localSearchFactory($http, $timeout, NG_PAGES) { + + console.log('Using Local Search Index'); + + // Create the lunr index + var index = lunr(function() { + this.ref('path'); + this.field('titleWords', {boost: 50}); + this.field('members', { boost: 40}); + this.field('keywords', { boost : 20 }); + }); + + // Delay building the index by loading the data asynchronously + var indexReadyPromise = $http.get('js/search-data.json').then(function(response) { + var searchData = response.data; + // Delay building the index for 500ms to allow the page to render + return $timeout(function() { + // load the page data into the index + angular.forEach(searchData, function(page) { + index.add(page); + }); + }, 500); + }); + + // The actual service is a function that takes a query string and + // returns a promise to the search results + // (In this case we just resolve the promise immediately as it is not + // inherently an async process) + return function(q) { + return indexReadyPromise.then(function() { + var hits = index.search(q); + var results = []; + angular.forEach(hits, function(hit) { + results.push(NG_PAGES[hit.ref]); + }); + return results; + }); + }; + } + localSearchFactory.$inject = ['$http', '$timeout', 'NG_PAGES']; + + // This version of the service builds the index in a WebWorker, + // which does not block rendering and other browser activities. + // It should only be used where the browser does support WebWorkers + function webWorkerSearchFactory($q, $rootScope, NG_PAGES) { + + console.log('Using WebWorker Search Index') + + var searchIndex = $q.defer(); + var results; + + var worker = new Worker('js/search-worker.js'); + + // The worker will send us a message in two situations: + // - when the index has been built, ready to run a query + // - when it has completed a search query and the results are available + worker.onmessage = function(oEvent) { + $rootScope.$apply(function() { + + switch(oEvent.data.e) { + case 'index-ready': + searchIndex.resolve(); + break; + case 'query-ready': + var pages = oEvent.data.d.map(function(path) { + return NG_PAGES[path]; + }); + results.resolve(pages); + break; + } + }); + }; + + // The actual service is a function that takes a query string and + // returns a promise to the search results + return function(q) { + + // We only run the query once the index is ready + return searchIndex.promise.then(function() { + + results = $q.defer(); + worker.postMessage({ q: q }); + return results.promise; + }); + }; + } + webWorkerSearchFactory.$inject = ['$q', '$rootScope', 'NG_PAGES']; + + return { + $get: window.Worker ? webWorkerSearchFactory : localSearchFactory + }; +}) + +.directive('focused', function($timeout) { + return function(scope, element, attrs) { + element[0].focus(); + element.on('focus', function() { + scope.$apply(attrs.focused + '=true'); + }); + element.on('blur', function() { + // have to use $timeout, so that we close the drop-down after the user clicks, + // otherwise when the user clicks we process the closing before we process the click. + $timeout(function() { + scope.$eval(attrs.focused + '=false'); + }); + }); + scope.$eval(attrs.focused + '=true'); + }; +}) + +.directive('docsSearchInput', ['$document',function($document) { + return function(scope, element, attrs) { + var ESCAPE_KEY_KEYCODE = 27, + FORWARD_SLASH_KEYCODE = 191; + angular.element($document[0].body).bind('keydown', function(event) { + var input = element[0]; + if(event.keyCode == FORWARD_SLASH_KEYCODE && document.activeElement != input) { + event.stopPropagation(); + event.preventDefault(); + input.focus(); + } + }); + + element.bind('keydown', function(event) { + if(event.keyCode == ESCAPE_KEY_KEYCODE) { + event.stopPropagation(); + event.preventDefault(); + scope.$apply(function() { + scope.hideResults(); + }); + } + }); + }; +}]); + +angular.module('tutorials', []) + +.directive('docTutorialNav', function() { + var pages = [ + '', + 'step_00', 'step_01', 'step_02', 'step_03', 'step_04', + 'step_05', 'step_06', 'step_07', 'step_08', 'step_09', + 'step_10', 'step_11', 'step_12', 'the_end' + ]; + return { + scope: {}, + template: + '
    • Previous
    • \n' + + '
    • Live Demo
    • \n' + + '
    • Code Diff
    • \n' + + '
    • Next
    • ', + link: function(scope, element, attrs) { + var seq = 1 * attrs.docTutorialNav; + scope.seq = seq; + scope.prev = pages[seq]; + scope.next = pages[2 + seq]; + scope.diffLo = seq ? (seq - 1): '0~1'; + scope.diffHi = seq; + + element.addClass('btn-group'); + element.addClass('tutorial-nav'); + } + }; +}) + + +.directive('docTutorialReset', function() { + return { + scope: { + 'step': '@docTutorialReset' + }, + template: + '

      Workspace Reset Instructions ➤

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

      Reset the workspace to step {{step}}.

      ' + + '

      git checkout -f step-{{step}}

      \n' + + '

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

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

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

      ' + }; +}); +"use strict"; + +angular.module('versions', []) + +.controller('DocsVersionsCtrl', ['$scope', '$location', '$window', 'NG_VERSIONS', function($scope, $location, $window, NG_VERSIONS) { + $scope.docs_version = NG_VERSIONS[0]; + $scope.docs_versions = NG_VERSIONS; + + for(var i=0, minor = NaN; i < NG_VERSIONS.length; i++) { + var version = NG_VERSIONS[i]; + // NaN will give false here + if (minor <= version.minor) { + continue; + } + version.isLatest = true; + minor = version.minor; + } + + $scope.getGroupName = function(v) { + return v.isLatest ? 'Latest' : ('v' + v.major + '.' + v.minor + '.x'); + }; + + $scope.jumpToDocsVersion = function(version) { + var currentPagePath = $location.path().replace(/\/$/, ''); + + // TODO: We need to do some munging of the path for different versions of the API... + + + $window.location = version.docsUrl + currentPagePath; + }; +}]); diff --git a/1.2.30/docs/js/docs.min.js b/1.2.30/docs/js/docs.min.js new file mode 100644 index 0000000000..35e8bd7e29 --- /dev/null +++ b/1.2.30/docs/js/docs.min.js @@ -0,0 +1,2 @@ +angular.module("docsApp",["ngRoute","ngCookies","ngSanitize","ngAnimate","DocsController","versionsData","pagesData","navData","directives","errors","examples","search","tutorials","versions","bootstrap","ui.bootstrap.dropdown"]).config(["$locationProvider",function(e){e.html5Mode(!0).hashPrefix("!")}]),angular.module("directives",[]).directive("backToTop",["$anchorScroll","$location",function(e,t){return function(n,r){r.on("click",function(){t.hash(""),n.$apply(e)})}}]).directive("code",function(){return{restrict:"E",terminal:!0,compile:function(e){var t=e.hasClass("linenum"),n=/lang-(\S)+/.exec(e.className),r=n&&n[1],a=e.html();e.html(window.prettyPrintOne(a,r,t))}}}),angular.module("DocsController",[]).controller("DocsController",["$scope","$rootScope","$location","$window","$cookies","openPlunkr","NG_PAGES","NG_NAVIGATION","NG_VERSION",function(e,t,n,r,a,o,i,s,c){e.openPlunkr=o,e.docsVersion=c.isSnapshot?"snapshot":c.version,e.navClass=function(e){return{active:e.href&&this.currentPage.path,"nav-index-section":"section"===e.type}},e.$on("$includeContentLoaded",function(){var t=e.currentPage?e.currentPage.path:n.path();r._gaq.push(["_trackPageview",t])}),e.$watch(function(){return n.path()},function(t){if(t=t.replace(/^\/?(.+?)(\/index)?\/?$/,"$1"),currentPage=e.currentPage=i[t]){e.partialPath="partials/"+t+".html",e.currentArea=s[currentPage.area];var n=currentPage.path.split("/"),r=e.breadcrumb=[],a="";angular.forEach(n,function(e){a+=e,r.push({name:i[a]&&i[a].name||e,url:a}),a+="/"})}else e.currentArea=s.api,e.breadcrumb=[],e.partialPath="Error404.html"}),e.versionNumber=angular.version.full,e.version=angular.version.full+" "+angular.version.codeName,e.loading=0;var u=/^(\/|\/index[^\.]*.html)$/;(!n.path()||u.test(n.path()))&&n.path("/api").replace()}]),angular.module("errors",["ngSanitize"]).filter("errorLink",["$sanitize",function(e){var t=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s\.\;\,\(\)\{\}<>]/g,n=/^mailto:/,r=/:\d+:\d+$/,a=function(e,t){return e.length>t?e.substr(0,t-3)+"...":e};return function(o,i){var s=i?' target="'+i+'"':"";return o?e(o.replace(t,function(e){return r.test(e)?e:(/^((ftp|https?):\/\/|mailto:)/.test(e)||(e="mailto:"+e),"'+a(e.replace(n,""),60)+"")})):o}}]).directive("errorDisplay",["$location","errorLinkFilter",function(e,t){var n=function(e){var t=arguments;return e.replace(/\{\d+\}/g,function(e){var n=+e.slice(1,-1);return n+1>=t.length?e:t[n+1]})};return{link:function(r,a,o){var i,s=e.search(),c=[o.errorDisplay];for(i=0;angular.isDefined(s["p"+i]);i++)c.push(s["p"+i]);a.html(t(n.apply(null,c),"_blank"))}}}]),angular.module("examples",[]).factory("formPostData",["$document",function(e){return function(t,n){var r=angular.element('
      ');angular.forEach(n,function(e,t){var n=angular.element('');n.attr("value",e),r.append(n)}),e.find("body").append(r),r[0].submit(),r.remove()}}]).factory("openPlunkr",["formPostData","$http","$q",function(e,t,n){return function(r){var a="AngularJS Example";t.get(r+"/manifest.json").then(function(e){return e.data}).then(function(e){var o=[],i=e.name.split("-");return i.unshift("AngularJS"),angular.forEach(i,function(e,t){i[t]=e.charAt(0).toUpperCase()+e.substr(1)}),a=i.join(" - "),angular.forEach(e.files,function(e){o.push(t.get(r+"/"+e,{transformResponse:[]}).then(function(t){return"index-production.html"===e&&(e="index.html"),{name:e,content:t.data}}))}),n.all(o)}).then(function(t){var n={};angular.forEach(t,function(e){n["files["+e.name+"]"]=e.content}),n["tags[0]"]="angularjs",n["tags[1]"]="example",n.private=!0,n.description=a,e("http://plnkr.co/edit/?p=preview",n)})}}]),angular.module("search",[]).controller("DocsSearchCtrl",["$scope","$location","docsSearch",function(e,t,n){function r(){e.results=[],e.colClassName=null,e.hasResults=!1}e.search=function(t){var a=2;t.length>=a?n(t).then(function(t){var n={};angular.forEach(t,function(e){var t=e.area,r="api"==t?40:14;n[t]=n[t]||[],n[t].length0&&(e.colClassName="cols-"+r),e.hasResults=r>0,e.results=n}):r(),e.$$phase||e.$apply()},e.submit=function(){var n;for(var r in e.results)if(n=e.results[r][0])break;n&&(t.path(n.path),e.hideResults())},e.hideResults=function(){r(),e.q=""}}]).controller("Error404SearchCtrl",["$scope","$location","docsSearch",function(e,t,n){n(t.path().split(/[\/\.:]/).pop()).then(function(t){e.results={},angular.forEach(t,function(t){var n=e.results[t.area]||[];n.push(t),e.results[t.area]=n})})}]).provider("docsSearch",function(){function e(e,t,n){console.log("Using Local Search Index");var r=lunr(function(){this.ref("path"),this.field("titleWords",{boost:50}),this.field("members",{boost:40}),this.field("keywords",{boost:20})}),a=e.get("js/search-data.json").then(function(e){var n=e.data;return t(function(){angular.forEach(n,function(e){r.add(e)})},500)});return function(e){return a.then(function(){var t=r.search(e),a=[];return angular.forEach(t,function(e){a.push(n[e.ref])}),a})}}function t(e,t,n){console.log("Using WebWorker Search Index");var r,a=e.defer(),o=new Worker("js/search-worker.js");return o.onmessage=function(e){t.$apply(function(){switch(e.data.e){case"index-ready":a.resolve();break;case"query-ready":var t=e.data.d.map(function(e){return n[e]});r.resolve(t)}})},function(t){return a.promise.then(function(){return r=e.defer(),o.postMessage({q:t}),r.promise})}}return e.$inject=["$http","$timeout","NG_PAGES"],t.$inject=["$q","$rootScope","NG_PAGES"],{$get:window.Worker?t:e}}).directive("focused",function(e){return function(t,n,r){n[0].focus(),n.on("focus",function(){t.$apply(r.focused+"=true")}),n.on("blur",function(){e(function(){t.$eval(r.focused+"=false")})}),t.$eval(r.focused+"=true")}}).directive("docsSearchInput",["$document",function(e){return function(t,n){var r=27,a=191;angular.element(e[0].body).bind("keydown",function(e){var t=n[0];e.keyCode==a&&document.activeElement!=t&&(e.stopPropagation(),e.preventDefault(),t.focus())}),n.bind("keydown",function(e){e.keyCode==r&&(e.stopPropagation(),e.preventDefault(),t.$apply(function(){t.hideResults()}))})}}]),angular.module("tutorials",[]).directive("docTutorialNav",function(){var e=["","step_00","step_01","step_02","step_03","step_04","step_05","step_06","step_07","step_08","step_09","step_10","step_11","step_12","the_end"];return{scope:{},template:'
    • Previous
    • \n
    • Live Demo
    • \n
    • Code Diff
    • \n
    • Next
    • ',link:function(t,n,r){var a=1*r.docTutorialNav;t.seq=a,t.prev=e[a],t.next=e[2+a],t.diffLo=a?a-1:"0~1",t.diffHi=a,n.addClass("btn-group"),n.addClass("tutorial-nav")}}}).directive("docTutorialReset",function(){return{scope:{step:"@docTutorialReset"},template:'

      Workspace Reset Instructions ➤

      \n
      \n

      Reset the workspace to step {{step}}.

      git checkout -f step-{{step}}

      \n

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

      \n
      \n

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

      '}}),angular.module("versions",[]).controller("DocsVersionsCtrl",["$scope","$location","$window","NG_VERSIONS",function(e,t,n,r){e.docs_version=r[0],e.docs_versions=r;for(var a=0,o=0/0;a]/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 var targetHtml = target ? ' target=\"' + target + '\"' : '';\n\n if (!text) return text;\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 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 i;\n\n for (i = 0; angular.isDefined(search['p'+i]); i++) {\n formatArgs.push(search['p'+i]);\n }\n element.html(errorLinkFilter(interpolate.apply(null, formatArgs), '_blank'));\n }\n };\n}]);\n","angular.module('examples', [])\n\n.factory('formPostData', ['$document', function($document) {\n return function(url, fields) {\n /**\n * Form previously posted to target=\"_blank\", but pop-up blockers were causing this to not work.\n * If a user chose to bypass pop-up blocker one time and click the link, they would arrive at\n * a new default plnkr, not a plnkr with the desired template.\n */\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\n.factory('openPlunkr', ['formPostData', '$http', '$q', function(formPostData, $http, $q) {\n return function(exampleFolder) {\n\n var exampleName = 'AngularJS Example';\n\n // Load the manifest for the example\n $http.get(exampleFolder + '/manifest.json')\n .then(function(response) {\n return response.data;\n })\n .then(function(manifest) {\n var filePromises = [];\n\n // Build a pretty title for the Plunkr\n var exampleNameParts = 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 exampleName = exampleNameParts.join(' - ');\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 return $q.all(filePromises);\n })\n .then(function(files) {\n var postData = {};\n\n angular.forEach(files, function(file) {\n postData['files[' + file.name + ']'] = file.content;\n });\n\n postData['tags[0]'] = \"angularjs\";\n postData['tags[1]'] = \"example\";\n postData.private = true;\n postData.description = exampleName;\n\n formPostData('http://plnkr.co/edit/?p=preview', postData);\n });\n };\n}]);\n","angular.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 var results = {};\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 = 0;\n for(var i in results) {\n ++totalAreas;\n }\n if(totalAreas > 0) {\n $scope.colClassName = 'cols-' + totalAreas;\n }\n $scope.hasResults = totalAreas > 0;\n $scope.results = results;\n });\n }\n else {\n clearResults();\n }\n if(!$scope.$$phase) $scope.$apply();\n };\n\n $scope.submit = function() {\n var result;\n for(var i in $scope.results) {\n result = $scope.results[i][0];\n if(result) {\n break;\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\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 console.log('Using Local Search Index');\n\n // Create the lunr index\n var index = lunr(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 console.log('Using WebWorker Search Index')\n\n var searchIndex = $q.defer();\n var results;\n\n var worker = new 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).bind('keydown', function(event) {\n var input = element[0];\n if(event.keyCode == FORWARD_SLASH_KEYCODE && document.activeElement != input) {\n event.stopPropagation();\n event.preventDefault();\n input.focus();\n }\n });\n\n element.bind('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","angular.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', '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 '

      Workspace Reset Instructions ➤

      \\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});","\"use strict\";\n\nangular.module('versions', [])\n\n.controller('DocsVersionsCtrl', ['$scope', '$location', '$window', 'NG_VERSIONS', function($scope, $location, $window, NG_VERSIONS) {\n $scope.docs_version = NG_VERSIONS[0];\n $scope.docs_versions = NG_VERSIONS;\n\n for(var i=0, minor = NaN; i < NG_VERSIONS.length; i++) {\n var version = NG_VERSIONS[i];\n // NaN will give false here\n if (minor <= version.minor) {\n continue;\n }\n version.isLatest = true;\n minor = version.minor;\n }\n\n $scope.getGroupName = function(v) {\n return v.isLatest ? 'Latest' : ('v' + v.major + '.' + v.minor + '.x');\n };\n\n $scope.jumpToDocsVersion = function(version) {\n var currentPagePath = $location.path().replace(/\\/$/, '');\n\n // TODO: We need to do some munging of the path for different versions of the API...\n\n\n $window.location = version.docsUrl + currentPagePath;\n };\n}]);\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/1.2.30/docs/js/nav-data.js b/1.2.30/docs/js/nav-data.js new file mode 100644 index 0000000000..968d513293 --- /dev/null +++ b/1.2.30/docs/js/nav-data.js @@ -0,0 +1,1736 @@ +// Meta data used by the AngularJS docs app +angular.module('navData', []) + .value('NG_NAVIGATION', { + "api": { + "id": "api", + "name": "API", + "navGroups": [ + { + "name": "ng", + "href": "api/ng", + "type": "group", + "navItems": [ + { + "name": "function", + "type": "section", + "href": "api/ng/function" + }, + { + "name": "angular.bind", + "href": "api/ng/function/angular.bind", + "type": "function" + }, + { + "name": "angular.bootstrap", + "href": "api/ng/function/angular.bootstrap", + "type": "function" + }, + { + "name": "angular.copy", + "href": "api/ng/function/angular.copy", + "type": "function" + }, + { + "name": "angular.element", + "href": "api/ng/function/angular.element", + "type": "function" + }, + { + "name": "angular.equals", + "href": "api/ng/function/angular.equals", + "type": "function" + }, + { + "name": "angular.extend", + "href": "api/ng/function/angular.extend", + "type": "function" + }, + { + "name": "angular.forEach", + "href": "api/ng/function/angular.forEach", + "type": "function" + }, + { + "name": "angular.fromJson", + "href": "api/ng/function/angular.fromJson", + "type": "function" + }, + { + "name": "angular.identity", + "href": "api/ng/function/angular.identity", + "type": "function" + }, + { + "name": "angular.injector", + "href": "api/ng/function/angular.injector", + "type": "function" + }, + { + "name": "angular.isArray", + "href": "api/ng/function/angular.isArray", + "type": "function" + }, + { + "name": "angular.isDate", + "href": "api/ng/function/angular.isDate", + "type": "function" + }, + { + "name": "angular.isDefined", + "href": "api/ng/function/angular.isDefined", + "type": "function" + }, + { + "name": "angular.isElement", + "href": "api/ng/function/angular.isElement", + "type": "function" + }, + { + "name": "angular.isFunction", + "href": "api/ng/function/angular.isFunction", + "type": "function" + }, + { + "name": "angular.isNumber", + "href": "api/ng/function/angular.isNumber", + "type": "function" + }, + { + "name": "angular.isObject", + "href": "api/ng/function/angular.isObject", + "type": "function" + }, + { + "name": "angular.isString", + "href": "api/ng/function/angular.isString", + "type": "function" + }, + { + "name": "angular.isUndefined", + "href": "api/ng/function/angular.isUndefined", + "type": "function" + }, + { + "name": "angular.lowercase", + "href": "api/ng/function/angular.lowercase", + "type": "function" + }, + { + "name": "angular.module", + "href": "api/ng/function/angular.module", + "type": "function" + }, + { + "name": "angular.noop", + "href": "api/ng/function/angular.noop", + "type": "function" + }, + { + "name": "angular.toJson", + "href": "api/ng/function/angular.toJson", + "type": "function" + }, + { + "name": "angular.uppercase", + "href": "api/ng/function/angular.uppercase", + "type": "function" + }, + { + "name": "directive", + "type": "section", + "href": "api/ng/directive" + }, + { + "name": "a", + "href": "api/ng/directive/a", + "type": "directive" + }, + { + "name": "form", + "href": "api/ng/directive/form", + "type": "directive" + }, + { + "name": "input", + "href": "api/ng/directive/input", + "type": "directive" + }, + { + "name": "input[checkbox]", + "href": "api/ng/input/input[checkbox]", + "type": "input" + }, + { + "name": "input[email]", + "href": "api/ng/input/input[email]", + "type": "input" + }, + { + "name": "input[number]", + "href": "api/ng/input/input[number]", + "type": "input" + }, + { + "name": "input[radio]", + "href": "api/ng/input/input[radio]", + "type": "input" + }, + { + "name": "input[text]", + "href": "api/ng/input/input[text]", + "type": "input" + }, + { + "name": "input[url]", + "href": "api/ng/input/input[url]", + "type": "input" + }, + { + "name": "ngApp", + "href": "api/ng/directive/ngApp", + "type": "directive" + }, + { + "name": "ngBind", + "href": "api/ng/directive/ngBind", + "type": "directive" + }, + { + "name": "ngBindHtml", + "href": "api/ng/directive/ngBindHtml", + "type": "directive" + }, + { + "name": "ngBindTemplate", + "href": "api/ng/directive/ngBindTemplate", + "type": "directive" + }, + { + "name": "ngBlur", + "href": "api/ng/directive/ngBlur", + "type": "directive" + }, + { + "name": "ngChange", + "href": "api/ng/directive/ngChange", + "type": "directive" + }, + { + "name": "ngChecked", + "href": "api/ng/directive/ngChecked", + "type": "directive" + }, + { + "name": "ngClass", + "href": "api/ng/directive/ngClass", + "type": "directive" + }, + { + "name": "ngClassEven", + "href": "api/ng/directive/ngClassEven", + "type": "directive" + }, + { + "name": "ngClassOdd", + "href": "api/ng/directive/ngClassOdd", + "type": "directive" + }, + { + "name": "ngClick", + "href": "api/ng/directive/ngClick", + "type": "directive" + }, + { + "name": "ngCloak", + "href": "api/ng/directive/ngCloak", + "type": "directive" + }, + { + "name": "ngController", + "href": "api/ng/directive/ngController", + "type": "directive" + }, + { + "name": "ngCopy", + "href": "api/ng/directive/ngCopy", + "type": "directive" + }, + { + "name": "ngCsp", + "href": "api/ng/directive/ngCsp", + "type": "directive" + }, + { + "name": "ngCut", + "href": "api/ng/directive/ngCut", + "type": "directive" + }, + { + "name": "ngDblclick", + "href": "api/ng/directive/ngDblclick", + "type": "directive" + }, + { + "name": "ngDisabled", + "href": "api/ng/directive/ngDisabled", + "type": "directive" + }, + { + "name": "ngFocus", + "href": "api/ng/directive/ngFocus", + "type": "directive" + }, + { + "name": "ngForm", + "href": "api/ng/directive/ngForm", + "type": "directive" + }, + { + "name": "ngHide", + "href": "api/ng/directive/ngHide", + "type": "directive" + }, + { + "name": "ngHref", + "href": "api/ng/directive/ngHref", + "type": "directive" + }, + { + "name": "ngIf", + "href": "api/ng/directive/ngIf", + "type": "directive" + }, + { + "name": "ngInclude", + "href": "api/ng/directive/ngInclude", + "type": "directive" + }, + { + "name": "ngInit", + "href": "api/ng/directive/ngInit", + "type": "directive" + }, + { + "name": "ngKeydown", + "href": "api/ng/directive/ngKeydown", + "type": "directive" + }, + { + "name": "ngKeypress", + "href": "api/ng/directive/ngKeypress", + "type": "directive" + }, + { + "name": "ngKeyup", + "href": "api/ng/directive/ngKeyup", + "type": "directive" + }, + { + "name": "ngList", + "href": "api/ng/directive/ngList", + "type": "directive" + }, + { + "name": "ngModel", + "href": "api/ng/directive/ngModel", + "type": "directive" + }, + { + "name": "ngMousedown", + "href": "api/ng/directive/ngMousedown", + "type": "directive" + }, + { + "name": "ngMouseenter", + "href": "api/ng/directive/ngMouseenter", + "type": "directive" + }, + { + "name": "ngMouseleave", + "href": "api/ng/directive/ngMouseleave", + "type": "directive" + }, + { + "name": "ngMousemove", + "href": "api/ng/directive/ngMousemove", + "type": "directive" + }, + { + "name": "ngMouseover", + "href": "api/ng/directive/ngMouseover", + "type": "directive" + }, + { + "name": "ngMouseup", + "href": "api/ng/directive/ngMouseup", + "type": "directive" + }, + { + "name": "ngNonBindable", + "href": "api/ng/directive/ngNonBindable", + "type": "directive" + }, + { + "name": "ngOpen", + "href": "api/ng/directive/ngOpen", + "type": "directive" + }, + { + "name": "ngPaste", + "href": "api/ng/directive/ngPaste", + "type": "directive" + }, + { + "name": "ngPluralize", + "href": "api/ng/directive/ngPluralize", + "type": "directive" + }, + { + "name": "ngReadonly", + "href": "api/ng/directive/ngReadonly", + "type": "directive" + }, + { + "name": "ngRepeat", + "href": "api/ng/directive/ngRepeat", + "type": "directive" + }, + { + "name": "ngSelected", + "href": "api/ng/directive/ngSelected", + "type": "directive" + }, + { + "name": "ngShow", + "href": "api/ng/directive/ngShow", + "type": "directive" + }, + { + "name": "ngSrc", + "href": "api/ng/directive/ngSrc", + "type": "directive" + }, + { + "name": "ngSrcset", + "href": "api/ng/directive/ngSrcset", + "type": "directive" + }, + { + "name": "ngStyle", + "href": "api/ng/directive/ngStyle", + "type": "directive" + }, + { + "name": "ngSubmit", + "href": "api/ng/directive/ngSubmit", + "type": "directive" + }, + { + "name": "ngSwitch", + "href": "api/ng/directive/ngSwitch", + "type": "directive" + }, + { + "name": "ngTransclude", + "href": "api/ng/directive/ngTransclude", + "type": "directive" + }, + { + "name": "ngValue", + "href": "api/ng/directive/ngValue", + "type": "directive" + }, + { + "name": "script", + "href": "api/ng/directive/script", + "type": "directive" + }, + { + "name": "select", + "href": "api/ng/directive/select", + "type": "directive" + }, + { + "name": "textarea", + "href": "api/ng/directive/textarea", + "type": "directive" + }, + { + "name": "object", + "type": "section", + "href": "api/ng/object" + }, + { + "name": "angular.version", + "href": "api/ng/object/angular.version", + "type": "object" + }, + { + "name": "type", + "type": "section", + "href": "api/ng/type" + }, + { + "name": "$cacheFactory.Cache", + "href": "api/ng/type/$cacheFactory.Cache", + "type": "type" + }, + { + "name": "$compile.directive.Attributes", + "href": "api/ng/type/$compile.directive.Attributes", + "type": "type" + }, + { + "name": "$rootScope.Scope", + "href": "api/ng/type/$rootScope.Scope", + "type": "type" + }, + { + "name": "angular.Module", + "href": "api/ng/type/angular.Module", + "type": "type" + }, + { + "name": "form.FormController", + "href": "api/ng/type/form.FormController", + "type": "type" + }, + { + "name": "ngModel.NgModelController", + "href": "api/ng/type/ngModel.NgModelController", + "type": "type" + }, + { + "name": "service", + "type": "section", + "href": "api/ng/service" + }, + { + "name": "$anchorScroll", + "href": "api/ng/service/$anchorScroll", + "type": "service" + }, + { + "name": "$animate", + "href": "api/ng/service/$animate", + "type": "service" + }, + { + "name": "$cacheFactory", + "href": "api/ng/service/$cacheFactory", + "type": "service" + }, + { + "name": "$compile", + "href": "api/ng/service/$compile", + "type": "service" + }, + { + "name": "$controller", + "href": "api/ng/service/$controller", + "type": "service" + }, + { + "name": "$document", + "href": "api/ng/service/$document", + "type": "service" + }, + { + "name": "$exceptionHandler", + "href": "api/ng/service/$exceptionHandler", + "type": "service" + }, + { + "name": "$filter", + "href": "api/ng/service/$filter", + "type": "service" + }, + { + "name": "$http", + "href": "api/ng/service/$http", + "type": "service" + }, + { + "name": "$httpBackend", + "href": "api/ng/service/$httpBackend", + "type": "service" + }, + { + "name": "$interpolate", + "href": "api/ng/service/$interpolate", + "type": "service" + }, + { + "name": "$interval", + "href": "api/ng/service/$interval", + "type": "service" + }, + { + "name": "$locale", + "href": "api/ng/service/$locale", + "type": "service" + }, + { + "name": "$location", + "href": "api/ng/service/$location", + "type": "service" + }, + { + "name": "$log", + "href": "api/ng/service/$log", + "type": "service" + }, + { + "name": "$parse", + "href": "api/ng/service/$parse", + "type": "service" + }, + { + "name": "$q", + "href": "api/ng/service/$q", + "type": "service" + }, + { + "name": "$rootElement", + "href": "api/ng/service/$rootElement", + "type": "service" + }, + { + "name": "$rootScope", + "href": "api/ng/service/$rootScope", + "type": "service" + }, + { + "name": "$sce", + "href": "api/ng/service/$sce", + "type": "service" + }, + { + "name": "$sceDelegate", + "href": "api/ng/service/$sceDelegate", + "type": "service" + }, + { + "name": "$templateCache", + "href": "api/ng/service/$templateCache", + "type": "service" + }, + { + "name": "$timeout", + "href": "api/ng/service/$timeout", + "type": "service" + }, + { + "name": "$window", + "href": "api/ng/service/$window", + "type": "service" + }, + { + "name": "provider", + "type": "section", + "href": "api/ng/provider" + }, + { + "name": "$animateProvider", + "href": "api/ng/provider/$animateProvider", + "type": "provider" + }, + { + "name": "$compileProvider", + "href": "api/ng/provider/$compileProvider", + "type": "provider" + }, + { + "name": "$controllerProvider", + "href": "api/ng/provider/$controllerProvider", + "type": "provider" + }, + { + "name": "$filterProvider", + "href": "api/ng/provider/$filterProvider", + "type": "provider" + }, + { + "name": "$httpProvider", + "href": "api/ng/provider/$httpProvider", + "type": "provider" + }, + { + "name": "$interpolateProvider", + "href": "api/ng/provider/$interpolateProvider", + "type": "provider" + }, + { + "name": "$locationProvider", + "href": "api/ng/provider/$locationProvider", + "type": "provider" + }, + { + "name": "$logProvider", + "href": "api/ng/provider/$logProvider", + "type": "provider" + }, + { + "name": "$parseProvider", + "href": "api/ng/provider/$parseProvider", + "type": "provider" + }, + { + "name": "$rootScopeProvider", + "href": "api/ng/provider/$rootScopeProvider", + "type": "provider" + }, + { + "name": "$sceDelegateProvider", + "href": "api/ng/provider/$sceDelegateProvider", + "type": "provider" + }, + { + "name": "$sceProvider", + "href": "api/ng/provider/$sceProvider", + "type": "provider" + }, + { + "name": "filter", + "type": "section", + "href": "api/ng/filter" + }, + { + "name": "currency", + "href": "api/ng/filter/currency", + "type": "filter" + }, + { + "name": "date", + "href": "api/ng/filter/date", + "type": "filter" + }, + { + "name": "filter", + "href": "api/ng/filter/filter", + "type": "filter" + }, + { + "name": "json", + "href": "api/ng/filter/json", + "type": "filter" + }, + { + "name": "limitTo", + "href": "api/ng/filter/limitTo", + "type": "filter" + }, + { + "name": "lowercase", + "href": "api/ng/filter/lowercase", + "type": "filter" + }, + { + "name": "number", + "href": "api/ng/filter/number", + "type": "filter" + }, + { + "name": "orderBy", + "href": "api/ng/filter/orderBy", + "type": "filter" + }, + { + "name": "uppercase", + "href": "api/ng/filter/uppercase", + "type": "filter" + } + ] + }, + { + "name": "auto", + "href": "api/auto", + "type": "group", + "navItems": [ + { + "name": "service", + "type": "section", + "href": "api/auto/service" + }, + { + "name": "$injector", + "href": "api/auto/service/$injector", + "type": "service" + }, + { + "name": "$provide", + "href": "api/auto/service/$provide", + "type": "service" + } + ] + }, + { + "name": "ngAnimate", + "href": "api/ngAnimate", + "type": "group", + "navItems": [ + { + "name": "provider", + "type": "section", + "href": "api/ngAnimate/provider" + }, + { + "name": "$animateProvider", + "href": "api/ngAnimate/provider/$animateProvider", + "type": "provider" + }, + { + "name": "service", + "type": "section", + "href": "api/ngAnimate/service" + }, + { + "name": "$animate", + "href": "api/ngAnimate/service/$animate", + "type": "service" + } + ] + }, + { + "name": "ngCookies", + "href": "api/ngCookies", + "type": "group", + "navItems": [ + { + "name": "service", + "type": "section", + "href": "api/ngCookies/service" + }, + { + "name": "$cookieStore", + "href": "api/ngCookies/service/$cookieStore", + "type": "service" + }, + { + "name": "$cookies", + "href": "api/ngCookies/service/$cookies", + "type": "service" + } + ] + }, + { + "name": "ngMock", + "href": "api/ngMock", + "type": "group", + "navItems": [ + { + "name": "object", + "type": "section", + "href": "api/ngMock/object" + }, + { + "name": "angular.mock", + "href": "api/ngMock/object/angular.mock", + "type": "object" + }, + { + "name": "provider", + "type": "section", + "href": "api/ngMock/provider" + }, + { + "name": "$exceptionHandlerProvider", + "href": "api/ngMock/provider/$exceptionHandlerProvider", + "type": "provider" + }, + { + "name": "service", + "type": "section", + "href": "api/ngMock/service" + }, + { + "name": "$exceptionHandler", + "href": "api/ngMock/service/$exceptionHandler", + "type": "service" + }, + { + "name": "$httpBackend", + "href": "api/ngMock/service/$httpBackend", + "type": "service" + }, + { + "name": "$interval", + "href": "api/ngMock/service/$interval", + "type": "service" + }, + { + "name": "$log", + "href": "api/ngMock/service/$log", + "type": "service" + }, + { + "name": "$timeout", + "href": "api/ngMock/service/$timeout", + "type": "service" + }, + { + "name": "type", + "type": "section", + "href": "api/ngMock/type" + }, + { + "name": "angular.mock.TzDate", + "href": "api/ngMock/type/angular.mock.TzDate", + "type": "type" + }, + { + "name": "function", + "type": "section", + "href": "api/ngMock/function" + }, + { + "name": "angular.mock.dump", + "href": "api/ngMock/function/angular.mock.dump", + "type": "function" + }, + { + "name": "angular.mock.inject", + "href": "api/ngMock/function/angular.mock.inject", + "type": "function" + }, + { + "name": "angular.mock.module", + "href": "api/ngMock/function/angular.mock.module", + "type": "function" + } + ] + }, + { + "name": "ngMockE2E", + "href": "api/ngMockE2E", + "type": "group", + "navItems": [ + { + "name": "service", + "type": "section", + "href": "api/ngMockE2E/service" + }, + { + "name": "$httpBackend", + "href": "api/ngMockE2E/service/$httpBackend", + "type": "service" + } + ] + }, + { + "name": "ngResource", + "href": "api/ngResource", + "type": "group", + "navItems": [ + { + "name": "service", + "type": "section", + "href": "api/ngResource/service" + }, + { + "name": "$resource", + "href": "api/ngResource/service/$resource", + "type": "service" + } + ] + }, + { + "name": "ngRoute", + "href": "api/ngRoute", + "type": "group", + "navItems": [ + { + "name": "directive", + "type": "section", + "href": "api/ngRoute/directive" + }, + { + "name": "ngView", + "href": "api/ngRoute/directive/ngView", + "type": "directive" + }, + { + "name": "provider", + "type": "section", + "href": "api/ngRoute/provider" + }, + { + "name": "$routeProvider", + "href": "api/ngRoute/provider/$routeProvider", + "type": "provider" + }, + { + "name": "service", + "type": "section", + "href": "api/ngRoute/service" + }, + { + "name": "$route", + "href": "api/ngRoute/service/$route", + "type": "service" + }, + { + "name": "$routeParams", + "href": "api/ngRoute/service/$routeParams", + "type": "service" + } + ] + }, + { + "name": "ngSanitize", + "href": "api/ngSanitize", + "type": "group", + "navItems": [ + { + "name": "filter", + "type": "section", + "href": "api/ngSanitize/filter" + }, + { + "name": "linky", + "href": "api/ngSanitize/filter/linky", + "type": "filter" + }, + { + "name": "service", + "type": "section", + "href": "api/ngSanitize/service" + }, + { + "name": "$sanitize", + "href": "api/ngSanitize/service/$sanitize", + "type": "service" + } + ] + }, + { + "name": "ngTouch", + "href": "api/ngTouch", + "type": "group", + "navItems": [ + { + "name": "directive", + "type": "section", + "href": "api/ngTouch/directive" + }, + { + "name": "ngClick", + "href": "api/ngTouch/directive/ngClick", + "type": "directive" + }, + { + "name": "ngSwipeLeft", + "href": "api/ngTouch/directive/ngSwipeLeft", + "type": "directive" + }, + { + "name": "ngSwipeRight", + "href": "api/ngTouch/directive/ngSwipeRight", + "type": "directive" + }, + { + "name": "service", + "type": "section", + "href": "api/ngTouch/service" + }, + { + "name": "$swipe", + "href": "api/ngTouch/service/$swipe", + "type": "service" + } + ] + } + ] + }, + "error": { + "id": "error", + "name": "Error Reference", + "navGroups": [ + { + "name": "Error Reference", + "type": "group", + "href": "error", + "navItems": [ + { + "name": "$animate", + "href": "error/$animate", + "type": "section" + }, + { + "name": "notcsel", + "href": "error/$animate/notcsel", + "type": "error" + }, + { + "name": "$cacheFactory", + "href": "error/$cacheFactory", + "type": "section" + }, + { + "name": "iid", + "href": "error/$cacheFactory/iid", + "type": "error" + }, + { + "name": "$compile", + "href": "error/$compile", + "type": "section" + }, + { + "name": "ctreq", + "href": "error/$compile/ctreq", + "type": "error" + }, + { + "name": "iscp", + "href": "error/$compile/iscp", + "type": "error" + }, + { + "name": "multidir", + "href": "error/$compile/multidir", + "type": "error" + }, + { + "name": "nodomevents", + "href": "error/$compile/nodomevents", + "type": "error" + }, + { + "name": "nonassign", + "href": "error/$compile/nonassign", + "type": "error" + }, + { + "name": "selmulti", + "href": "error/$compile/selmulti", + "type": "error" + }, + { + "name": "tpload", + "href": "error/$compile/tpload", + "type": "error" + }, + { + "name": "tplrt", + "href": "error/$compile/tplrt", + "type": "error" + }, + { + "name": "uterdir", + "href": "error/$compile/uterdir", + "type": "error" + }, + { + "name": "$controller", + "href": "error/$controller", + "type": "section" + }, + { + "name": "noscp", + "href": "error/$controller/noscp", + "type": "error" + }, + { + "name": "$httpBackend", + "href": "error/$httpBackend", + "type": "section" + }, + { + "name": "noxhr", + "href": "error/$httpBackend/noxhr", + "type": "error" + }, + { + "name": "$injector", + "href": "error/$injector", + "type": "section" + }, + { + "name": "cdep", + "href": "error/$injector/cdep", + "type": "error" + }, + { + "name": "itkn", + "href": "error/$injector/itkn", + "type": "error" + }, + { + "name": "modulerr", + "href": "error/$injector/modulerr", + "type": "error" + }, + { + "name": "nomod", + "href": "error/$injector/nomod", + "type": "error" + }, + { + "name": "pget", + "href": "error/$injector/pget", + "type": "error" + }, + { + "name": "unpr", + "href": "error/$injector/unpr", + "type": "error" + }, + { + "name": "$interpolate", + "href": "error/$interpolate", + "type": "section" + }, + { + "name": "interr", + "href": "error/$interpolate/interr", + "type": "error" + }, + { + "name": "noconcat", + "href": "error/$interpolate/noconcat", + "type": "error" + }, + { + "name": "$location", + "href": "error/$location", + "type": "section" + }, + { + "name": "ihshprfx", + "href": "error/$location/ihshprfx", + "type": "error" + }, + { + "name": "ipthprfx", + "href": "error/$location/ipthprfx", + "type": "error" + }, + { + "name": "isrcharg", + "href": "error/$location/isrcharg", + "type": "error" + }, + { + "name": "$parse", + "href": "error/$parse", + "type": "section" + }, + { + "name": "isecdom", + "href": "error/$parse/isecdom", + "type": "error" + }, + { + "name": "isecff", + "href": "error/$parse/isecff", + "type": "error" + }, + { + "name": "isecfld", + "href": "error/$parse/isecfld", + "type": "error" + }, + { + "name": "isecfn", + "href": "error/$parse/isecfn", + "type": "error" + }, + { + "name": "isecobj", + "href": "error/$parse/isecobj", + "type": "error" + }, + { + "name": "isecwindow", + "href": "error/$parse/isecwindow", + "type": "error" + }, + { + "name": "lexerr", + "href": "error/$parse/lexerr", + "type": "error" + }, + { + "name": "syntax", + "href": "error/$parse/syntax", + "type": "error" + }, + { + "name": "ueoe", + "href": "error/$parse/ueoe", + "type": "error" + }, + { + "name": "$resource", + "href": "error/$resource", + "type": "section" + }, + { + "name": "badargs", + "href": "error/$resource/badargs", + "type": "error" + }, + { + "name": "badcfg", + "href": "error/$resource/badcfg", + "type": "error" + }, + { + "name": "badmember", + "href": "error/$resource/badmember", + "type": "error" + }, + { + "name": "badname", + "href": "error/$resource/badname", + "type": "error" + }, + { + "name": "$rootScope", + "href": "error/$rootScope", + "type": "section" + }, + { + "name": "infdig", + "href": "error/$rootScope/infdig", + "type": "error" + }, + { + "name": "inprog", + "href": "error/$rootScope/inprog", + "type": "error" + }, + { + "name": "$sanitize", + "href": "error/$sanitize", + "type": "section" + }, + { + "name": "badparse", + "href": "error/$sanitize/badparse", + "type": "error" + }, + { + "name": "$sce", + "href": "error/$sce", + "type": "section" + }, + { + "name": "icontext", + "href": "error/$sce/icontext", + "type": "error" + }, + { + "name": "iequirks", + "href": "error/$sce/iequirks", + "type": "error" + }, + { + "name": "imatcher", + "href": "error/$sce/imatcher", + "type": "error" + }, + { + "name": "insecurl", + "href": "error/$sce/insecurl", + "type": "error" + }, + { + "name": "itype", + "href": "error/$sce/itype", + "type": "error" + }, + { + "name": "iwcard", + "href": "error/$sce/iwcard", + "type": "error" + }, + { + "name": "unsafe", + "href": "error/$sce/unsafe", + "type": "error" + }, + { + "name": "jqLite", + "href": "error/jqLite", + "type": "section" + }, + { + "name": "nosel", + "href": "error/jqLite/nosel", + "type": "error" + }, + { + "name": "offargs", + "href": "error/jqLite/offargs", + "type": "error" + }, + { + "name": "onargs", + "href": "error/jqLite/onargs", + "type": "error" + }, + { + "name": "ng", + "href": "error/ng", + "type": "section" + }, + { + "name": "areq", + "href": "error/ng/areq", + "type": "error" + }, + { + "name": "badname", + "href": "error/ng/badname", + "type": "error" + }, + { + "name": "btstrpd", + "href": "error/ng/btstrpd", + "type": "error" + }, + { + "name": "cpi", + "href": "error/ng/cpi", + "type": "error" + }, + { + "name": "cpws", + "href": "error/ng/cpws", + "type": "error" + }, + { + "name": "ngModel", + "href": "error/ngModel", + "type": "section" + }, + { + "name": "nonassign", + "href": "error/ngModel/nonassign", + "type": "error" + }, + { + "name": "ngOptions", + "href": "error/ngOptions", + "type": "section" + }, + { + "name": "iexp", + "href": "error/ngOptions/iexp", + "type": "error" + }, + { + "name": "ngPattern", + "href": "error/ngPattern", + "type": "section" + }, + { + "name": "noregexp", + "href": "error/ngPattern/noregexp", + "type": "error" + }, + { + "name": "ngRepeat", + "href": "error/ngRepeat", + "type": "section" + }, + { + "name": "dupes", + "href": "error/ngRepeat/dupes", + "type": "error" + }, + { + "name": "iexp", + "href": "error/ngRepeat/iexp", + "type": "error" + }, + { + "name": "iidexp", + "href": "error/ngRepeat/iidexp", + "type": "error" + }, + { + "name": "ngTransclude", + "href": "error/ngTransclude", + "type": "section" + }, + { + "name": "orphan", + "href": "error/ngTransclude/orphan", + "type": "error" + } + ] + } + ] + }, + "guide": { + "id": "guide", + "name": "Developer Guide", + "navGroups": [ + { + "name": "Developer Guide", + "type": "group", + "href": "guide", + "navItems": [ + { + "name": "Introduction", + "href": "guide/introduction", + "type": "page" + }, + { + "name": "Conceptual Overview", + "href": "guide/concepts", + "type": "page" + }, + { + "name": "Data Binding", + "href": "guide/databinding", + "type": "page" + }, + { + "name": "Controllers", + "href": "guide/controller", + "type": "page" + }, + { + "name": "Services", + "href": "guide/services", + "type": "page" + }, + { + "name": "Scopes", + "href": "guide/scope", + "type": "page" + }, + { + "name": "Dependency Injection", + "href": "guide/di", + "type": "page" + }, + { + "name": "Templates", + "href": "guide/templates", + "type": "page" + }, + { + "name": "Expressions", + "href": "guide/expression", + "type": "page" + }, + { + "name": "Filters", + "href": "guide/filter", + "type": "page" + }, + { + "name": "Forms", + "href": "guide/forms", + "type": "page" + }, + { + "name": "Directives", + "href": "guide/directive", + "type": "page" + }, + { + "name": "Animations", + "href": "guide/animations", + "type": "page" + }, + { + "name": "Modules", + "href": "guide/module", + "type": "page" + }, + { + "name": "HTML Compiler", + "href": "guide/compiler", + "type": "page" + }, + { + "name": "Providers", + "href": "guide/providers", + "type": "page" + }, + { + "name": "Bootstrap", + "href": "guide/bootstrap", + "type": "page" + }, + { + "name": "Unit Testing", + "href": "guide/unit-testing", + "type": "page" + }, + { + "name": "E2E Testing", + "href": "guide/e2e-testing", + "type": "page" + }, + { + "name": "Using $location", + "href": "guide/$location", + "type": "page" + }, + { + "name": "Working With CSS", + "href": "guide/css-styling", + "type": "page" + }, + { + "name": "i18n and l10n", + "href": "guide/i18n", + "type": "page" + }, + { + "name": "Security", + "href": "guide/security", + "type": "page" + }, + { + "name": "Internet Explorer Compatibility", + "href": "guide/ie", + "type": "page" + }, + { + "name": "Migrating from 1.0 to 1.2", + "href": "guide/migration", + "type": "page" + } + ] + } + ] + }, + "misc": { + "id": "misc", + "name": "Miscellaneous", + "navGroups": [ + { + "name": "Miscellaneous", + "type": "group", + "href": "misc", + "navItems": [ + { + "name": "Develop", + "href": "misc/contribute", + "type": "page" + }, + { + "name": "Downloading", + "href": "misc/downloading", + "type": "page" + }, + { + "name": "FAQ", + "href": "misc/faq", + "type": "page" + }, + { + "name": "Getting Started", + "href": "misc/started", + "type": "page" + } + ] + } + ] + }, + "tutorial": { + "id": "tutorial", + "name": "Tutorial", + "navGroups": [ + { + "name": "Tutorial", + "type": "group", + "href": "tutorial", + "navItems": [ + { + "name": "0 - Bootstrapping", + "step": 0, + "href": "tutorial/step_00", + "type": "tutorial" + }, + { + "name": "1 - Static Template", + "step": 1, + "href": "tutorial/step_01", + "type": "tutorial" + }, + { + "name": "2 - Angular Templates", + "step": 2, + "href": "tutorial/step_02", + "type": "tutorial" + }, + { + "name": "3 - Filtering Repeaters", + "step": 3, + "href": "tutorial/step_03", + "type": "tutorial" + }, + { + "name": "4 - Two-way Data Binding", + "step": 4, + "href": "tutorial/step_04", + "type": "tutorial" + }, + { + "name": "5 - XHRs & Dependency Injection", + "step": 5, + "href": "tutorial/step_05", + "type": "tutorial" + }, + { + "name": "6 - Templating Links & Images", + "step": 6, + "href": "tutorial/step_06", + "type": "tutorial" + }, + { + "name": "7 - Routing & Multiple Views", + "step": 7, + "href": "tutorial/step_07", + "type": "tutorial" + }, + { + "name": "8 - More Templating", + "step": 8, + "href": "tutorial/step_08", + "type": "tutorial" + }, + { + "name": "9 - Filters", + "step": 9, + "href": "tutorial/step_09", + "type": "tutorial" + }, + { + "name": "10 - Event Handlers", + "step": 10, + "href": "tutorial/step_10", + "type": "tutorial" + }, + { + "name": "11 - REST and Custom Services", + "step": 11, + "href": "tutorial/step_11", + "type": "tutorial" + }, + { + "name": "12 - Applying Animations", + "step": 12, + "href": "tutorial/step_12", + "type": "tutorial" + }, + { + "name": "The End", + "step": 99, + "href": "tutorial/the_end", + "type": "tutorial" + } + ] + } + ] + } +}); diff --git a/1.2.30/docs/js/pages-data.js b/1.2.30/docs/js/pages-data.js new file mode 100644 index 0000000000..09456220f2 --- /dev/null +++ b/1.2.30/docs/js/pages-data.js @@ -0,0 +1,2159 @@ +// Meta data used by the AngularJS docs app +angular.module('pagesData', []) + .value('NG_PAGES', { + "api": { + "name": "API Reference", + "area": "api", + "path": "api" + }, + "error/$animate/notcsel": { + "name": "notcsel", + "area": "error", + "path": "error/$animate/notcsel" + }, + "error/$cacheFactory/iid": { + "name": "iid", + "area": "error", + "path": "error/$cacheFactory/iid" + }, + "error/$compile/ctreq": { + "name": "ctreq", + "area": "error", + "path": "error/$compile/ctreq" + }, + "error/$compile/iscp": { + "name": "iscp", + "area": "error", + "path": "error/$compile/iscp" + }, + "error/$compile/multidir": { + "name": "multidir", + "area": "error", + "path": "error/$compile/multidir" + }, + "error/$compile/nodomevents": { + "name": "nodomevents", + "area": "error", + "path": "error/$compile/nodomevents" + }, + "error/$compile/nonassign": { + "name": "nonassign", + "area": "error", + "path": "error/$compile/nonassign" + }, + "error/$compile/selmulti": { + "name": "selmulti", + "area": "error", + "path": "error/$compile/selmulti" + }, + "error/$compile/tpload": { + "name": "tpload", + "area": "error", + "path": "error/$compile/tpload" + }, + "error/$compile/tplrt": { + "name": "tplrt", + "area": "error", + "path": "error/$compile/tplrt" + }, + "error/$compile/uterdir": { + "name": "uterdir", + "area": "error", + "path": "error/$compile/uterdir" + }, + "error/$controller/noscp": { + "name": "noscp", + "area": "error", + "path": "error/$controller/noscp" + }, + "error/$httpBackend/noxhr": { + "name": "noxhr", + "area": "error", + "path": "error/$httpBackend/noxhr" + }, + "error/$injector/cdep": { + "name": "cdep", + "area": "error", + "path": "error/$injector/cdep" + }, + "error/$injector/itkn": { + "name": "itkn", + "area": "error", + "path": "error/$injector/itkn" + }, + "error/$injector/modulerr": { + "name": "modulerr", + "area": "error", + "path": "error/$injector/modulerr" + }, + "error/$injector/nomod": { + "name": "nomod", + "area": "error", + "path": "error/$injector/nomod" + }, + "error/$injector/pget": { + "name": "pget", + "area": "error", + "path": "error/$injector/pget" + }, + "error/$injector/unpr": { + "name": "unpr", + "area": "error", + "path": "error/$injector/unpr" + }, + "error/$interpolate/interr": { + "name": "interr", + "area": "error", + "path": "error/$interpolate/interr" + }, + "error/$interpolate/noconcat": { + "name": "noconcat", + "area": "error", + "path": "error/$interpolate/noconcat" + }, + "error/$location/ihshprfx": { + "name": "ihshprfx", + "area": "error", + "path": "error/$location/ihshprfx" + }, + "error/$location/ipthprfx": { + "name": "ipthprfx", + "area": "error", + "path": "error/$location/ipthprfx" + }, + "error/$location/isrcharg": { + "name": "isrcharg", + "area": "error", + "path": "error/$location/isrcharg" + }, + "error/$parse/isecdom": { + "name": "isecdom", + "area": "error", + "path": "error/$parse/isecdom" + }, + "error/$parse/isecff": { + "name": "isecff", + "area": "error", + "path": "error/$parse/isecff" + }, + "error/$parse/isecfld": { + "name": "isecfld", + "area": "error", + "path": "error/$parse/isecfld" + }, + "error/$parse/isecfn": { + "name": "isecfn", + "area": "error", + "path": "error/$parse/isecfn" + }, + "error/$parse/isecobj": { + "name": "isecobj", + "area": "error", + "path": "error/$parse/isecobj" + }, + "error/$parse/isecwindow": { + "name": "isecwindow", + "area": "error", + "path": "error/$parse/isecwindow" + }, + "error/$parse/lexerr": { + "name": "lexerr", + "area": "error", + "path": "error/$parse/lexerr" + }, + "error/$parse/syntax": { + "name": "syntax", + "area": "error", + "path": "error/$parse/syntax" + }, + "error/$parse/ueoe": { + "name": "ueoe", + "area": "error", + "path": "error/$parse/ueoe" + }, + "error/$resource/badargs": { + "name": "badargs", + "area": "error", + "path": "error/$resource/badargs" + }, + "error/$resource/badcfg": { + "name": "badcfg", + "area": "error", + "path": "error/$resource/badcfg" + }, + "error/$resource/badmember": { + "name": "badmember", + "area": "error", + "path": "error/$resource/badmember" + }, + "error/$resource/badname": { + "name": "badname", + "area": "error", + "path": "error/$resource/badname" + }, + "error/$rootScope/infdig": { + "name": "infdig", + "area": "error", + "path": "error/$rootScope/infdig" + }, + "error/$rootScope/inprog": { + "name": "inprog", + "area": "error", + "path": "error/$rootScope/inprog" + }, + "error/$sanitize/badparse": { + "name": "badparse", + "area": "error", + "path": "error/$sanitize/badparse" + }, + "error/$sce/icontext": { + "name": "icontext", + "area": "error", + "path": "error/$sce/icontext" + }, + "error/$sce/iequirks": { + "name": "iequirks", + "area": "error", + "path": "error/$sce/iequirks" + }, + "error/$sce/imatcher": { + "name": "imatcher", + "area": "error", + "path": "error/$sce/imatcher" + }, + "error/$sce/insecurl": { + "name": "insecurl", + "area": "error", + "path": "error/$sce/insecurl" + }, + "error/$sce/itype": { + "name": "itype", + "area": "error", + "path": "error/$sce/itype" + }, + "error/$sce/iwcard": { + "name": "iwcard", + "area": "error", + "path": "error/$sce/iwcard" + }, + "error/$sce/unsafe": { + "name": "unsafe", + "area": "error", + "path": "error/$sce/unsafe" + }, + "error": { + "name": "Error Reference", + "area": "error", + "path": "error" + }, + "error/jqLite/nosel": { + "name": "nosel", + "area": "error", + "path": "error/jqLite/nosel" + }, + "error/jqLite/offargs": { + "name": "offargs", + "area": "error", + "path": "error/jqLite/offargs" + }, + "error/jqLite/onargs": { + "name": "onargs", + "area": "error", + "path": "error/jqLite/onargs" + }, + "error/ng/areq": { + "name": "areq", + "area": "error", + "path": "error/ng/areq" + }, + "error/ng/badname": { + "name": "badname", + "area": "error", + "path": "error/ng/badname" + }, + "error/ng/btstrpd": { + "name": "btstrpd", + "area": "error", + "path": "error/ng/btstrpd" + }, + "error/ng/cpi": { + "name": "cpi", + "area": "error", + "path": "error/ng/cpi" + }, + "error/ng/cpws": { + "name": "cpws", + "area": "error", + "path": "error/ng/cpws" + }, + "error/ngModel/nonassign": { + "name": "nonassign", + "area": "error", + "path": "error/ngModel/nonassign" + }, + "error/ngOptions/iexp": { + "name": "iexp", + "area": "error", + "path": "error/ngOptions/iexp" + }, + "error/ngPattern/noregexp": { + "name": "noregexp", + "area": "error", + "path": "error/ngPattern/noregexp" + }, + "error/ngRepeat/dupes": { + "name": "dupes", + "area": "error", + "path": "error/ngRepeat/dupes" + }, + "error/ngRepeat/iexp": { + "name": "iexp", + "area": "error", + "path": "error/ngRepeat/iexp" + }, + "error/ngRepeat/iidexp": { + "name": "iidexp", + "area": "error", + "path": "error/ngRepeat/iidexp" + }, + "error/ngTransclude/orphan": { + "name": "orphan", + "area": "error", + "path": "error/ngTransclude/orphan" + }, + "guide/$location": { + "name": "Using $location", + "area": "guide", + "path": "guide/$location" + }, + "guide/animations": { + "name": "Animations", + "area": "guide", + "path": "guide/animations" + }, + "guide/bootstrap": { + "name": "Bootstrap", + "area": "guide", + "path": "guide/bootstrap" + }, + "guide/compiler": { + "name": "HTML Compiler", + "area": "guide", + "path": "guide/compiler" + }, + "guide/concepts": { + "name": "Conceptual Overview", + "area": "guide", + "path": "guide/concepts" + }, + "guide/controller": { + "name": "Controllers", + "area": "guide", + "path": "guide/controller" + }, + "guide/css-styling": { + "name": "Working With CSS", + "area": "guide", + "path": "guide/css-styling" + }, + "guide/databinding": { + "name": "Data Binding", + "area": "guide", + "path": "guide/databinding" + }, + "guide/di": { + "name": "Dependency Injection", + "area": "guide", + "path": "guide/di" + }, + "guide/directive": { + "name": "Directives", + "area": "guide", + "path": "guide/directive" + }, + "guide/e2e-testing": { + "name": "E2E Testing", + "area": "guide", + "path": "guide/e2e-testing" + }, + "guide/expression": { + "name": "Expressions", + "area": "guide", + "path": "guide/expression" + }, + "guide/filter": { + "name": "Filters", + "area": "guide", + "path": "guide/filter" + }, + "guide/forms": { + "name": "Forms", + "area": "guide", + "path": "guide/forms" + }, + "guide/i18n": { + "name": "i18n and l10n", + "area": "guide", + "path": "guide/i18n" + }, + "guide/ie": { + "name": "Internet Explorer Compatibility", + "area": "guide", + "path": "guide/ie" + }, + "guide": { + "name": "Developer Guide", + "area": "guide", + "path": "guide" + }, + "guide/introduction": { + "name": "Introduction", + "area": "guide", + "path": "guide/introduction" + }, + "guide/migration": { + "name": "Migrating from 1.0 to 1.2", + "area": "guide", + "path": "guide/migration" + }, + "guide/module": { + "name": "Modules", + "area": "guide", + "path": "guide/module" + }, + "guide/providers": { + "name": "Providers", + "area": "guide", + "path": "guide/providers" + }, + "guide/scope": { + "name": "Scopes", + "area": "guide", + "path": "guide/scope" + }, + "guide/security": { + "name": "Security", + "area": "guide", + "path": "guide/security" + }, + "guide/services": { + "name": "Services", + "area": "guide", + "path": "guide/services" + }, + "guide/templates": { + "name": "Templates", + "area": "guide", + "path": "guide/templates" + }, + "guide/unit-testing": { + "name": "Unit Testing", + "area": "guide", + "path": "guide/unit-testing" + }, + "misc/contribute": { + "name": "Develop", + "area": "misc", + "path": "misc/contribute" + }, + "misc/downloading": { + "name": "Downloading", + "area": "misc", + "path": "misc/downloading" + }, + "misc/faq": { + "name": "FAQ", + "area": "misc", + "path": "misc/faq" + }, + "misc": { + "name": "Miscellaneous", + "area": "misc", + "path": "misc" + }, + "misc/started": { + "name": "Getting Started", + "area": "misc", + "path": "misc/started" + }, + "tutorial": { + "name": "Tutorial", + "area": "tutorial", + "path": "tutorial" + }, + "tutorial/step_00": { + "name": "0 - Bootstrapping", + "area": "tutorial", + "path": "tutorial/step_00" + }, + "tutorial/step_01": { + "name": "1 - Static Template", + "area": "tutorial", + "path": "tutorial/step_01" + }, + "tutorial/step_02": { + "name": "2 - Angular Templates", + "area": "tutorial", + "path": "tutorial/step_02" + }, + "tutorial/step_03": { + "name": "3 - Filtering Repeaters", + "area": "tutorial", + "path": "tutorial/step_03" + }, + "tutorial/step_04": { + "name": "4 - Two-way Data Binding", + "area": "tutorial", + "path": "tutorial/step_04" + }, + "tutorial/step_05": { + "name": "5 - XHRs & Dependency Injection", + "area": "tutorial", + "path": "tutorial/step_05" + }, + "tutorial/step_06": { + "name": "6 - Templating Links & Images", + "area": "tutorial", + "path": "tutorial/step_06" + }, + "tutorial/step_07": { + "name": "7 - Routing & Multiple Views", + "area": "tutorial", + "path": "tutorial/step_07" + }, + "tutorial/step_08": { + "name": "8 - More Templating", + "area": "tutorial", + "path": "tutorial/step_08" + }, + "tutorial/step_09": { + "name": "9 - Filters", + "area": "tutorial", + "path": "tutorial/step_09" + }, + "tutorial/step_10": { + "name": "10 - Event Handlers", + "area": "tutorial", + "path": "tutorial/step_10" + }, + "tutorial/step_11": { + "name": "11 - REST and Custom Services", + "area": "tutorial", + "path": "tutorial/step_11" + }, + "tutorial/step_12": { + "name": "12 - Applying Animations", + "area": "tutorial", + "path": "tutorial/step_12" + }, + "tutorial/the_end": { + "name": "The End", + "area": "tutorial", + "path": "tutorial/the_end" + }, + "api/ng": { + "name": "ng", + "area": "api", + "path": "api/ng" + }, + "api/ng/function/angular.lowercase": { + "name": "angular.lowercase", + "area": "api", + "path": "api/ng/function/angular.lowercase" + }, + "api/ng/function/angular.uppercase": { + "name": "angular.uppercase", + "area": "api", + "path": "api/ng/function/angular.uppercase" + }, + "api/ng/function/angular.forEach": { + "name": "angular.forEach", + "area": "api", + "path": "api/ng/function/angular.forEach" + }, + "api/ng/function/angular.extend": { + "name": "angular.extend", + "area": "api", + "path": "api/ng/function/angular.extend" + }, + "api/ng/function/angular.noop": { + "name": "angular.noop", + "area": "api", + "path": "api/ng/function/angular.noop" + }, + "api/ng/function/angular.identity": { + "name": "angular.identity", + "area": "api", + "path": "api/ng/function/angular.identity" + }, + "api/ng/function/angular.isUndefined": { + "name": "angular.isUndefined", + "area": "api", + "path": "api/ng/function/angular.isUndefined" + }, + "api/ng/function/angular.isDefined": { + "name": "angular.isDefined", + "area": "api", + "path": "api/ng/function/angular.isDefined" + }, + "api/ng/function/angular.isObject": { + "name": "angular.isObject", + "area": "api", + "path": "api/ng/function/angular.isObject" + }, + "api/ng/function/angular.isString": { + "name": "angular.isString", + "area": "api", + "path": "api/ng/function/angular.isString" + }, + "api/ng/function/angular.isNumber": { + "name": "angular.isNumber", + "area": "api", + "path": "api/ng/function/angular.isNumber" + }, + "api/ng/function/angular.isDate": { + "name": "angular.isDate", + "area": "api", + "path": "api/ng/function/angular.isDate" + }, + "api/ng/function/angular.isArray": { + "name": "angular.isArray", + "area": "api", + "path": "api/ng/function/angular.isArray" + }, + "api/ng/function/angular.isFunction": { + "name": "angular.isFunction", + "area": "api", + "path": "api/ng/function/angular.isFunction" + }, + "api/ng/function/angular.isElement": { + "name": "angular.isElement", + "area": "api", + "path": "api/ng/function/angular.isElement" + }, + "api/ng/function/angular.copy": { + "name": "angular.copy", + "area": "api", + "path": "api/ng/function/angular.copy" + }, + "api/ng/function/angular.equals": { + "name": "angular.equals", + "area": "api", + "path": "api/ng/function/angular.equals" + }, + "api/ng/function/angular.bind": { + "name": "angular.bind", + "area": "api", + "path": "api/ng/function/angular.bind" + }, + "api/ng/function/angular.toJson": { + "name": "angular.toJson", + "area": "api", + "path": "api/ng/function/angular.toJson" + }, + "api/ng/function/angular.fromJson": { + "name": "angular.fromJson", + "area": "api", + "path": "api/ng/function/angular.fromJson" + }, + "api/ng/directive/ngApp": { + "name": "ngApp", + "area": "api", + "path": "api/ng/directive/ngApp" + }, + "api/ng/function/angular.bootstrap": { + "name": "angular.bootstrap", + "area": "api", + "path": "api/ng/function/angular.bootstrap" + }, + "api/ng/object/angular.version": { + "name": "angular.version", + "area": "api", + "path": "api/ng/object/angular.version" + }, + "api/ng/function/angular.injector": { + "name": "angular.injector", + "area": "api", + "path": "api/ng/function/angular.injector" + }, + "api/auto": { + "name": "auto", + "area": "api", + "path": "api/auto" + }, + "api/auto/service/$injector": { + "name": "$injector", + "area": "api", + "path": "api/auto/service/$injector" + }, + "api/auto/service/$provide": { + "name": "$provide", + "area": "api", + "path": "api/auto/service/$provide" + }, + "api/ng/function/angular.element": { + "name": "angular.element", + "area": "api", + "path": "api/ng/function/angular.element" + }, + "api/ng/type/angular.Module": { + "name": "angular.Module", + "area": "api", + "path": "api/ng/type/angular.Module" + }, + "api/ng/function/angular.module": { + "name": "angular.module", + "area": "api", + "path": "api/ng/function/angular.module" + }, + "api/ng/service/$anchorScroll": { + "name": "$anchorScroll", + "area": "api", + "path": "api/ng/service/$anchorScroll" + }, + "api/ng/provider/$animateProvider": { + "name": "$animateProvider", + "area": "api", + "path": "api/ng/provider/$animateProvider" + }, + "api/ng/service/$animate": { + "name": "$animate", + "area": "api", + "path": "api/ng/service/$animate" + }, + "api/ng/service/$cacheFactory": { + "name": "$cacheFactory", + "area": "api", + "path": "api/ng/service/$cacheFactory" + }, + "api/ng/type/$cacheFactory.Cache": { + "name": "$cacheFactory.Cache", + "area": "api", + "path": "api/ng/type/$cacheFactory.Cache" + }, + "api/ng/service/$templateCache": { + "name": "$templateCache", + "area": "api", + "path": "api/ng/service/$templateCache" + }, + "api/ng/service/$compile": { + "name": "$compile", + "area": "api", + "path": "api/ng/service/$compile" + }, + "api/ng/provider/$compileProvider": { + "name": "$compileProvider", + "area": "api", + "path": "api/ng/provider/$compileProvider" + }, + "api/ng/type/$compile.directive.Attributes": { + "name": "$compile.directive.Attributes", + "area": "api", + "path": "api/ng/type/$compile.directive.Attributes" + }, + "api/ng/provider/$controllerProvider": { + "name": "$controllerProvider", + "area": "api", + "path": "api/ng/provider/$controllerProvider" + }, + "api/ng/service/$controller": { + "name": "$controller", + "area": "api", + "path": "api/ng/service/$controller" + }, + "api/ng/directive/a": { + "name": "a", + "area": "api", + "path": "api/ng/directive/a" + }, + "api/ng/directive/ngHref": { + "name": "ngHref", + "area": "api", + "path": "api/ng/directive/ngHref" + }, + "api/ng/directive/ngSrc": { + "name": "ngSrc", + "area": "api", + "path": "api/ng/directive/ngSrc" + }, + "api/ng/directive/ngSrcset": { + "name": "ngSrcset", + "area": "api", + "path": "api/ng/directive/ngSrcset" + }, + "api/ng/directive/ngDisabled": { + "name": "ngDisabled", + "area": "api", + "path": "api/ng/directive/ngDisabled" + }, + "api/ng/directive/ngChecked": { + "name": "ngChecked", + "area": "api", + "path": "api/ng/directive/ngChecked" + }, + "api/ng/directive/ngReadonly": { + "name": "ngReadonly", + "area": "api", + "path": "api/ng/directive/ngReadonly" + }, + "api/ng/directive/ngSelected": { + "name": "ngSelected", + "area": "api", + "path": "api/ng/directive/ngSelected" + }, + "api/ng/directive/ngOpen": { + "name": "ngOpen", + "area": "api", + "path": "api/ng/directive/ngOpen" + }, + "api/ng/type/form.FormController": { + "name": "form.FormController", + "area": "api", + "path": "api/ng/type/form.FormController" + }, + "api/ng/directive/ngForm": { + "name": "ngForm", + "area": "api", + "path": "api/ng/directive/ngForm" + }, + "api/ng/directive/form": { + "name": "form", + "area": "api", + "path": "api/ng/directive/form" + }, + "api/ng/input/input[text]": { + "name": "input[text]", + "area": "api", + "path": "api/ng/input/input[text]" + }, + "api/ng/input/input[number]": { + "name": "input[number]", + "area": "api", + "path": "api/ng/input/input[number]" + }, + "api/ng/input/input[url]": { + "name": "input[url]", + "area": "api", + "path": "api/ng/input/input[url]" + }, + "api/ng/input/input[email]": { + "name": "input[email]", + "area": "api", + "path": "api/ng/input/input[email]" + }, + "api/ng/input/input[radio]": { + "name": "input[radio]", + "area": "api", + "path": "api/ng/input/input[radio]" + }, + "api/ng/input/input[checkbox]": { + "name": "input[checkbox]", + "area": "api", + "path": "api/ng/input/input[checkbox]" + }, + "api/ng/directive/textarea": { + "name": "textarea", + "area": "api", + "path": "api/ng/directive/textarea" + }, + "api/ng/directive/input": { + "name": "input", + "area": "api", + "path": "api/ng/directive/input" + }, + "api/ng/type/ngModel.NgModelController": { + "name": "ngModel.NgModelController", + "area": "api", + "path": "api/ng/type/ngModel.NgModelController" + }, + "api/ng/directive/ngModel": { + "name": "ngModel", + "area": "api", + "path": "api/ng/directive/ngModel" + }, + "api/ng/directive/ngChange": { + "name": "ngChange", + "area": "api", + "path": "api/ng/directive/ngChange" + }, + "api/ng/directive/ngList": { + "name": "ngList", + "area": "api", + "path": "api/ng/directive/ngList" + }, + "api/ng/directive/ngValue": { + "name": "ngValue", + "area": "api", + "path": "api/ng/directive/ngValue" + }, + "api/ng/directive/ngBind": { + "name": "ngBind", + "area": "api", + "path": "api/ng/directive/ngBind" + }, + "api/ng/directive/ngBindTemplate": { + "name": "ngBindTemplate", + "area": "api", + "path": "api/ng/directive/ngBindTemplate" + }, + "api/ng/directive/ngBindHtml": { + "name": "ngBindHtml", + "area": "api", + "path": "api/ng/directive/ngBindHtml" + }, + "api/ng/directive/ngClass": { + "name": "ngClass", + "area": "api", + "path": "api/ng/directive/ngClass" + }, + "api/ng/directive/ngClassOdd": { + "name": "ngClassOdd", + "area": "api", + "path": "api/ng/directive/ngClassOdd" + }, + "api/ng/directive/ngClassEven": { + "name": "ngClassEven", + "area": "api", + "path": "api/ng/directive/ngClassEven" + }, + "api/ng/directive/ngCloak": { + "name": "ngCloak", + "area": "api", + "path": "api/ng/directive/ngCloak" + }, + "api/ng/directive/ngController": { + "name": "ngController", + "area": "api", + "path": "api/ng/directive/ngController" + }, + "api/ng/directive/ngCsp": { + "name": "ngCsp", + "area": "api", + "path": "api/ng/directive/ngCsp" + }, + "api/ng/directive/ngClick": { + "name": "ngClick", + "area": "api", + "path": "api/ng/directive/ngClick" + }, + "api/ng/directive/ngDblclick": { + "name": "ngDblclick", + "area": "api", + "path": "api/ng/directive/ngDblclick" + }, + "api/ng/directive/ngMousedown": { + "name": "ngMousedown", + "area": "api", + "path": "api/ng/directive/ngMousedown" + }, + "api/ng/directive/ngMouseup": { + "name": "ngMouseup", + "area": "api", + "path": "api/ng/directive/ngMouseup" + }, + "api/ng/directive/ngMouseover": { + "name": "ngMouseover", + "area": "api", + "path": "api/ng/directive/ngMouseover" + }, + "api/ng/directive/ngMouseenter": { + "name": "ngMouseenter", + "area": "api", + "path": "api/ng/directive/ngMouseenter" + }, + "api/ng/directive/ngMouseleave": { + "name": "ngMouseleave", + "area": "api", + "path": "api/ng/directive/ngMouseleave" + }, + "api/ng/directive/ngMousemove": { + "name": "ngMousemove", + "area": "api", + "path": "api/ng/directive/ngMousemove" + }, + "api/ng/directive/ngKeydown": { + "name": "ngKeydown", + "area": "api", + "path": "api/ng/directive/ngKeydown" + }, + "api/ng/directive/ngKeyup": { + "name": "ngKeyup", + "area": "api", + "path": "api/ng/directive/ngKeyup" + }, + "api/ng/directive/ngKeypress": { + "name": "ngKeypress", + "area": "api", + "path": "api/ng/directive/ngKeypress" + }, + "api/ng/directive/ngSubmit": { + "name": "ngSubmit", + "area": "api", + "path": "api/ng/directive/ngSubmit" + }, + "api/ng/directive/ngFocus": { + "name": "ngFocus", + "area": "api", + "path": "api/ng/directive/ngFocus" + }, + "api/ng/directive/ngBlur": { + "name": "ngBlur", + "area": "api", + "path": "api/ng/directive/ngBlur" + }, + "api/ng/directive/ngCopy": { + "name": "ngCopy", + "area": "api", + "path": "api/ng/directive/ngCopy" + }, + "api/ng/directive/ngCut": { + "name": "ngCut", + "area": "api", + "path": "api/ng/directive/ngCut" + }, + "api/ng/directive/ngPaste": { + "name": "ngPaste", + "area": "api", + "path": "api/ng/directive/ngPaste" + }, + "api/ng/directive/ngIf": { + "name": "ngIf", + "area": "api", + "path": "api/ng/directive/ngIf" + }, + "api/ng/directive/ngInclude": { + "name": "ngInclude", + "area": "api", + "path": "api/ng/directive/ngInclude" + }, + "api/ng/directive/ngInit": { + "name": "ngInit", + "area": "api", + "path": "api/ng/directive/ngInit" + }, + "api/ng/directive/ngNonBindable": { + "name": "ngNonBindable", + "area": "api", + "path": "api/ng/directive/ngNonBindable" + }, + "api/ng/directive/ngPluralize": { + "name": "ngPluralize", + "area": "api", + "path": "api/ng/directive/ngPluralize" + }, + "api/ng/directive/ngRepeat": { + "name": "ngRepeat", + "area": "api", + "path": "api/ng/directive/ngRepeat" + }, + "api/ng/directive/ngShow": { + "name": "ngShow", + "area": "api", + "path": "api/ng/directive/ngShow" + }, + "api/ng/directive/ngHide": { + "name": "ngHide", + "area": "api", + "path": "api/ng/directive/ngHide" + }, + "api/ng/directive/ngStyle": { + "name": "ngStyle", + "area": "api", + "path": "api/ng/directive/ngStyle" + }, + "api/ng/directive/ngSwitch": { + "name": "ngSwitch", + "area": "api", + "path": "api/ng/directive/ngSwitch" + }, + "api/ng/directive/ngTransclude": { + "name": "ngTransclude", + "area": "api", + "path": "api/ng/directive/ngTransclude" + }, + "api/ng/directive/script": { + "name": "script", + "area": "api", + "path": "api/ng/directive/script" + }, + "api/ng/directive/select": { + "name": "select", + "area": "api", + "path": "api/ng/directive/select" + }, + "api/ng/service/$document": { + "name": "$document", + "area": "api", + "path": "api/ng/service/$document" + }, + "api/ng/service/$exceptionHandler": { + "name": "$exceptionHandler", + "area": "api", + "path": "api/ng/service/$exceptionHandler" + }, + "api/ng/provider/$filterProvider": { + "name": "$filterProvider", + "area": "api", + "path": "api/ng/provider/$filterProvider" + }, + "api/ng/service/$filter": { + "name": "$filter", + "area": "api", + "path": "api/ng/service/$filter" + }, + "api/ng/filter/filter": { + "name": "filter", + "area": "api", + "path": "api/ng/filter/filter" + }, + "api/ng/filter/currency": { + "name": "currency", + "area": "api", + "path": "api/ng/filter/currency" + }, + "api/ng/filter/number": { + "name": "number", + "area": "api", + "path": "api/ng/filter/number" + }, + "api/ng/filter/date": { + "name": "date", + "area": "api", + "path": "api/ng/filter/date" + }, + "api/ng/filter/json": { + "name": "json", + "area": "api", + "path": "api/ng/filter/json" + }, + "api/ng/filter/lowercase": { + "name": "lowercase", + "area": "api", + "path": "api/ng/filter/lowercase" + }, + "api/ng/filter/uppercase": { + "name": "uppercase", + "area": "api", + "path": "api/ng/filter/uppercase" + }, + "api/ng/filter/limitTo": { + "name": "limitTo", + "area": "api", + "path": "api/ng/filter/limitTo" + }, + "api/ng/filter/orderBy": { + "name": "orderBy", + "area": "api", + "path": "api/ng/filter/orderBy" + }, + "api/ng/provider/$httpProvider": { + "name": "$httpProvider", + "area": "api", + "path": "api/ng/provider/$httpProvider" + }, + "api/ng/service/$http": { + "name": "$http", + "area": "api", + "path": "api/ng/service/$http" + }, + "api/ng/service/$httpBackend": { + "name": "$httpBackend", + "area": "api", + "path": "api/ng/service/$httpBackend" + }, + "api/ng/provider/$interpolateProvider": { + "name": "$interpolateProvider", + "area": "api", + "path": "api/ng/provider/$interpolateProvider" + }, + "api/ng/service/$interpolate": { + "name": "$interpolate", + "area": "api", + "path": "api/ng/service/$interpolate" + }, + "api/ng/service/$interval": { + "name": "$interval", + "area": "api", + "path": "api/ng/service/$interval" + }, + "api/ng/service/$locale": { + "name": "$locale", + "area": "api", + "path": "api/ng/service/$locale" + }, + "api/ng/service/$location": { + "name": "$location", + "area": "api", + "path": "api/ng/service/$location" + }, + "api/ng/provider/$locationProvider": { + "name": "$locationProvider", + "area": "api", + "path": "api/ng/provider/$locationProvider" + }, + "api/ng/service/$log": { + "name": "$log", + "area": "api", + "path": "api/ng/service/$log" + }, + "api/ng/provider/$logProvider": { + "name": "$logProvider", + "area": "api", + "path": "api/ng/provider/$logProvider" + }, + "api/ng/service/$parse": { + "name": "$parse", + "area": "api", + "path": "api/ng/service/$parse" + }, + "api/ng/provider/$parseProvider": { + "name": "$parseProvider", + "area": "api", + "path": "api/ng/provider/$parseProvider" + }, + "api/ng/service/$q": { + "name": "$q", + "area": "api", + "path": "api/ng/service/$q" + }, + "api/ng/service/$rootElement": { + "name": "$rootElement", + "area": "api", + "path": "api/ng/service/$rootElement" + }, + "api/ng/provider/$rootScopeProvider": { + "name": "$rootScopeProvider", + "area": "api", + "path": "api/ng/provider/$rootScopeProvider" + }, + "api/ng/service/$rootScope": { + "name": "$rootScope", + "area": "api", + "path": "api/ng/service/$rootScope" + }, + "api/ng/type/$rootScope.Scope": { + "name": "$rootScope.Scope", + "area": "api", + "path": "api/ng/type/$rootScope.Scope" + }, + "api/ng/service/$sceDelegate": { + "name": "$sceDelegate", + "area": "api", + "path": "api/ng/service/$sceDelegate" + }, + "api/ng/provider/$sceDelegateProvider": { + "name": "$sceDelegateProvider", + "area": "api", + "path": "api/ng/provider/$sceDelegateProvider" + }, + "api/ng/provider/$sceProvider": { + "name": "$sceProvider", + "area": "api", + "path": "api/ng/provider/$sceProvider" + }, + "api/ng/service/$sce": { + "name": "$sce", + "area": "api", + "path": "api/ng/service/$sce" + }, + "api/ng/service/$timeout": { + "name": "$timeout", + "area": "api", + "path": "api/ng/service/$timeout" + }, + "api/ng/service/$window": { + "name": "$window", + "area": "api", + "path": "api/ng/service/$window" + }, + "api/ngAnimate": { + "name": "ngAnimate", + "area": "api", + "path": "api/ngAnimate" + }, + "api/ngAnimate/provider/$animateProvider": { + "name": "$animateProvider", + "area": "api", + "path": "api/ngAnimate/provider/$animateProvider" + }, + "api/ngAnimate/service/$animate": { + "name": "$animate", + "area": "api", + "path": "api/ngAnimate/service/$animate" + }, + "api/ngCookies": { + "name": "ngCookies", + "area": "api", + "path": "api/ngCookies" + }, + "api/ngCookies/service/$cookies": { + "name": "$cookies", + "area": "api", + "path": "api/ngCookies/service/$cookies" + }, + "api/ngCookies/service/$cookieStore": { + "name": "$cookieStore", + "area": "api", + "path": "api/ngCookies/service/$cookieStore" + }, + "api/ngMock/object/angular.mock": { + "name": "angular.mock", + "area": "api", + "path": "api/ngMock/object/angular.mock" + }, + "api/ngMock/provider/$exceptionHandlerProvider": { + "name": "$exceptionHandlerProvider", + "area": "api", + "path": "api/ngMock/provider/$exceptionHandlerProvider" + }, + "api/ngMock/service/$exceptionHandler": { + "name": "$exceptionHandler", + "area": "api", + "path": "api/ngMock/service/$exceptionHandler" + }, + "api/ngMock/service/$log": { + "name": "$log", + "area": "api", + "path": "api/ngMock/service/$log" + }, + "api/ngMock/service/$interval": { + "name": "$interval", + "area": "api", + "path": "api/ngMock/service/$interval" + }, + "api/ngMock/type/angular.mock.TzDate": { + "name": "angular.mock.TzDate", + "area": "api", + "path": "api/ngMock/type/angular.mock.TzDate" + }, + "api/ngMock/function/angular.mock.dump": { + "name": "angular.mock.dump", + "area": "api", + "path": "api/ngMock/function/angular.mock.dump" + }, + "api/ngMock/service/$httpBackend": { + "name": "$httpBackend", + "area": "api", + "path": "api/ngMock/service/$httpBackend" + }, + "api/ngMock/service/$timeout": { + "name": "$timeout", + "area": "api", + "path": "api/ngMock/service/$timeout" + }, + "api/ngMock": { + "name": "ngMock", + "area": "api", + "path": "api/ngMock" + }, + "api/ngMockE2E": { + "name": "ngMockE2E", + "area": "api", + "path": "api/ngMockE2E" + }, + "api/ngMockE2E/service/$httpBackend": { + "name": "$httpBackend", + "area": "api", + "path": "api/ngMockE2E/service/$httpBackend" + }, + "api/ngMock/function/angular.mock.module": { + "name": "angular.mock.module", + "area": "api", + "path": "api/ngMock/function/angular.mock.module" + }, + "api/ngMock/function/angular.mock.inject": { + "name": "angular.mock.inject", + "area": "api", + "path": "api/ngMock/function/angular.mock.inject" + }, + "api/ngResource": { + "name": "ngResource", + "area": "api", + "path": "api/ngResource" + }, + "api/ngResource/service/$resource": { + "name": "$resource", + "area": "api", + "path": "api/ngResource/service/$resource" + }, + "api/ngRoute/directive/ngView": { + "name": "ngView", + "area": "api", + "path": "api/ngRoute/directive/ngView" + }, + "api/ngRoute": { + "name": "ngRoute", + "area": "api", + "path": "api/ngRoute" + }, + "api/ngRoute/provider/$routeProvider": { + "name": "$routeProvider", + "area": "api", + "path": "api/ngRoute/provider/$routeProvider" + }, + "api/ngRoute/service/$route": { + "name": "$route", + "area": "api", + "path": "api/ngRoute/service/$route" + }, + "api/ngRoute/service/$routeParams": { + "name": "$routeParams", + "area": "api", + "path": "api/ngRoute/service/$routeParams" + }, + "api/ngSanitize/filter/linky": { + "name": "linky", + "area": "api", + "path": "api/ngSanitize/filter/linky" + }, + "api/ngSanitize": { + "name": "ngSanitize", + "area": "api", + "path": "api/ngSanitize" + }, + "api/ngSanitize/service/$sanitize": { + "name": "$sanitize", + "area": "api", + "path": "api/ngSanitize/service/$sanitize" + }, + "api/ngTouch/directive/ngClick": { + "name": "ngClick", + "area": "api", + "path": "api/ngTouch/directive/ngClick" + }, + "api/ngTouch/directive/ngSwipeLeft": { + "name": "ngSwipeLeft", + "area": "api", + "path": "api/ngTouch/directive/ngSwipeLeft" + }, + "api/ngTouch/directive/ngSwipeRight": { + "name": "ngSwipeRight", + "area": "api", + "path": "api/ngTouch/directive/ngSwipeRight" + }, + "api/ngTouch/service/$swipe": { + "name": "$swipe", + "area": "api", + "path": "api/ngTouch/service/$swipe" + }, + "api/ngTouch": { + "name": "ngTouch", + "area": "api", + "path": "api/ngTouch" + }, + "app.js": { + "path": "app.js" + }, + "examples/example-error-$rootScope-inprog": { + "path": "examples/example-error-$rootScope-inprog" + }, + "undefined": {}, + "fakeBrowser.js": { + "path": "fakeBrowser.js" + }, + "addressBar.js": { + "path": "addressBar.js" + }, + "protractor.js": { + "path": "protractor.js" + }, + "examples/example-location-html5-mode": { + "path": "examples/example-location-html5-mode" + }, + "examples/example-location-hashbang-mode": { + "path": "examples/example-location-hashbang-mode" + }, + "script.js": { + "path": "script.js" + }, + "examples/example-example": { + "path": "examples/example-example" + }, + "animations.css": { + "path": "animations.css" + }, + "examples/example-example1": { + "path": "examples/example-example1" + }, + "style.css": { + "path": "style.css" + }, + "examples/example-example2": { + "path": "examples/example-example2" + }, + "examples/example-example3": { + "path": "examples/example-example3" + }, + "examples/example-guide-concepts-1": { + "path": "examples/example-guide-concepts-1" + }, + "invoice1.js": { + "path": "invoice1.js" + }, + "examples/example-guide-concepts-2": { + "path": "examples/example-guide-concepts-2" + }, + "finance2.js": { + "path": "finance2.js" + }, + "invoice2.js": { + "path": "invoice2.js" + }, + "examples/example-guide-concepts-21": { + "path": "examples/example-guide-concepts-21" + }, + "invoice3.js": { + "path": "invoice3.js" + }, + "finance3.js": { + "path": "finance3.js" + }, + "examples/example-guide-concepts-3": { + "path": "examples/example-guide-concepts-3" + }, + "examples/example-example4": { + "path": "examples/example-example4" + }, + "examples/example-example5": { + "path": "examples/example-example5" + }, + "app.css": { + "path": "app.css" + }, + "examples/example-example6": { + "path": "examples/example-example6" + }, + "protractorTest.js": { + "path": "protractorTest.js" + }, + "examples/example-example7": { + "path": "examples/example-example7" + }, + "examples/example-example8": { + "path": "examples/example-example8" + }, + "my-customer.html": { + "path": "my-customer.html" + }, + "examples/example-example9": { + "path": "examples/example-example9" + }, + "examples/example-example10": { + "path": "examples/example-example10" + }, + "examples/example-example11": { + "path": "examples/example-example11" + }, + "my-customer-iso.html": { + "path": "my-customer-iso.html" + }, + "examples/example-example12": { + "path": "examples/example-example12" + }, + "my-customer-plus-vojta.html": { + "path": "my-customer-plus-vojta.html" + }, + "examples/example-example13": { + "path": "examples/example-example13" + }, + "examples/example-example14": { + "path": "examples/example-example14" + }, + "my-dialog.html": { + "path": "my-dialog.html" + }, + "examples/example-example15": { + "path": "examples/example-example15" + }, + "examples/example-example16": { + "path": "examples/example-example16" + }, + "my-dialog-close.html": { + "path": "my-dialog-close.html" + }, + "examples/example-example17": { + "path": "examples/example-example17" + }, + "examples/example-example18": { + "path": "examples/example-example18" + }, + "my-tabs.html": { + "path": "my-tabs.html" + }, + "my-pane.html": { + "path": "my-pane.html" + }, + "examples/example-example19": { + "path": "examples/example-example19" + }, + "examples/example-example20": { + "path": "examples/example-example20" + }, + "examples/example-example21": { + "path": "examples/example-example21" + }, + "examples/example-example22": { + "path": "examples/example-example22" + }, + "examples/example-example23": { + "path": "examples/example-example23" + }, + "examples/example-example24": { + "path": "examples/example-example24" + }, + "examples/example-example25": { + "path": "examples/example-example25" + }, + "examples/example-example26": { + "path": "examples/example-example26" + }, + "examples/example-example27": { + "path": "examples/example-example27" + }, + "examples/example-example28": { + "path": "examples/example-example28" + }, + "examples/example-example29": { + "path": "examples/example-example29" + }, + "examples/example-example30": { + "path": "examples/example-example30" + }, + "examples/example-example31": { + "path": "examples/example-example31" + }, + "examples/example-example32": { + "path": "examples/example-example32" + }, + "examples/example-example33": { + "path": "examples/example-example33" + }, + "examples/example-example34": { + "path": "examples/example-example34" + }, + "examples/example-example35": { + "path": "examples/example-example35" + }, + "examples/example-example36": { + "path": "examples/example-example36" + }, + "examples/example-example37": { + "path": "examples/example-example37" + }, + "examples/example-example38": { + "path": "examples/example-example38" + }, + "examples/example-example39": { + "path": "examples/example-example39" + }, + "controller.js": { + "path": "controller.js" + }, + "examples/example-multi-bootstrap": { + "path": "examples/example-multi-bootstrap" + }, + "examples/example-example40": { + "path": "examples/example-example40" + }, + "examples/example-example41": { + "path": "examples/example-example41" + }, + "examples/example-example42": { + "path": "examples/example-example42" + }, + "examples/example-example43": { + "path": "examples/example-example43" + }, + "examples/example-example44": { + "path": "examples/example-example44" + }, + "examples/example-example45": { + "path": "examples/example-example45" + }, + "examples/example-example46": { + "path": "examples/example-example46" + }, + "examples/example-example47": { + "path": "examples/example-example47" + }, + "examples/example-example48": { + "path": "examples/example-example48" + }, + "examples/example-example49": { + "path": "examples/example-example49" + }, + "examples/example-text-input-directive": { + "path": "examples/example-text-input-directive" + }, + "examples/example-number-input-directive": { + "path": "examples/example-number-input-directive" + }, + "examples/example-url-input-directive": { + "path": "examples/example-url-input-directive" + }, + "examples/example-email-input-directive": { + "path": "examples/example-email-input-directive" + }, + "examples/example-radio-input-directive": { + "path": "examples/example-radio-input-directive" + }, + "examples/example-checkbox-input-directive": { + "path": "examples/example-checkbox-input-directive" + }, + "examples/example-input-directive": { + "path": "examples/example-input-directive" + }, + "examples/example-NgModelController": { + "path": "examples/example-NgModelController" + }, + "examples/example-example50": { + "path": "examples/example-example50" + }, + "examples/example-ngChange-directive": { + "path": "examples/example-ngChange-directive" + }, + "examples/example-ngList-directive": { + "path": "examples/example-ngList-directive" + }, + "examples/example-ngValue-directive": { + "path": "examples/example-ngValue-directive" + }, + "examples/example-example51": { + "path": "examples/example-example51" + }, + "examples/example-example52": { + "path": "examples/example-example52" + }, + "examples/example-example53": { + "path": "examples/example-example53" + }, + "examples/example-example54": { + "path": "examples/example-example54" + }, + "examples/example-example55": { + "path": "examples/example-example55" + }, + "examples/example-example56": { + "path": "examples/example-example56" + }, + "examples/example-example57": { + "path": "examples/example-example57" + }, + "examples/example-example58": { + "path": "examples/example-example58" + }, + "examples/example-ngControllerAs": { + "path": "examples/example-ngControllerAs" + }, + "examples/example-ngController": { + "path": "examples/example-ngController" + }, + "examples/example-example59": { + "path": "examples/example-example59" + }, + "examples/example-example60": { + "path": "examples/example-example60" + }, + "examples/example-example61": { + "path": "examples/example-example61" + }, + "examples/example-example62": { + "path": "examples/example-example62" + }, + "examples/example-example63": { + "path": "examples/example-example63" + }, + "examples/example-example64": { + "path": "examples/example-example64" + }, + "examples/example-example65": { + "path": "examples/example-example65" + }, + "examples/example-example66": { + "path": "examples/example-example66" + }, + "examples/example-example67": { + "path": "examples/example-example67" + }, + "examples/example-example68": { + "path": "examples/example-example68" + }, + "examples/example-example69": { + "path": "examples/example-example69" + }, + "examples/example-example70": { + "path": "examples/example-example70" + }, + "examples/example-example71": { + "path": "examples/example-example71" + }, + "examples/example-example72": { + "path": "examples/example-example72" + }, + "examples/example-example73": { + "path": "examples/example-example73" + }, + "examples/example-example74": { + "path": "examples/example-example74" + }, + "template1.html": { + "path": "template1.html" + }, + "template2.html": { + "path": "template2.html" + }, + "examples/example-example75": { + "path": "examples/example-example75" + }, + "examples/example-example76": { + "path": "examples/example-example76" + }, + "examples/example-example77": { + "path": "examples/example-example77" + }, + "examples/example-example78": { + "path": "examples/example-example78" + }, + "examples/example-example79": { + "path": "examples/example-example79" + }, + "glyphicons.css": { + "path": "glyphicons.css" + }, + "examples/example-example80": { + "path": "examples/example-example80" + }, + "examples/example-example81": { + "path": "examples/example-example81" + }, + "examples/example-example82": { + "path": "examples/example-example82" + }, + "examples/example-example83": { + "path": "examples/example-example83" + }, + "examples/example-example84": { + "path": "examples/example-example84" + }, + "examples/example-example85": { + "path": "examples/example-example85" + }, + "examples/example-example86": { + "path": "examples/example-example86" + }, + "examples/example-example87": { + "path": "examples/example-example87" + }, + "examples/example-$filter": { + "path": "examples/example-$filter" + }, + "examples/example-example88": { + "path": "examples/example-example88" + }, + "examples/example-example89": { + "path": "examples/example-example89" + }, + "examples/example-example90": { + "path": "examples/example-example90" + }, + "examples/example-example91": { + "path": "examples/example-example91" + }, + "examples/example-example92": { + "path": "examples/example-example92" + }, + "examples/example-example93": { + "path": "examples/example-example93" + }, + "examples/example-example94": { + "path": "examples/example-example94" + }, + "examples/example-example95": { + "path": "examples/example-example95" + }, + "http-hello.html": { + "path": "http-hello.html" + }, + "examples/example-example96": { + "path": "examples/example-example96" + }, + "examples/example-example97": { + "path": "examples/example-example97" + }, + "examples/example-example98": { + "path": "examples/example-example98" + }, + "examples/example-example99": { + "path": "examples/example-example99" + }, + "test_data.json": { + "path": "test_data.json" + }, + "examples/example-example100": { + "path": "examples/example-example100" + }, + "examples/example-example101": { + "path": "examples/example-example101" + }, + "book.html": { + "path": "book.html" + }, + "chapter.html": { + "path": "chapter.html" + }, + "examples/example-ngView-directive": { + "path": "examples/example-ngView-directive" + }, + "examples/example-$route-service": { + "path": "examples/example-$route-service" + }, + "examples/example-example102": { + "path": "examples/example-example102" + }, + "examples/example-example103": { + "path": "examples/example-example103" + }, + "examples/example-example104": { + "path": "examples/example-example104" + }, + "examples/example-example105": { + "path": "examples/example-example105" + }, + "examples/example-example106": { + "path": "examples/example-example106" + }, + "error/$animate": { + "name": "$animate", + "area": "error", + "path": "error/$animate" + }, + "error/$cacheFactory": { + "name": "$cacheFactory", + "area": "error", + "path": "error/$cacheFactory" + }, + "error/$compile": { + "name": "$compile", + "area": "error", + "path": "error/$compile" + }, + "error/$controller": { + "name": "$controller", + "area": "error", + "path": "error/$controller" + }, + "error/$httpBackend": { + "name": "$httpBackend", + "area": "error", + "path": "error/$httpBackend" + }, + "error/$injector": { + "name": "$injector", + "area": "error", + "path": "error/$injector" + }, + "error/$interpolate": { + "name": "$interpolate", + "area": "error", + "path": "error/$interpolate" + }, + "error/$location": { + "name": "$location", + "area": "error", + "path": "error/$location" + }, + "error/$parse": { + "name": "$parse", + "area": "error", + "path": "error/$parse" + }, + "error/$resource": { + "name": "$resource", + "area": "error", + "path": "error/$resource" + }, + "error/$rootScope": { + "name": "$rootScope", + "area": "error", + "path": "error/$rootScope" + }, + "error/$sanitize": { + "name": "$sanitize", + "area": "error", + "path": "error/$sanitize" + }, + "error/$sce": { + "name": "$sce", + "area": "error", + "path": "error/$sce" + }, + "error/jqLite": { + "name": "jqLite", + "area": "error", + "path": "error/jqLite" + }, + "error/ng": { + "name": "ng", + "area": "error", + "path": "error/ng" + }, + "error/ngModel": { + "name": "ngModel", + "area": "error", + "path": "error/ngModel" + }, + "error/ngOptions": { + "name": "ngOptions", + "area": "error", + "path": "error/ngOptions" + }, + "error/ngPattern": { + "name": "ngPattern", + "area": "error", + "path": "error/ngPattern" + }, + "error/ngRepeat": { + "name": "ngRepeat", + "area": "error", + "path": "error/ngRepeat" + }, + "error/ngTransclude": { + "name": "ngTransclude", + "area": "error", + "path": "error/ngTransclude" + }, + ".": { + "name": "production", + "path": "." + }, + "api/ng/function": { + "name": "function components in ng", + "area": "api", + "path": "api/ng/function" + }, + "api/ng/directive": { + "name": "directive components in ng", + "area": "api", + "path": "api/ng/directive" + }, + "api/ng/object": { + "name": "object components in ng", + "area": "api", + "path": "api/ng/object" + }, + "api/ng/type": { + "name": "type components in ng", + "area": "api", + "path": "api/ng/type" + }, + "api/ng/service": { + "name": "service components in ng", + "area": "api", + "path": "api/ng/service" + }, + "api/ng/provider": { + "name": "provider components in ng", + "area": "api", + "path": "api/ng/provider" + }, + "api/ng/input": { + "name": "input components in ng", + "area": "api", + "path": "api/ng/input" + }, + "api/ng/filter": { + "name": "filter components in ng", + "area": "api", + "path": "api/ng/filter" + }, + "api/auto/service": { + "name": "service components in auto", + "area": "api", + "path": "api/auto/service" + }, + "api/ngAnimate/provider": { + "name": "provider components in ngAnimate", + "area": "api", + "path": "api/ngAnimate/provider" + }, + "api/ngAnimate/service": { + "name": "service components in ngAnimate", + "area": "api", + "path": "api/ngAnimate/service" + }, + "api/ngCookies/service": { + "name": "service components in ngCookies", + "area": "api", + "path": "api/ngCookies/service" + }, + "api/ngMock/object": { + "name": "object components in ngMock", + "area": "api", + "path": "api/ngMock/object" + }, + "api/ngMock/provider": { + "name": "provider components in ngMock", + "area": "api", + "path": "api/ngMock/provider" + }, + "api/ngMock/service": { + "name": "service components in ngMock", + "area": "api", + "path": "api/ngMock/service" + }, + "api/ngMock/type": { + "name": "type components in ngMock", + "area": "api", + "path": "api/ngMock/type" + }, + "api/ngMock/function": { + "name": "function components in ngMock", + "area": "api", + "path": "api/ngMock/function" + }, + "api/ngMockE2E/service": { + "name": "service components in ngMockE2E", + "area": "api", + "path": "api/ngMockE2E/service" + }, + "api/ngResource/service": { + "name": "service components in ngResource", + "area": "api", + "path": "api/ngResource/service" + }, + "api/ngRoute/directive": { + "name": "directive components in ngRoute", + "area": "api", + "path": "api/ngRoute/directive" + }, + "api/ngRoute/provider": { + "name": "provider components in ngRoute", + "area": "api", + "path": "api/ngRoute/provider" + }, + "api/ngRoute/service": { + "name": "service components in ngRoute", + "area": "api", + "path": "api/ngRoute/service" + }, + "api/ngSanitize/filter": { + "name": "filter components in ngSanitize", + "area": "api", + "path": "api/ngSanitize/filter" + }, + "api/ngSanitize/service": { + "name": "service components in ngSanitize", + "area": "api", + "path": "api/ngSanitize/service" + }, + "api/ngTouch/directive": { + "name": "directive components in ngTouch", + "area": "api", + "path": "api/ngTouch/directive" + }, + "api/ngTouch/service": { + "name": "service components in ngTouch", + "area": "api", + "path": "api/ngTouch/service" + } +}); diff --git a/1.2.30/docs/js/search-data.json b/1.2.30/docs/js/search-data.json new file mode 100644 index 0000000000..8b4943c04c --- /dev/null +++ b/1.2.30/docs/js/search-data.json @@ -0,0 +1,2006 @@ +[ + { + "path": "api", + "titleWords": "API Reference", + "keywords": "$animate $compile $cookie $cookies $cookiestore $http $httpbackend $interval $location $log $resource $route $routeparams $routeprovider $sanitize $swipe $timeout access accessed accidental alert alert-info an and angular angularjs animation animations api apis application are as attached available aware be become before behavior being both browser browsers build by callbacks can class clean code collection collisions communicate complex components contain contains convenient cookie cookies copy core css css-based currency current currently dangerous data date default define defined definition-table dependency details developing di directive directives display do docs documentation dom dump element emulate enable equals etc events examples expressions extend factories features file filter filters follow following for function functions global guide handle hashbang helper hooks html html5 in include included index inject into is it javascript js js-based keyframe level links linky low lowercase manage manageable management manipulate manner materials mobile mock mocks module modules more name names namespace namespaces naming ng ng-bind nganimate ngclick ngcookies nginclude ngmock ngrepeat ngresource ngroute ngsanitize ngtouch ngview not object objects of once operations or organized overview page pages parse partials please posting prefix prefixes present prevent private provide provided providers public pushstate querying querystring quick reference referencing register registered rendered rest restful route routes routing runner securely serialization service services set simple some spaced store string structure supports synchronous template templates test testing tests that the these this to transform transitions trigger triggered turn unit up uppercase url urls use used useful using values various version via way welcome when which will with within work would wrapper you your", + "members": "" + }, + { + "path": "error/$animate/notcsel", + "titleWords": "notcsel", + "keywords": "$animate class css error example expecting for got html must my-class-name not notcsel partials selector selectors start starting with", + "members": "" + }, + { + "path": "error/$cacheFactory/iid", + "titleWords": "iid", + "keywords": "$cachefactory already an another cache cacheid calling create different error html id iid invalid is new ng object occurs partials please resolve taken that the this to trying use used via was when with", + "members": "" + }, + { + "path": "error/$compile/ctreq", + "titleWords": "ctreq", + "keywords": "$compile an ancestor and as be but by can compiler controller ctreq current definition description_comprehensive-directive-api description_comprehensive-directive-api_directive-definition-object directive dom element ensure error example expected form found from function html if in is its make missing my-directive myapp mydirective myform name ng ng-model ngmodel no not occurs of on option optionally or partials path prefix present process requested require required requires resolve return some specified specifies specify sure that the then there this to tries typo use used was when with you", + "members": "" + }, + { + "path": "error/$compile/iscp", + "titleWords": "iscp", + "keywords": "$compile about an api attrname attrname2 attrname3 attrname4 attrname5 be character declaring definition description_comprehensive-directive-api_directive-definition-object directive directivename documentation error extra factory for format function html in invalid iscp isolate learn local missing mode more must mymodule name ng object of ok option optional partials please prefixed refer return scope spaces specific starts the to when which with", + "members": "" + }, + { + "path": "error/$compile/multidir", + "titleWords": "multidir", + "keywords": "$compile an and applied are asking attempting causing collision configuration contention controller declared define directive directives dom element error example for html in include incompatible is isolated issue multidir multiple name occurs of on one option or partials processing publishing remove requesting resolve resource result same scenarios scope template templateurl the them this to transclusion under unsupported when which with would", + "members": "" + }, + { + "path": "error/$compile/nodomevents", + "titleWords": "nodomevents", + "keywords": "$compile allow an and application are as attribute attributes binding by clicked code context could create disallowed div doing dom error etc evaluates evaluating event example exposes for formaction handler html in injection input instead interpolated interpolations is javascript like look me model ng- ng-click ng-model no nodomevents not occurs of on onclick one onload only onsubmit partials please practical pwnd reasons result script security setting since so start supported that the there these this to tries use user username value versions vulnerabilities vulnerability when window with would xss your", + "members": "" + }, + { + "path": "error/$compile/nonassign", + "titleWords": "nonassign", + "keywords": "$compile always an are attribute back be because bind but data-binding data-bound defined defines definition description_comprehensive-directive-api_directive-definition-object directive error example expression expressions factory following for function given html in into invalid is isolate it localvalue mode must mydirective myfn mymodule new ng non-assignable nonassign not-assignable occurs of option order partials path possible properties property provided resolve return scope some statement that the this to two-way use used uses values wasn when with work write", + "members": "" + }, + { + "path": "error/$compile/selmulti", + "titleWords": "selmulti", + "keywords": "$compile and array at attribute based be between binding breaks changes different directive directives element elements error example from html if in instance instances invalid is mode model multiple need ng ng-if ng-model ngif ngmodel ngswitch not object of on one or partials pick please runtime select selmulti semantics since single some supported switching template that the them to type types usage use used uses variable which with you your", + "members": "" + }, + { + "path": "error/$compile/tpload", + "titleWords": "tpload", + "keywords": "$compile $templatecache absolute also and are attempts be cache com correct correctly determining developer ensure error failed fails fetch from google helpful html if in is load loading might network_panel_overview ng occurs of partials populated pre-load request resolve resolves some spelled template templates that the this to tools tpload url using was when why with you", + "members": "" + }, + { + "path": "error/$compile/tplrt", + "titleWords": "tplrt", + "keywords": "$compile an and as at be beginning being blah by can cause causes class comment comments commonly consider contained container content declared defines definition directive div element elements end error exactly example factory following for fragment function has have html in instead interpreted invalid is like mode multiple must mydirective mymodule needed nodes not of on one only operation or otherwise out partials practice property provided referenced replace replaced replacement result return root second simply single someurl template templates templateurl text that the these this to tplrt true unsupported url used watch well when which with within world would wrapper", + "members": "" + }, + { + "path": "error/$compile/uterdir", + "titleWords": "uterdir", + "keywords": "$compile also and another attribute avoid but by can corresponding different directive directive-end directive-start directives dom each error example fails foo-end foo-start for form found get has have html in inside instance is item leaving like list make matching multi-element nesting ng-repeat-end ng-repeat-start no node occur occurs of on one or out pair partials repeated several should sibling so sure the this to unterminated use using uterdir valid versa vice ways when with you", + "members": "" + }, + { + "path": "error/$controller/noscp", + "titleWords": "noscp", + "keywords": "$controller $scope above api as but call called cannot consult controller docs error example export fix html in incorrect instantiate is leads learn locals map missing more new newscope ng no noscp object occurs of order partials please property provide provided scope service that the this to usage via when", + "members": "" + }, + { + "path": "error/$httpBackend/noxhr", + "titleWords": "noxhr", + "keywords": "$httpbackend an and angularjs avoid browser browsers chrome do does error firefox higher html ie8 in ios mobile not noxhr occurs officially opera partials safari support supported supports that this to unsupported use xhr xmlhttprequest", + "members": "" + }, + { + "path": "error/$injector/cdep", + "titleWords": "cdep", + "keywords": "$injector an and angular are be by causes cdep chain circular construct controller created dependencies dependency depends detect directly either error example factory fix for found function get guide html indirectly information injection injector instance is itself module more myapp myctrl myservice no occurs of on or partials see service such that the there this throw to tries when which will your", + "members": "" + }, + { + "path": "error/$injector/itkn", + "titleWords": "itkn", + "keywords": "$http $inject $injector $scope $timeout always an and annotation annotations any are as avoid bad be cause code controller dependency error example examples expected explanation first for function got guide how html in include incorrect injection itkn literals myappmodule myctrl name occurs of other partials refer second service should string strings the them this thrown to token tokens type use using var what when will with", + "members": "" + }, + { + "path": "error/$injector/modulerr", + "titleWords": "modulerr", + "keywords": "$injector above additional after and angularjs are be been context due error exception failed fails getting has html if in installed instantiate its later load message module modulerr moved ngroute occurs own partials provide should some sure that the this to upgrading ve when you", + "members": "" + }, + { + "path": "error/$injector/nomod", + "titleWords": "nomod", + "keywords": "$injector above an and angular anywhere argument array as available be been browser call calling causes check common configuration context correct current declare define defined defining dependencies dependency dependent either empty ensure error example file first fix for forgot further harness has hasn html if in is isn it js karma less like load loaded loader misspelled module modules myapp name new no nomod not occurs of on or partials question re-open reason receive reference registering require retrieve same second should so specify tag testing that the this thrown to trying unavailable var via when which with without yet you your", + "members": "" + }, + { + "path": "error/$injector/pget", + "titleWords": "pget", + "keywords": "$get $injector $provide angular api attempting auto bad badprovider define doc does error example factory fill fix for function good goodprovider have html in information like method missing module more must myapp no noop not occurs on partials pget provider refer register so that the this throws to when", + "members": "" + }, + { + "path": "error/$injector/unpr", + "titleWords": "unpr", + "keywords": "$controller $injector above accidentally across already also an and angular another api as attempting be because been being below by can cannot caused code controller controllers correctly created define defined definition dependency destroyed directive do does each entire error example fail fix fixed following for from function has html if in inject injected instantiate into is it make making module myapp mycontroller mycoolservice mydirective myfirstcontroller mymodule mysecondcontroller myservice not noted once one only partials problem project provider redefining required resolve results retrieve service shown something spelled subsequent sure syntax the this throw throws to unable unknown unpr use using want what will with you your yourself", + "members": "" + }, + { + "path": "error/$interpolate/interr", + "titleWords": "interr", + "keywords": "$interpolate above additional can context due error exception fails html interpolate interpolation interr message occurs partials provide should some the this to when", + "members": "" + }, + { + "path": "error/$interpolate/noconcat", + "titleWords": "noconcat", + "keywords": "$interpolate $sce about an and angularjs api app are combination concatenate concatenated concatenates concatenating contextual could disallows doc easily error escaping expressions for hard helps how html http information interpolating interpolation interpolations is it keep lead makes more multiple ng noconcat occurs of org partials performing reason refer required secure see some strict that the this to trusted unsafe use value values when whether while xss your", + "members": "" + }, + { + "path": "error/$location/ihshprfx", + "titleWords": "ihshprfx", + "keywords": "$location $locationprovider after app asked at be but com config configuration configure configured correct enter error example for hash html http if ihshprfx in invalid is missing myapp ng not occurs parse partials prefix present service symbol that the this throw to url use was when will with you", + "members": "" + }, + { + "path": "error/$location/ipthprfx", + "titleWords": "ipthprfx", + "keywords": "$location and application as base check configure document doesn element error for head html html5 in invalid ipthprfx issue location main match missing mode ng occurs of or partials path please prefix resolve service set specified specify tag that the this to tried try update url via well when with you your", + "members": "" + }, + { + "path": "error/$location/isrcharg", + "titleWords": "isrcharg", + "keywords": "$location an api argument associated be call can caused consult docs ensure error first for html identify is isrcharg issue learn more must ng object of or partials please resolve search site stack string that the this to trace type use with wrong you", + "members": "" + }, + { + "path": "error/$parse/isecdom", + "titleWords": "isecdom", + "keywords": "$parse $scope access accessing add also an and angular angularjs arbitrary are as attempts avoid called calls can chain check code coding coffeescript concerns controllers dereferenced developer directly disallowed does dom dotted error event example execute explicit expose expression expressions false feature fix for frequently from function guard handler handlers harder has html implicit in index invokes is isecdom issue it iwillreturndom javascript js known language last me means member more ng-click no node nodes not object objects occur occurs of often on only partials perform performed places poor powerful referencing resolve restricts return returning returns scenario scope sensitive separation sign since solution somedomnode statement style such that the these this to up using usually values violates way when which within you your", + "members": "" + }, + { + "path": "error/$parse/isecff", + "titleWords": "isecff", + "keywords": "$parse access an and angular apply attempts avoid bans behaviour bind call disallowed error example existing expression expressions from function functions html in invocation invoke is isecff known methods modify occurs of or partials referencing resolve result sendinfo since that the these this to true using way when within would", + "members": "" + }, + { + "path": "error/$parse/isecfld", + "titleWords": "isecfld", + "keywords": "$emit $parse __definegetter__ __definesetter__ __lookupgetter__ __lookupsetter__ access alias an and angular angularjs arbitrary as attempting attempts avoid bans code disallowed error example execute expression expressions field fields following from hasownproperty html in instead is isecfld javascript known last mess name native noop objects occurs of one or partials referencing resolve resort result since that the their them these this through to using value way when with within would", + "members": "" + }, + { + "path": "error/$parse/isecfn", + "titleWords": "isecfn", + "keywords": "$parse access all an angular arbitrary attempts avoid bans code disallowed error execute expression expressions for from function functions html in is isecfn javascript known object occurs partials referencing resolve since the this to way when within", + "members": "" + }, + { + "path": "error/$parse/isecobj", + "titleWords": "isecobj", + "keywords": "$parse access an angular attempts avoid bans behaviour disallowed error existing expression expressions from html in is isecobj javascript known modify object objects occurs of partials referencing resolve since the this to way when within", + "members": "" + }, + { + "path": "error/$parse/isecwindow", + "titleWords": "isecwindow", + "keywords": "$parse access an and angular angularjs arbitrary are as attempts avoid calls chain check code developer directly disallowed does dotted error execute expose expression expressions for from function guard harder html in index is isecwindow it javascript known member not object objects occurs on only partials perform performed places powerful referencing resolve restricts scope sensitive since such that the these this to up way when window within", + "members": "" + }, + { + "path": "error/$parse/lexerr", + "titleWords": "lexerr", + "keywords": "$parse about an and angular at column contains error escape example expression expressions fix for guide has html identify in invalid learn lexer lexerr lexical malformed message more number occurs or partials precise resolve syntax the to unicode when", + "members": "" + }, + { + "path": "error/$parse/syntax", + "titleWords": "syntax", + "keywords": "$parse about an and angular are at column compiling contains description error errors expression expressions fix guide html identify in including is learn location message more occurred occurs of partials precise resolve starting syntax the there these thrown to token when where while", + "members": "" + }, + { + "path": "error/$parse/ueoe", + "titleWords": "ueoe", + "keywords": "$parse about an and angular at bracket closing end error example expression expressions fix for forgetting guide html identify in is learn missing more occurs of partials resolve syntax the this to tokens trigger ueoe unexpected when will", + "members": "" + }, + { + "path": "error/$resource/badargs", + "titleWords": "badargs", + "keywords": "$resource action actions any api arguments as badargs custom data documentation error expected for get got html information many may more ngresource occurs or partials query refer reference specifying success such take the these this to too up user-defined when", + "members": "" + }, + { + "path": "error/$resource/badcfg", + "titleWords": "badcfg", + "keywords": "$resource actions actual all an api array arrays as badcfg be but by can configuration configured contain data default deserialized documentation does error except expect expected expects for format from got html in information make match matches more ngresource not object objects occurs of or parameter partials query receives reference resolve resource response returned see server service sure that the this to versa vice when which your", + "members": "" + }, + { + "path": "error/$resource/badmember", + "titleWords": "badmember", + "keywords": "$resource all an are ascii attempting badmember bar be case data dotted empty error errors example expression extract following foo for from here html identifier identifiers in index invalid is javascript leading lookup lookups member object occurs of only operator or param params paramsdefault part partials path should simple supported syntax that the there this to using valid value when", + "members": "" + }, + { + "path": "error/$resource/badname", + "titleWords": "badname", + "keywords": "$resource allowing and as badname be because break cannot error generally hasownproperty html internally is it lookups name not object occurs of on parameter partials such the this to try use used valid when would you", + "members": "" + }, + { + "path": "error/$rootScope/infdig", + "titleWords": "infdig", + "keywords": "$digest $rootscope $rootscopeprovider $scope $watch aborting allowed an and angular application array be become becomes binding browser by called can causing change changed changes common configured controlled cycle detects determines different each elements error every example fired foo for francisco from function generates getusers hank have html if in infdig infinite is it iterations last loop maximum mistake model name new ng ng-repeat not number object occur occurs of on one partials path prevents reached resulting return returns same setting since situation solution state subsequent subsequently that the this time to triggers ttl unresponsive unstable up updating user users value var via watch watchers when which", + "members": "" + }, + { + "path": "error/$rootScope/inprog", + "titleWords": "inprog", + "keywords": "$apply $attr $digest $element $eval $get $parse $rootscope $scope $timeout $watch about above accepts action against all allows already also always an and angular another any apart api app application applied are array arrives as async asynchronous asynchronously at attr attribute back background bad be because becomes been being best block blur bugs but button by cached call callback called calling calls can case cases cause caused causes causing changed changes check checking choice click code comes common compile completes concepts consider context control controller conversely copy correctly course currently cut data daunting dblclick decides defined defines described design detect diagnose diagnosing digest directive directivename directivenormalize directly dirty-checking do doc dom dostuff during earlier either element ensure enter entered entering error event events every example example-error- executing expect external false fault finally find first fits fix fixed fn focus followed for force foreach from function further future get getdata gets gives good guide handle handler handlers happen hard has hasfocus have here how html htmlinputelement ideal identified if imagine immediately in inconsistent incorrect inprog input inside instantiated interacting interaction interacts investigate is issue it its js keeps keydown keypress keyup know leads learn let library like likely line link look looks made makes making manually matches may maybe mechanism memory method min minified model monitor more most mouse mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup moving msg must myapp mycontroller name near need needs never new ng ng- ng-click ng-focus ngclick ngeventdirectives ngfocus no normally not now object occur occurred occurs of often on once one ones only operation or origin other our out outside oversight own part partials party paste perhaps period phase phases piece place places please point possible prevent previous problem process processing programmatic programmatically programming progress providing pseudo-code rather reading receives reenter reevaluate relevant resolve responses retrieve return run running runs scenario schedule scope second see seen server service services set set-focus-if setfocusif sets setting setup should sign simple simply since single situation situations so some somedata something sometimes soon source split stack stacktrace submit subsequent such sync synchronous synchronously tell tells that the their them then there therefore thirdpartycomponent this those though through throw thrown time timeout timeouts to top trace track tree trigger triggered triggering triggers true try trying two type typically up update us used user uses using value values var very was watch watched way ways we well were what when where whether which while why will with within work workaround works would wrap wrapped you your", + "members": "" + }, + { + "path": "error/$sanitize/badparse", + "titleWords": "badparse", + "keywords": "$sanitize as badparse be being block browser bug by can code contains despite error file following html if in input is it more obscure occurs of parse parsed parser parsing part partials passed please possible produce recognized results sanitizer sanitizing so some strict string than that the this to typical unable valid was when while would", + "members": "" + }, + { + "path": "error/$sce/icontext", + "titleWords": "icontext", + "keywords": "$sce attempted consult context contexts contextual enum error escaping html icontext in invalid list ng not of partials passed please recognized sce strict supported the to trust trustas unknown value was", + "members": "" + }, + { + "path": "error/$sce/iequirks", + "titleWords": "iequirks", + "keywords": "$sce about adding allows and angularjs arbitrary are aspx at blogs by can com contextual default doctype document does enabled ending error escaping execute explorer expression expressions fix for html http ie8 ieblog iequirks in information internet is javascript learn lower main mode more msdn ng not occurs of on one or org partials please proper quirks refer resolve see specify strict support supported syntax text the them this to top unsupported use using version when with you your", + "members": "" + }, + { + "path": "error/$sce/imatcher", + "titleWords": "imatcher", + "keywords": "$sce $scedelegateprovider acceptable and api are be error for html imatcher instances invalid items list matcher matchers may ng objects of only or partials patterns please regexp resourceurlblacklist resourceurlwhitelist see self string supported the", + "members": "" + }, + { + "path": "error/$sce/insecurl", + "titleWords": "insecurl", + "keywords": "$sce $scedelegate $scedelegateprovider adjust all allowed also an and angular angularjs application apply are as attempting belong blacklist blocked browser browsers by call calling com contextual cross-domain custom default directive directives document domain domains either error escaping file for from further gettrustedresourceurl google guide has html if insecure insecurl is it load loaded loading loads may mode neither ng nginclude nor not occur of on only or org origin other partials policy port possible processing protocol protocols re reason requests require resource resourceurlblacklist resourceurlwhitelist restrict same same-origin_policy_for_xmlhttprequest sharing similar some source specify strict successfully template templates templateurl that the these this threw to trustasresourceurl trusted typically untrusted url urls w3 whether whitelist with won work would wrap you", + "members": "" + }, + { + "path": "error/$sce/itype", + "titleWords": "itype", + "keywords": "$sce about angularjs attempted call content context contextual error escaping for html in is itype more ng non-string partials read required requires requiring sce strict string to trust trustas value", + "members": "" + }, + { + "path": "error/$sce/iwcard", + "titleWords": "iwcard", + "keywords": "$sce $scedelegateprovider and api are contain defined error html illegal in is iwcard matcher may ng not only partials pattern patterns resourceurlblacklist resourceurlwhitelist sequence string strings the undefined valid wildcard", + "members": "" + }, + { + "path": "error/$sce/unsafe", + "titleWords": "unsafe", + "keywords": "$sce an and angular as at attempting automatic be bindings by certain considered context contexts contextual default error escaping for found from helps html in include is issues loading may mode module more ng ngsanitize not one other partials prevent provided read require requires resources result safe sanitizing security specific strict such template that the this to trusted unsafe url use value want was xss you", + "members": "" + }, + { + "path": "error", + "titleWords": "Error Reference", + "keywords": "about angularjs api app builds concepts conditions console debugging detailed developer error errors features find for getting guide html in include index information links log manual of on other overview partials production reference references site specific started the this thrown to tutorial use useful will your", + "members": "" + }, + { + "path": "error/jqLite/nosel", + "titleWords": "nosel", + "keywords": "all alternatively and angular angularjs apis automatically available by can code description_angulars-jqlite dom element elements error full html http implements in include instance invoked is jqlite jquery keep looking lookup make manually name nosel not occurs of only order org other partials provided resolve rewrite see selector selectors small subset supported tag than that the this to traverse unsupported up use using version via when which will with you your", + "members": "" + }, + { + "path": "error/jqLite/offargs", + "titleWords": "offargs", + "keywords": "argument arguments does error html invalid jqlite jquery like many namespaces not note occurs off offargs or parameter partials pass selector selectors support that the this to too trying when", + "members": "" + }, + { + "path": "error/jqLite/onargs", + "titleWords": "onargs", + "keywords": "arguments as does error eventdata html invalid jqlite jquery many not note occurs on onargs or parameters partials pass selector support that the this to too trying when", + "members": "" + }, + { + "path": "error/ng/areq", + "titleWords": "areq", + "keywords": "and angularjs areq argument assertion asserts bad be certain defined error expects fails fix function helper html if is make ng ng:areq often partials present problem sure that the this thrown to truthy using value values will", + "members": "" + }, + { + "path": "error/ng/badname", + "titleWords": "badname", + "keywords": "allow allowing and bad badname be because break cannot context error generally hasownproperty html in internally is it lookups name ng ng:badname not object occurs on partials such the this to try use used valid when where would you", + "members": "" + }, + { + "path": "error/ng/btstrpd", + "titleWords": "btstrpd", + "keywords": "accidentally already also an and angular angularjs app application as been body bootstrap bootstrapped bootstrapping both btstrpd calling can document element error following for get happens has html if is itself js load more myapp ng ng-app ng:btstrpd note occurs on once partials purposes same so src than that the this throw to use usually when will with you", + "members": "" + }, + { + "path": "error/ng/cpi", + "titleWords": "cpi", + "keywords": "all an and angular api are arrays attempting avoid bad before calling calls can check copy copying cpi deletes destination elements error html identical is it itself make ng ng:cpi not object objects occurs of on or partials properties source supported sure the themselves this to when with your", + "members": "" + }, + { + "path": "error/ng/cpws", + "titleWords": "cpws", + "keywords": "an and any as avoid because can cause containing copies copy copying cpws cyclical deep error html infinite instances is making neither ng ng:cpws nor not note object of or other overflow partials recursion references scope scopes self self-referential stack structures supported that to trying well will window windows", + "members": "" + }, + { + "path": "error/ngModel/nonassign", + "titleWords": "nonassign", + "keywords": "always api assignable assigned bar be bound can directive doc element error examples expression expressions foo for html include indexedarray information is make more myfunc myobj namedvariable ng ng-model ngmodel non-assignable nonassign occurs of oops partials see someproperty sure that the this to using via when", + "members": "" + }, + { + "path": "error/ngOptions/iexp", + "titleWords": "iexp", + "keywords": "_collection_ _label_ _select_ an but color colors correct directive docs element error example expected expression for form got here html iexp in information invalid is isn more name ng ng-model ng-options ngoptions occurs of on partials passed see select syntax that this valid when", + "members": "" + }, + { + "path": "error/ngPattern/noregexp", + "titleWords": "noregexp", + "keywords": "an be but directive docs doesn element error expected expression for format have html in information input is isn more ng ngpattern noregexp occurs on or partials passed regexp regular see syntax that the this to valid was when", + "members": "" + }, + { + "path": "error/ngRepeat/dupes", + "titleWords": "dupes", + "keywords": "$index above allowed an and angularjs are array associate association banned be because between but by can cause code collection collections common default desirable directive dom dupes duplicate duplicates either ensure error example expression for have how html identity if in instead interned is issue items key keyed keys models most ng ng-repeat ngrepeat nodes not occurs of or partials position primitive problematic reference references repeater resolve resolved specify syntax that the their there this to track triggered types unique use uses using value which will with", + "members": "" + }, + { + "path": "error/ngRepeat/iexp", + "titleWords": "iexp", + "keywords": "_collection_ _id_ _item_ about an and angularjs api attention aware be before but by comes consult directive documentation error errors expected expression fix form from got html identify iexp in invalid is keywords learn more ng ngrepeat occurs of optionally parser parses parsing partials paying please regex resolve sending should special syntax the there this to track using valid when", + "members": "" + }, + { + "path": "error/ngRepeat/iidexp", + "titleWords": "iidexp", + "keywords": "_collection_ _item_ _key_ _value_ about an and api are be both but consult directive documentation either error examples expression got html identifier identifiers iidexp in invalid is learn more ng ng-repeat ngrepeat occurs of or part partials please resolve should some somefn syntax the there to tuple use user usermap users valid when where", + "members": "" + }, + { + "path": "error/ngTransclude/orphan", + "titleWords": "orphan", + "keywords": "an ancestor and api check consult definition directive directives documentation either element error for forgotten found guide have html illegal in included intended is learn more ngtransclude no occurs of offending often or orphan parent partials remove requires resolve set some template that the then this to transclude transcluded transclusion true use used when without writing you", + "members": "" + }, + { + "path": "guide/$location", + "titleWords": "Using $location", + "keywords": "$apply $compile $digest $location $locationprovider $observe $observers $provide $rootscope $watch $watchers $window _escaped_fragment_ _self able about absolute absurl access according actually add addition address after again ajax all allow allows also always among an and angular angularjs any api apis app application applications appropriate apps are as attributes automatically available aware back bar base based basically be because beforeeach begin behave below best between binding bot both break browser browsers but button by call called calls can capability care cases cause caveats chain chaining change changed changes changing character characters check class clicks coalesces code com commit comparing compiler compose configuration configure connected contain content control conversion crawlable crawler crawling create creating current currently customizing decoded default depending describe differences different differently directions directive directly displaying do docroot document does doesn dom domain don during each earlier either element empty-corner-lt enable enabled encode encoded encoding encouraged enough entire entry equivalents etc event everything everywhere example example-example example-location-hashbang-mode example-location-html5-mode examples expected exposes extra facilitate factory fake fall fallback false features field file first flag following follows for form format forward fragment frees from full function future general get getter getters go google guide happens has hasbang hash hashbang hashpath hashprefix hashsearch have having head here history history-0 host href html html5 html5mode http ietf if images img immediately implement in index indexing information initial inject input inside instances instantiated instead integrates integration interact intercept intercepts internal into is issues it item its itself jpg jquery-style js just knows last lead legacy level life-cycle like link links loaded location locationpath lower lower-level main maintains make makes management many means meta method methods migrating missing mode model modern modes modified more mozilla multiple must mutations name navigate navigation necessary need needs never new next ng ngmodel not note notified notify object observe obtains of often ok old older on once one only open opening operation option or org original other others otherwise outside overview page param parameters parses parsing part partials parts pass passed path pathname perform performs phase phases please point port prefix prefixes process processes propagate properties property protocol provided provides push pushed rather raw react read read-only recognize record records redirect redirection redirects reflected regular related relative release releases reload reloads replace replaced replacing represents request require requires resets resolved responsibility retrieve retrigger return returned returns rewrite rewrites rewriting rewritten root rules running same scope scripts search section see segments sending serve server server-side service services serviceundertest set setter setters should show side since single slash snapshots so special specified specify src starting state strongly such suitable supplies support supported supports sure synced synchronization table tag takes target technique tell test testing than that the their them then there these this through time to transparent transparently true two two-way txt type unless update updated updatehash updates url urls use used useful user users uses using value values versa via vice viewing w3 want was watch way we well what whatever when whether which will window with without work worry would write you your", + "members": "" + }, + { + "path": "guide/animations", + "titleWords": "Animations", + "keywords": "$animate able about add addclass added addition all also although an and angularjs animate animation animations any api application apply approach are around as at attached attempt attention attrs automatically available based be before being below between bind both breakdown browser by callback calls can capture changes class classes classname cleanup click clicked code common complete completely conventions css css-based custom cycle defined defining definition demo dependency destination detail different directive directives directly do docs documentation does done during each element elements else enabled enter established event events example example-example1 example-example2 executed explains factory figures file finalized following for form from full function generated given guide handful handle has hasclass have hooks how html id idea if in include injecting installation installing instructions into invalid involved is it item items its javascript jquery js keyframe knows leave lets life like linear list little long look major making match may means method mind module more move moved my my-directive my_animation mymodule name names naming needed new ng ng-enter ng-enter-active ng-hide ng-leave ng-move ng-move-active ng-repeat nganimate ngclass nghide ngif nginclude ngmodel ngrepeat ngroute ngshow ngswitch ngview not occur occurs of on oncancel ondone only opacity operations optional or other our out overview own partials pays perform phonecat place placed post-animation present pristine properties provides quick re refer reference removal remove removeclass removed repeated repeated-item repeater requires return run same saw say scope see separate service set setup shows so some step steps stop such support supported table taking tell template that the them then these they thing this those time to transition transitions trigger triggered triggering triggers tutorial unfortunately unless usage_animations use used using valid validations value vanilla various vendor via want we website well what when whenever where whether which will with within work you your", + "members": "" + }, + { + "path": "guide/bootstrap", + "titleWords": "Bootstrap", + "keywords": "$injector $scope about add added after alert alert-warning all allows an and angular angular- angularjs any app application array as associated at augment auto auto-bootstrap automatic automatically batarang be because before bi-directionally bits blocked bootstrap bootstrapped bootstrapping bootstraps bottom bound by call called can cannot choose class code compilation compile compiler compiles complete compressed contains control controller controllers create custom debugging deferred defined dependencies designates development di directive directives do document dom domcontentloaded don element enables end etc evaluated event example examples executable experimental explains expose feature file find fine fly follow for found from function get greetme guide happy have heavy hello here historical hole hook how html http human-readable id ie ie7 if img improves in include initialization initialize initializes initializing injector instead instrumentation integrating into is it js latest like link linking list load loaded loaders loading longer looks make manual manually method min mocking module modules more must myapp mycontroller name necessary need ng ng-app ng-controller ng_defer_bootstrap no not note notice obfuscated of old on only operation optional optionalmodulename or org original our out over overview padding-left page parameter partials pass path paused perform place placing please png point portion prefix process production provided pull-right purpose ready readystate reasons recommend recommended registry replace require resumebootstrap root runners script second security sequence services set should shows site sneak src style suitable support syntax tag tags takes tell test that the them then this time to tools treat treating typically until upon url use using ve want was we what when which will window with world xml-namespace xmlns you your", + "members": "" + }, + { + "path": "guide/compiler", + "titleWords": "HTML Compiler", + "keywords": "$compile $compileprovider $interpolate $rootscope $watch able about above accept accidentally achieve action actions add added against alert alert-success alert-warning align aligned all allow allows already also among an and angular angularjs answer any anyone anything api app append appendchild appended application applications approach are array as at attach attached attribute attributes automatically basics be because become becomes been before behavior behavioral below between bind binding bindings body bound box break browser building but button buttons by call calling calls can cases cause causes center centered chance change changes changing child class clean clicking clobber clobbering clobbers clone cloned clones cloning code collect collection combine combined comes comments common compilation compile compiled compiler compiles compiling complexity complicated component components composed concerned configured consider constructs consume consumes contain contained contains content copy corresponding create created creates creating custom data data-binding declarative declares deeper defined definition delegate descending description desired destroyed developer developers dialog difference different dilemma directive directives divided do documentation documents does dom domain don dosomething draggable duplicate during each easy ed element elements encountered encounters enough equivalent evaluate even event every example example-example3 examples executed executes exp expect expects expression expressiveness extended extensions false familiar fashion final find finds first follows footer for forgets formatting found from function functions furthermore get getting give gives goes guide half handle handlers happens has have having hello help here hold how however html idea identified if img important improves in in-depth individual inherit initially injected innerhtml input insert inserted inserting instance instead instructions interactions internally interpolating interpolation into invokes invoking involved is isolated isolation issue issues it item items its itself js just keep know lack language later least less let lifetime like limited limits link linked linkfn linking links list listeners live loads local locals look looking looks lot magic make makes making managing mapping match matches matching may means merge merging might model modify more most moved multiple naive name names natural need needed needs new ng ng-bind ng-click ng-repeat ng-show ng-transclude ngrepeat no node nodes not note notice of often on on-cancel on-ok oncancel once one only onok open operates operation or original other our overall overview overwrite overwriting page parent parse parses partials performance performed phase phases place placed png point position power practice pre-bundled pre-compilation presence present preventing previous principles priority problem problems process produce produces properly properties property prototypically provide pseudo purposes rare rather re re-merged reading ready real-world reason reasons recommend reference reflected register registering removing render replace responsive restrict restriction result resulting results returned returns reusable right runtime save scope scopes see seem seems separate separately separation server service set setting shared short should show showing siblings side simplified simply since single size slower so solution solve solving some something sorted sorts source special specific specifically src stable started static step string strings structure such surprise sync syntax systems takes targeted teach template templates templating text than that the their then there therefore these this three time title to towards transclude transcluded transclusion transparent traverse traverses traversing triggered trivial true truth turn tutorial two ul understand understanding undesirable unexpected unless unpredictable up update use used useful usefulness user username uses using usually var variables versus view visible visits vocabulary want watches way we web well what when where which who whole why widget will window with won wonder work working works worry would write you your", + "members": "" + }, + { + "path": "guide/concepts", + "titleWords": "Conceptual Overview", + "keywords": "$http _live_ able about above access accessible accessing actual add added adding additional adds after again alert alert-info all allows also an and angular angularjs another api app application applied apply are argument arguments around array artifacts as at attribute attributes automatically back backend be because behavior behind besides between bind binding bindings braces briefly build built-in business but button by calculate called calling calls can change changed changes changing children class clicked code comes compiler concept concepts conceptual configuration configures container contains context controller controllers conversion convertcurrency corresponding cost costs could create created creates creating curly currencies currency currencyconverter current custom data databinding deals define defined defines defining definition depend dependencies dependency depends describe description design di different directive directives directly directs display do documentation does dom done double element elements encounters enter entry evaluate evaluated everything exactly example example-guide-concepts-1 example-guide-concepts-2 example-guide-concepts-21 example-guide-concepts-3 exchange existing explains explanation expose expression expressions extend extra factories factory fetching field fields file filter filters finance finance2 finish first following for form formats from function functionality functions get global going good got graphic grows guide hard has hold how html if img important in in-depth including independent initial initializes injection injector input instance instantiate instantiates instead interacts into introduced invoice invoice2 invoicecontroller is it javascript javascript-like js just kind knows last later let like linked live load loaded logic looks main markup minifying model module modules money more most move moved mozilla multiple multiplied multiply name named names need needs new next ng ng-app ng-controller ng-model ng-repeat ngclick normal not note now number objects of on only or order org other our out output overview padding-bottom padding-left page parses partials parts pass pattern pay place plain play png possible practice prefixing preview previous previously probably processes produce provided provides pull-right purpose quantity question rates read recalculated refactor reference referred register registered rename rendered replace responsible rest result returns reusable reused right save saw scope second section see sees separated server service services shorter should shown shows simple simply snippet so so-called software some something special specifies src start starts stored stores style sync syntax take talk tells template templates test that the their them then there they thing things this those through to together total touches transformed transports try tutorial two-way ui updated us use user uses using value values variable variables view views walk ways we web well what when whenever where which whose widgets wikipedia will wired wires with within without work works wrapper write xmlhttprequest yahoo you your", + "members": "" + }, + { + "path": "guide/controller", + "titleWords": "Controllers", + "keywords": "$controller $new $rootscope $route $scope about above access across add adding affects alert alert-info all also although an and angular annotation any app application are argument arguments as assigned assigning assignment associate associating at attach attached attaches attaching augment augmented automatically available baby be become been beforeeach behavior being belong below best binding both box business but button buttons by called can capital cases child childcontroller children childscope chili chilispicy class clicked code com common components computation concepts consisting constant contain containing contains controller controllers controls convention conventions correctly could create created creates creating customspice data-binding data-bound databinding default defined defines definition demonstrated demonstrates dependency depending describe di different direct directive directives discussed do does doesn dom double doublecontroller doubles each element encapsulate encapsulating ends equals evening event events example example-example4 example-example5 example-example6 examples execute exists expect explicitly expression expressions filter filters first following for form format forms four from function functions further general get gingerbread global grandchildcontroller grandchildscope greeting greetingcontroller guide habanero handler has have hierarchy higher hola hot how html if illustrate implicitly in information inherit inheritance inherits initial injectable injecting injection input instances instantiate instead into invoked involves is it its jalape jalapeno javascript js just keep keeps lava length let letter levels life-cycle little logic maincontroller mainscope manage manipulate manipulation manual many mattie message method methods mild model module more morning most much must myapp mycontroller name named naming need needed nested new ng ng-controller ng-model ngclick ngcontroller ngroute nikki not notice now num number object objects of on once one only or order other our out output over overrides overview parameter partials pasilla passes plain point presentation presented previous primitives properties property provide provided putting react receives refers registered replaced result return root same scope scopes second section sections see selected service services set setting share should shouldn shown significantly simple since single slim so specified specify spice spices spiciness spicy spicycontroller starts state string take takes template templates test testability testing that the then there these things this three through timeofday times to tobe too try two typically understanding up updated updates use used uses using value values var variation very via view way ways we when where which will with work works you your", + "members": "" + }, + { + "path": "guide/css-styling", + "titleWords": "Working With CSS", + "keywords": "$rootscope about an angular any api application applies attached binding braces by changed class classes css css-styling curly data databinding defined did directive does element example for forms guide have html if information input interaction interacts is it more new ng ng-bind ng-binding ng-dirty ng-invalid ng-pristine ng-scope ng-valid not once or overview partials pass provide related scope scopes sets styling templates that the these this to topics up used useful user validation via which widget with working your", + "members": "" + }, + { + "path": "guide/databinding", + "titleWords": "Data Binding", + "keywords": "additional after all along an and angular any application apps are as at automatic automatically because between bind binding browser can change changes class classical code compilation compiled completely components constantly controller data data-binding databinding dependency developer differently direction directives dom easy first for from greatly guide has html img immediately implements in instant into is isolation it just lets live makes markup means merge model most not occurs of on one only or overview partials png produces programming projection propagated reflected reflects related right scope scopes sections separated simplifying simply single-source-of-truth snap src state step synchronization syncs systems template templates templating test testing that the they think this times to together topics treat unaware uncompiled user versa vice view way when with without work worse write you your", + "members": "" + }, + { + "path": "guide/di", + "titleWords": "Dependency Injection", + "keywords": "$inject $rootscope $route $scope $window able about above accepts access actual additional against alert all allow also always amethod an and angular animations annotated annotating annotation any anywhere api application applications are arguments array as ask asking asks assigns associated assume at automatically available avoids be because behavior behind below best bloat blocks book bootstrap break breaks build but by calling can cannot care certain charge class classes code coding com compiles component components concerned config configuration consist constant construction constructs contains control controller controllers convenient create creating creation deal deals declaration declarations declarative declares declaring defined defining demeter demo dep1 dep2 dependencies dependency dependent depprovider depservice design desirable details developer di difficult directive directivename directives discussion documentation does dom done dosomething due each elements equivalent especially ever every examining example examples extracting factories factory favorite filter filtername filters first fit followed for fowler from function functions get getting given global greet greeter greeterfactory guide hand handed hard has have having hello here hold how html if img implicit implicitly impossible in in-depth infer information inject injectable injected injecting injection injector inline instance instances instantiate instantiated instead interchangeably into invoked is isolation issue it its itself javascript js just keep kept know knowing law like list locating locator look looking lookup made makes manage many markup martin match means method methods mind minification minifiers mock modify module module-loading-dependencies modules more moreover most must mycontroller mymodule name names need needed needing needs new ng ng-click ng-controller not notation note notice nutshell object objects of often on one only operator optimal option options or order ordering org other our outcome over overview padding-bottom padding-left parameter parameters part partials pass passed passing pattern per pervasive png point pretotyping problematic processes property protects prototype provide provided provider providers providing pull-right puts read reason recommended referring registered remedy removes rename renamed renamedgreeter request requested resolve resolved resolves resolving responsibility responsible results return right route run satisfy sayhello scenario scenes scope see service serviceid services setup simplest simply since singleton snippet so software solves someclass somemodule sometimes special specify src still straightforward strings style styles subsystem such supported supports sync taken teach template templates temporary test tests that the their them then there these they third this three throughout time to turn two typically unlike up use used useful uses using usually value values var variable viable way ways we well what when where which while whose wikipedia will wiring with without work world would you your", + "members": "" + }, + { + "path": "guide/directive", + "titleWords": "Directives", + "keywords": "$compile $compileprovider $destroy $digest $injector $interpolate $interval $on $rootscope $timeout $watch ability able about above accepted access active acts actually add added adding addpane address adds advantage advise aec after against alert alert-info alert-success alert-warning alias all allow allowed allows already also although an and angular angular-provided angularjs annoying another any apart api app application applied arbitrary are argument around array as at attach attaches attaching attribute attributes attrs auto automatically available avoid back based basic basics basis be because become been before behave behavior behaviors being below besides best better between bind bind-to-this binding bindings binds bootstraps bound box break broadcasts browsers btfcarousel build building built built-in but buttons by call callback called camelcase can cannot case case-insensitive case-sensitive cases cause change changes changing check children choice chunk circle class clean clean-up cleaned clearly clicks close closer code collisions combination combined come comes comment comments common commonly communicate compilation compile compiled compiler compiles compiling completed completing component components compose comprehensive computers configuration conflict consider considering console contain container contains content contents context control controller controlleras controllers convert core correspond corresponding corresponds could couple create created creating creating-custom-directives_demo_creating-directives-that-communicate creating-custom-directives_matching-directives css current custom customer customerinfo cx cycle dash-delimited data data- data-ng data-ng-bind datefilter decorating deep default define defined defining definition deleted demonstrates dependency description_comprehensive-directive-api_directive-definition-object desirable destroyed determine determines developers dialog did difference different digest directive directive-definition-object directives displayed displays dive do docs docstabsexample document does doesn doing dom domain-specific don drag during each eagerly earlier easier effect either element elements embedded emits empty encouraged end-to-end ensure entire equivalent error evaluates evaluation even event events everything exactly example example-example10 example-example11 example-example12 example-example13 example-example14 example-example15 example-example16 example-example17 example-example18 example-example19 example-example7 example-example8 example-example9 examples except existing exp expect explains explanation explicitly expose exposed expression expressions factory familiar fatal few file fires first fix flaw followed following follows foo for format formatting forms found fourth from front function functionality functions future generally getting given gives go good great grows guide handler has hash have helpful here hidedialog high how however html html7 ideal if igor illustrate imagine img implement implementation in in-depth in-lined included including index info information inherits initialization injectable injected inner inside instance instead interact interactive interested interpolation into introduce introduced introduces introducing invalid invoke invoked invoking is isn isolate isolated isolates isolating it its javascript jeff jpg jqlite-wrapped js just key-value know language languages last leak leaks legacy legal let lets letter level like limits link links list listener listeners listening ll load look looking lower-case main make makes making manipulated manipulates many map markers match matched matches matching may mean meaning means memory might mirrors model modelctrl models modify module modules more moved much multiple my my-customer my-dir my-pane mycustomer mydir mypane mytabs name named names naomi necessary need needed needs nested new next ng ng-attr- ng-attr-cx ng-bind ng-click ng-href ng-model ng-repeat-end ng-repeat-start ngattr ngbind ngcontroller nginclude ngmodel ngview node normal normalized normally not note notice now object of on once one only opportunity option options or order ordinarily org original other others otherwise our outer output outside over overview own page pairs parameter parent parents part partials particularly parts pass perform picky place places point possible practice prefer prefix prefixed prevents previously problem problematic process processed programming property prototypically put rather re re-use reacts readers really reason reasons receives recently recommend recursive redefines refer reference referenced reflect register registered registering regular remove removed repeated replaces represents require required requires resolve restrict restricted restrictions return returning reusable reuse right risk run running same samples savvy saw say scope scopes script searches second section see seen sense sent separate separately service services set several shorthand should show shown signature similarly simplify simply since size small so solution some someone something sometimes source spanned special specific specified specify standard started starting state static still string strip such suggests summary svg syntax tab tabs tabsctrl tag take takes taking talk targeted tell tells template template-expanding templates templateurl term test testing text than thanks that the their them themselves then there these they thing things think this three throughout throw thus time times title to tobias tool towards transclude transcluded transform traverses trigger triggered true try trying tutorial two typically undefined unless unprefixed unsurprisingly up update updates upon use used useful user uses using valid validating value values var various ve version versus very via vojta want wanted watches way ways we web well were what whatever when whenever where which who wikipedia will with within wondering work works would wrap wraps write writing x- you your yourself", + "members": "" + }, + { + "path": "guide/e2e-testing", + "titleWords": "E2E Testing", + "keywords": "$http able about above actions addition after aftereach alert alert-danger all also an and angular angularjs any application applications apps are as assert at avoid be becomes before beforeeach between block blocks bootstrap browsers bugs built but button called can captured catch catching caveats class click code com come commands complexity components comprised contain continues control correctness could count css current defense deprecated describe describes directive do docs documentation does done duplicating e2e e2e-testing each element elements embedded end end-to-end enter example examples expect expectation expectations failed fails features field file files filter filtertext find first for function functions github google groceries grow guide has have health help helper here html if img in information integration interactions into io is issues it item items its jacksparrow javascript js line list look made maintenance manual manually marks may mode model more must navigate new next ng-app ng-model node not notice now of on one only or org out-of-the-box overview page partials passes past png problems program project protractor regardless regressions rely repeater requirements results run runner runs scenario see sendkeys should simple simulate simulates size something sometimes specifically src started state such syntax tag task tasks tell test testing tests that the there these this to todo toequal tool type under unit unrealistic up url use user uses using value verify view we whether which will with within work written you your", + "members": "" + }, + { + "path": "guide/expression", + "titleWords": "Expressions", + "keywords": "$eval $event $location $parse $rootscope $window above access accidental against an and angular angularjs apart application are as avoid be because become before behind better binding bindings bugs but call called can cannot clickme clutter code comma common complex conditional conditionals context control controller controllers core create creation data declarations declare decleare dedicated defined delegate differences different directive directives displaying do document does eval evaluate evaluated evaluating evaluation evaluations even example example-example20 example-example21 example-example22 example-example23 exception exceptions expose expression expressions filter filters flow following for forgiving format from function functions general generates global globals guide have here how html if in inside instead intentional invoking is it items javascript javascript-like language like literal location logic look loop loops make makes method mockable model more name need ng ng-init ngclick ngfocus no not notation note nothing null object of often on operator operators or outside overview partials pass philosophy placed prevents primarily processes properly properties provide purpose real reason referenceerror regexp regular response restriction returns run scope sense server service services should show similarly simply snippets soon source state statement statements subtle such templates ternary tested than that the these this throw throws to transformation try trying typeerror undefined up use used user usually valid variables view views void vs waiting want wasn we where which while will window with within write you your yourself", + "members": "" + }, + { + "path": "guide/filter", + "titleWords": "Filters", + "keywords": "$12 $filterprovider able addition additional also an and angularjs another any api applied are argument arguments array arrays as backend based be below big by call called calls can chaining changed conditionally conditions controller controllers costly creating currency custom data decimal define dependency digest directives directly display do easy every example example-example24 example-example25 expression expressions factory filter filter1 filter2 filterprovider filters first following for format formats from fulltext function guide have however html if in inject injected input internally into is it just like loaded makes markup may module name needed new ng number numberfilter of on only or org overview own parameters partials passed points reduces reevaluate register result resulting return reverses sample search second see services should starting string sub syntax takes template templates test testing text that the therefore they this to tutorial underlying upper-case use used user uses using value very view when which will with would writing you your", + "members": "" + }, + { + "path": "guide/forms", + "titleWords": "Forms", + "keywords": "$compileprovider $formatters $parsers $render $setvalidity $setviewvalue above achieve add addition adds after agree all allow allows an and angular api application are array as attribute augment available background basic be because before behavior below better binding both bound browser browsers but button by call calls can cases change changes checkbox circumvented classes client-side collection common consider consume contains contenteditable control controller controls conversion convert correct create css custom data data-binding defining dependency directive directives dirty disable display distracted dom done each easily elements email enabled ensures enter error event example example-example26 example-example27 example-example28 example-example29 example-example30 execute experience extend failing features feedback first flexibility float following for form format formcontroller forms fraction function functions get gets good grouping guide has here hold holds how however html html5 if implement implementation implementing implements implies important in info input inside instance instant instead integer interacting interacts internal into invalid is it its keep key listener max maxlength messages method min mind minlength model more most name native necessary need needs ng ng-dirty ng-invalid ng-pristine ng-valid ngmodel ngmodelcontroller not note notified novalidate number occur occurs of on one only opportunity optionally order other overview own parser parses partials passed pattern pipe-lined pipelines places plays primitives properties_ property provide provides providing published purpose pushing radio red related rendered rendering required reset responsible role satisfy save scope second secure see select server-side services should shown shows similar similarly simple since smart-float so some specifies standard state still string styling such sufficient synchronizing text textarea that the these they this through thus to together trusted turn two two-way type types understanding unshift until update updated url us use used user uses using usually valid validates validation validator validity value view want way ways we well what when whenever whether which while with work would write you your", + "members": "" + }, + { + "path": "guide/i18n", + "titleWords": "i18n and l10n", + "keywords": "$1000 $locale about above abstracted abstracting account adapting additionally alert alert-success all allows also although always an and angular angular_de-de anticipate app application applications approach approaches are as automatically balance banking be because behave binding bits both browser by can case cat caveats change class client code codes com commonly comparison components computer concatenating configure conscious consists containing contains content contents convenient correct correspond country create cultural cultures currency currently custom date datetime de default depend depending described desired develop developer developers developing different directive directory display displaying do does dollars each easily en en-au en-us enable end even example examples expected explicitly extra few file files filter filters find fine following for format formats from generic geographical german greatly guide have how html i18n icu-project id ids if in include including index index_de-de information instead internationalization internationalizing into is it ja japanese javascript js june junio l10n language languages length let like linguistic list loaded locale locale-specific locales localizable localization localized localizing look make makes managed market may means might min more most need needs neither ng ng-app ngpluralize nor not number of on one only optional or org other out override overview page pages parameter partials particular parts pluralization political practice pre-bundle pre-bundled pre-configured prepare problematic process products provide providing regardless region rely require requires rule rules running same say script second see separates serve server service sets settings several should show showcase size sk slower someone something source spanish specific specified specifying src starts strings such support supported supports sure symbol testing text that the their there they things this thorough through time timezone timezones to translated translation translations two ui usability usd use used uses using valid various vary viewers views want way we website what when which will with would write writing you your zh zh-cn zone", + "members": "" + }, + { + "path": "guide/ie", + "titleWords": "Internet Explorer Compatibility", + "keywords": "about above add addressing against alert alert-warning all allowed also an and angular angularjs any app application apply are as at attempt attribute attributes be been behavior below block blog blue body border browsers bugs but can categories category character child children chrome ci class closing com compatibility conditionally conjunction consider considered continue continuous core corresponding corrupt could createelement css currently custom dealing decide declaration defined delineate deploying describes display do document does dom dropping each earlier element elements enable example expected explorer fail fall firefox fix fixes following for functionality furthermore github good guide handling happens happy has have html http id idiosyncrasies ie ie10 ie11 ie7 ie8 ie9 if ignored in included instead integration internet into is issue issues it its js json later load long lte make may more most must my my-tag mytag name names namespace need needed news ng ng-app ng-include ng-pluralize ng-style ng-view ng:include ng:pluralize ng:view no node not of older on one only optional optionally optionalmodulename or org overview own parse part partials particular parts plan planning please polyfill polyfills pre-created pre-declare prefix project properly read recent red reference regardless requires restrictions result root run runs same see selectors self server short should sibling siblings since so solid some somecss special specific spend src standard starts steps stringify structure style styling subset such support supports suppose sure tag tags take team test tests text that the then these this three time to trailing turn two unknown up use used using version we what when whether which will with work works writing xml xmlns you your", + "members": "" + }, + { + "path": "guide", + "titleWords": "Developer Guide", + "keywords": "$http $resource $route $sanitize $sce about alex all amazon amit an analytics and angular angularjs api app application applications apps are ari at authorization automation awesome backends background bacon be belong below bennadel better binding bits blog book books bootstrap brad breezejs brombone brunoscopelliti by can channel channels check christopher client client-side cloud co codecademy codeschool coffeescriptlove com complementary complete comprehensive concepts conceptual content contextual contributing contributors controllers core could courses create creativebloq currency dart darwin data date dependency deployment design developer developers development didn dietz directive directives django docs documentation doesn dynamic edge end endpoints errors escaping even events everything example expressions external features filling filter filters final find firebase folks following for forms framework frederik freenode from full general getting gharat github go google green group guide hand have help here hiller htm html hundreds i18n ie if in index injection io irc is issue it jetbrains job jquery js js-applications karma kevinastone know known kozlowski kumar l10n languages laravel learn learning lerner lessons libraries links list ll localization logging looking love lynda mailing maps matthias me meetup minification minutes misc mobile model mongodb more mourafiq move multilingual need nehlsen net news newsletter ng ng-newsletter nganimate ngresource ngroute ngsanitize ngtouch ninja no nosql novanet novice of official on one online onsite open or org other out overview package page panda partials patel pawel pete platform please pluralsight policy post posts principles project rails4 re read readthedocs ready reasons recipe releases resources rest restful result roberthorvick rocketeer routes routing sandeep scopes security seo4ajax server server-specific servers service services seshadri session shareable short should shyam similar site sitepoint social source specific stack started storage strategy strict structure structured studio support system tell templates testing text that the them then thinkster this though to tool tools topics touch tutorial tutorials ui uk unique unit unit-testing updates us use vanston video videos views we web webstorm what when why widgets wintellectnow wiring with wordpress work working yearofmoo yeoman you your youtube", + "members": "" + }, + { + "path": "guide/introduction", + "titleWords": "Introduction", + "keywords": "_really_ _you_ about abstraction affected ajax all allowing allows almost also although always amount an and angular angularjs another any app application applications approach apps are around as at attaching attempts auto-injected automated back basic be been behavior belief better between binding boilerplate bonus bootstrap both browser build building built business but by call callbacks calls can cases centric change changes charge clearly client client-side clutters code coding cohesive collection com comes common complete components construct constructs contain control cornerstone cost creates creating crud cumbersome data data-binding declarative declaratively decouple deep-linking dependency dependency-injection describes describing designed designing details developer developers developing development different difficult difficulty directives directory displaying do document documents does doing dom dramatically durandal dynamic easier easily editors elements eliminate eliminates ember end-to-end entire equal error-prone errors etc event every everything examples excellent exercise express expressing extend features fills fit flexibility flow following for forest form forms fragments framework freed frees from full functions games get glue good great grouping gui guide guides had hand handles handling happens hard harnesses have hello helpful helps higher how html idea ideal if impedance imperative implementation importance improves in include indeed initialization injection intensive internal into introduction is it its javascript journey jquery just kinds language layout leaving lets level library like logic lot low-level lower luckily majority make makes making manipulate manipulating manipulation marshaling may mind minimize mismatch mocks model modify most much need needs never new not object of often once operations opinion opinionated other otherwise out-of-the-box over overall overview pains parallel partials particular partner piece plumbing point possible presenting probably process programmatically progress puts puzzle quickly rather really reduces regard registering removing repeating represent result returning reusable reuse routing scripts see seed sees server services set should side sides simplifies single software solution solved something specific spot started starting state static story structural structure structured structures style succinctly such support sure sweet syntax takes tasks teaches technology template templating test testability testing tests than that the then these thing this though through to together tons trees trick tricky tries trivial typically ui uis understand unit-testing up use useful users using validating validation vastly very want was way we web well-defined what when where which while wiring with within words work working world would write writing written wrote you your zen", + "members": "" + }, + { + "path": "guide/migration", + "titleWords": "Migrating from 1.0 to 1.2", + "keywords": "$compileprovider $http $id $injector $location $locationsearch-supports-multiple-keys $parent $parse $parseprovider $promise $provide $q $resource $route $routeparams $routeprovider $sanitize $save $sce $scope $then able about absolutely access accessing accordingly achieve action actually added adding addition adjusted affect affecting after against alert alert-info alert-warning align all allow allowed allows also although always an and angular angular-mobile angular-route angular-touch angularjs animations anymore anyone api apis application applications applicationsrvc apply apps arbitrary are array as at attached attribute attributes auditing automatically available avoid bad badname baseurl be because becomes been before begin behaves behaving behavior being below benefit best better between bind binding bindings bit both bound branch breaking browser browsers browsertrigger buggy bugs but by can cannot case cases catch center chain chaining change change-to-interpolation-priority changed changes changing chapter child chr class client closure code code-table colspan com combination combine comma commit common compile complete concatenated concatenating concerns configure configured considered console consult contain content contents context continue control controlled controller controllers convention convert copy correct corresponding could coverage css ctrl cy cycle data data-binding deal decided declare declares deemed default definition delimited dependencies dependency depends deprecated despite developer devices diff different difficult digest direct directive directive-priority directives directives-cannot-end-with--start-or--end directives-order-of-postlink-functions-reversed disallowed do document does dom don done driven due easier either el-polyton element elements else en-zz enable encodeuricomponent end enforced ensures entire equal error escaped escaping especially etc evaluate evaluated evaluates event eventdata events every everything example exception execute executed executes existing exists expected experimental explicitly expose exposed exposes expression expressions fact feature features few file files finally fix fixed fn fns follow following foo for form form-names-that-are-expressions-are-evaluated fr-rw fr-sn fr-td fr-tg freely from function functions general generating get getiframesrc github give global goes google greatly guide hand handlers happens hard has hasownproperty hasownproperty-disallowed-as-an-input-name have haw here high higher how however html http i18n id ie8 ie8-compatible if iframe ignored image impact improvements in in- include included including incorrectly increased increasing inherit innerhtml input inputs inside instance instances instantiate instead interceptor interested internal interpolated interpolation interpolations interpolations-inside-dom-event-handlers-are-now-disallowed into introduces is isn isolate isolate-scope isolate-scope-only-exposed-to-directives-with-scope-property isolatescope issues it it-ch its itself javascript join joined js just keep key keys kind last leads library like limited link links ln-cg load loaded local locale locales locals log long longer look low maintain make makes malicious many map may md means method methods might migrate migrating migration mime minor mirror mo mobile modifying modifying-the-dom-outside-digest-cycle module more mouse moved ms-bn much multi-element multiple myapp name named names naming native nav nav-header nav-list necessary need needed needs negative never new ng ng-click ng-isolate ng-model ngbindhtml ngbindhtmlunsafe ngbindhtmlunsafe-has-been-removed-and-replaced-by-ngbindhtml ngclick ngform ngif nginclude nginclude-and-ngview-replace-its-entire-element-on-update ngisolate ngmobile ngmobile-is-now-ngtouch ngrepeat ngresource ngroute ngroute-has-been-moved-into-its-own-module ngsanitize ngscenario ngswitchwhen ngtouch ngview nl-aw nl-be no nodes non-bindable non-es5 non-isolate-scope non-window nonisolatescope noop not notion now object objects odd of offers official old on onclick one only operator opposite option or order org other outside outstanding overview overwriting own page parameter parameters parent parsekeyvalue part partials particular pass passed passing phase place plain please possible post post-linking postlink postlinking potentially practice pre pre-linking precedence prefixes prelinking preprocessor previous previously print priority private promise promises prone properly properties property protocol provided provides pt-ao pt-gw pt-mz pt-st pull qs query quietly quirks quite rare rather re reason reasons recently recreate reenabled reference references refers reflect regardless region-specific releases relied rely removed rename renamed replace replaced repository request require requirement resolved resource resource-methods-return-the-promise resource-promises-are-resolved-with-the-resource-instance response restricting result return returned returns reversed reverted review ro-md rootelement ru-md ru-ua safe safer said same sanitize sanitized say scenarios scope search security see select sensitive serialization server service services services-can-now-return-functions set setup several should shouldn simple simplify single so some somefunct someone someothermodule something sort sorted source spec specific specify sr-cyrl sr-cyrl-ba sr-cyrl-me sr-latn sr-latn-ba sr-latn-me sr-rs src stable standard standing start state statements still stored storing string strings styles subject submit success such suffixes support supporting supports sure surface sv-fi sw-ke switching syntax syntax-for-named-wildcard-parameters-changed-in ta-lk table table-bordered table-striped tags task template templates templates-no-longer-automatically-unwrap-promises templateurl test than that the their them then there these they think third this thorough those though thrown thus time tl-ph to together tokeyvalue took touch-enabled true trustashtml trusted try two two-way type types typically unavoidable uncommon uncommon-region-specific-local-files-were-removed-from-i18n undergone underscore underscore-prefixed understand unsafe unusual unwrap unwrappromises up update updated upgrading ur-in uris url urls urls-are-now-sanitized-against-a-whitelist usage use used user uses using value values var version versions very via vulnerabilities want wanted was way we well were what whatwg when where whether which whitelist whitelisted whole whose wildcard will window with within without work worked worry would written xss you you-can-only-bind-one-expression-to you-cannot-bind-to-select your yourself zh-hans zh-hans-hk zh-hans-mo zh-hans-sg zh-hant zh-hant-hk zh-hant-mo zh-hant-tw", + "members": "" + }, + { + "path": "guide/module", + "titleWords": "Modules", + "keywords": "$compileprovider $filterprovider $injector $provide $window above accidental add advantage advantages after alert alert-info alertspy all also an and angular angularjs another any api app application applications applied applies apply approach apps are array as assume asynchronous at basics be because been before beforeeach beware block blocks bootstrap bootstrapped bootstrapping bootstraps both box break by calling can class closest code collection component concise config configuration configured consist constant constants contain container contains controllers convenience create created createspy creating creation deal declarative declaratively declared defined definition definitions delay dependencies depending depends describe did different directive directivename directives do document don during each easier empty end-to-end equivalent error etc even example example-example31 example-example32 examples execute executed execution existing expect factory fast feature filter filtername filters first focused for form fully function further get going google greet greetmod guide hard has have hello help how html hurry if ignored implies important in initialization inject injected injector inline instance-injector instances instantiates instantiating instantiation instead into is isolated it its jasmine js keep keeps kickstart kinds know large let level like list load loaded loaders loading main managing many may method methods mock module modules most multiple myapp mydirective mymodule myothermodule myservice name named needs new ng-app not nothing notice of on once one only order org organize other override overrides overriding overview overwrite overwrites own package parallel parallelize partials parts per phase prevent process projects property provider provider-injector providers real reason recommend recommended reference register registered registrations relevant require required requiring retrieval retrieve return reusable run runner salutation same scale script scripts service services setup several should show simple simplest small so some special specify stimulus structured subset suggestion system tailor take test testing tests that the their them then there these they thing things think this throws thus time times to together tohavebeencalledwith true two typically understand unit unit-test unit-tests use used using usually value var ve version versus vm want way we were what when which while why will window wires with words working world write yet you your", + "members": "" + }, + { + "path": "guide/providers", + "titleWords": "Providers", + "keywords": "$element $get $injector a12345654321x abilities ability about above accept access accessible accomplish adds against alert alert-success algorithm all already also an and angular animation animations any api apitoken apitokenfactory app application application-wide applications appropriate apps are aren argument arguments as asks assume at atmosphere authentication auto automatically available awesome bag based be because been before behavior behind being belongs better between bit bootstrap both boy browser build building burn but by caches call called can case changed child class client clientid clientidfactory code code-table codebase collaborate com commonly complex component composed comprehensive computed computes conclusion config configurable configuration configure configures conform constant constructed constructing constructorinjectionwithpicocontainer constructs consults contain contains controller controllers convention core cost could create created creates creating custom data-binding data2 debugger declares default define defined definition delayed demo democontroller dependencies dependency depends description design developer developers difference different directive directives directly disallowed display displays does doesn don done during each eager earlier early easier empty encrypt encryption error even every exactly example examples except exception explore expose extend fact factories factory false features filter filters five follow following for four framework friendly from fun function functions future get getitem giant given global goes greasy great guide handy has have haven helps holds hood how however html id identifier if implement implements important in include information initialization injected injection injector instance instances instantiated instantiates instructions interaction interesting interfaces intergalactic into intro is it its javascript just keeping know lacks launch launched launchedcount launcher learned let life-cycle like link literal ll local localstorage look looking made make makes manually many martinfowler means mentioned mess method might misdeed module modules more most much must myapp myplanet myplanetdirectivefactory name named naming navigating need needed needs new ng ng-app ng-controller no not note notice now nsa-proof object object-oriented objects of off offspring often on once one ones only operator or order other otherwise our over overkill overview part partials passing pattern phase phases piece places planet planetname planets plugins points possible powerful practice prefixes previous primitive primitives process produce produces protective provide provided provider providers provides punished purpose ready recipe recipes reference registered registering registry regret regular remaining remote replace represent representing request requested required restrict return reusable rewrite run runs runtime same satisfy say scenarios scenes scope secret see sending service services set shared shielding shoots should sibling simple simpler simplest since singletons slightly so some somehow space special specialized specific specified splits stack stamp stamptext start starts sticking still storage stored string stuff success sugar suitable summarize syntactic syntactically syntax table table-bordered take teachers tell template text that the them then there therefore these they thick this through time tinfoil to together token top touppercase traces track trip turn two type types under unicorn unicornlauncher unicornlauncherfactory unicornlauncherprovider unicorns union unless unlike up url use use-case used uses usetinfoilshielding using usually value values var various vary ve verbose version very via want was we web well what when where whether which while whose will window wire wired wires with without word work works would wrap write writing yes yet you your zero", + "members": "" + }, + { + "path": "guide/scope", + "titleWords": "Scopes", + "keywords": "$0 $apply $broadcast $compileprovider $destroy $digest $emit $evalasync $http $injector $interpolate $interval $rootscope $scope $timeout $watch $watchcollection about above access accounted achieves action added additional after against agnostic all allow allows already also amount an and angular any api apis application applications applied applies approach arbitrarily are arranged arrangement array arrive as assert assign assignment assigns associated asynchronous asynchronously at attach attached attempts auto automatically based be because been before begins behavior being below benefit between bootstrap both bound boundaries broadcasted browser but button by call callback callbacks called calling calls can captures care cases categories cause causes center change changed changes characteristics checked checking child children class classical click clicked clicks cntl coalesces code collection collections collector common compares compilation compiler completes components considerations console contents context control controlled controller controllers copies copy copying correctly corresponding create created creates creating-custom-directives_demo_isolating-the-scope-of-a-directive creator current currently custom cycle data data-binding data-model debugger debugging define defined defines definition delay delayed demonstrates department depending depicting depths describe desirable destroy destruction details detect detected detection detects diagram differ different digest directive directives dirty discuss distracted do documentation does doing dom done double-curly during each ed effect efficient either element elements emit emitted empty enclosing end enter enters es etc evaluate evaluated evaluates evaluating evaluation event event-loop events exactly examine examines example example-example33 example-example34 example-example35 exception execute executed executes execution exits expect expensive explanation explicit expose expression expressions external extra fall fashion field finishes fires first flickering flow followed following for force found frame from full function functions garbage gets given glue greatly greet greeting guarantees guide handlers handling has have held hello here hierarchical hierarchies highlighted highlights how however html if illustrates img immediately implementing implicitly important improves in information inherit inheritance inherits input inside inspect instances instead integration interact interaction interacts interest interpolation into invoked involves is isolate isolated isolates it items iterating iteration its javascript js just keep keeps key keydown kinds known last later leaves library life limit linking list listener listeners listens location locations logically longer looks loop loops made magnitude maintained make makes matches may meaningless means memory method methods mimic mind minimize model models modifications modifies modify more most multiple must mutate mutation mutations mycontroller name necessary need needed needs nested network new ng ng-app ng-click ng-controller ng-model ng-repeat ng-scope no node normal not notice notification notified notifies object observation observe observed observing occur of on once one only operation operations or orders other outside overview own padding-bottom padding-left parallels parent parents partials passed performance performs phase place placed places png point portion powerful pre-filled pressing previous process processing produces propagate propagates propagation properly properties property prototypical prototypically provide providing pull-right purposes queue re re-rendering re-renders reach reached read realm reason received receiving reclaimed red reference refers reflect register registration related removed render rendering renders reordered repeater required responsibility result retrieval retrieve retrieved retrieving returned returns right root running runtime same say sayhello schedule scope scopemock scopes searches see seen select selected separation server services set sets settimeout several shallow shared should similar similarly since single situations slower slowness smaller so some source-of-truth specific splits src stabilizes stack state stategy stimulusfn stop story strategies strategy structure style such suffers switches synchronous system taken template templates test testability testing text than that the their them then these they things think third-party this three through throughout timer to toequal traversal tree true turn two type typically unaware unless unlikely until up update updated updates us use used user username using usually value values var variable via view waiting waits was watch watches watching way we well what when whenever where which while whole widgets will wish with within without work working world would write xhr you your", + "members": "" + }, + { + "path": "guide/security", + "titleWords": "Security", + "keywords": "$eval $sanitize $sce $scope about above access against allow also an and angular angularjs any application arbitrary are as at attacker attackers be because before best better bindings bootstrap bootstrapped brittle build but by can cannot cause change client client-side code consider content contextual create csp css design directive disallowed do document doing don double-curly dynamically easy edit email escaping etc example execution explains expression expressions features for from general generate generating global guide however html if in index input inside instance instead intended into introduce is issue issues it javascript keep language long maintain makes may mind mix mixing modify ng ngsanitize not nothing of ok on only org output overview partials please points policy possible potential practices processed proper reasons recommend rely report reporting responsibilities run sandbox sandboxed sandboxing security see separation server server-side should some state stop stopping strict such template templates templating that the them then there this through to unintended urls us use used user users using vectors way we who window would xss you your", + "members": "" + }, + { + "path": "guide/services", + "titleWords": "Services", + "keywords": "$http $inject $injector $interval $location $log $on $provide $rootscope $route $routechangesuccess $scope $window above across add after alert alert-danger alert-info alert-success all allows also always an and angular angularjs annotate annotation any api app application applications are args argument array as auto automatically batchlog batchmodule be beforeeach below body both browser built-in but by callcount called can care change checking class clear code codebase com component config console constructs controller convert core create createspy creating creating-services current custom declare declaring define dependencies dependency dependent depends determine developers di directive don each even every example example-example36 example-example37 expect explicit explicitly factory filter first flushed following for free from function functions generated generates get gets guide has have hevery html identifiers if implicit in inject injectable injected injection injector inline inside instance instantiated instantiates instead into is it its jasmine javascript js just lazily length let like ll log logged logs memory message messagequeue messages methods minifying mock module modules monitors more most mostrecentcall mycontroller mymodule name names ng ngmin ngroute not notation note notification notifications notify null object objects of offers often on one only or order org organize other our out overview own parameter partials periodic plan practice prior property push queued rather real reference register registered registering related renamed represents rest return returned rewrite routetemplatemonitor same seconds service serviceid services several share shinynewserviceinstance should show shown signature single singletons specifies specifying spy start substitutable subsystem such takes technique techniques template test testing tests that the their them third this three to toequal together tohavebeencalled tohavebeencalledwith tool topics two typically unit unless use used useful uses using value var variable various via want when wikipedia will wired with within workflow you your", + "members": "" + }, + { + "path": "guide/templates", + "titleWords": "Templates", + "keywords": "$interpolate $route an and angular angular-specific api app are attribute attributes augmented augments bar based bind bindings body brace browser built-in button buttontext can changefoo code combines complex component configuration consists contained contains controller controls css curly curly-brace data directive directives display dom double dynamic eight element elements existing expression expressions file files filter filters following foo for form formats forms from guide html in index information input is js just load located main markup model more multiple mycontroller ng ng-app ng-click ng-controller ng-model ngcontroller ngroute ngview notation of on one or overview page partials passed reference related render represents reusable sees segments separate service seven shows simple snippet src steps string tag technique template templates that the these this to topics tutorial types use user using validates value view views with within wrapped written you", + "members": "" + }, + { + "path": "guide/unit-testing", + "titleWords": "Unit Testing", + "keywords": "$compile $controller $digest $filter $filterprovider $rootscope $scope abc ability about above abstractions access actual actually add addclass advantage after agreateye all allow almost also an and angular another answer any app append appended application applications apply approach appropriate are arguments arises around arrive as ask assert asserting assumptions at attributes available avoid aware bad basic be because becomes before beforeeach below binds bits block body bound built built-in but by call called calling calls can cares chance change check class classes code com come comes comment comment_node comments compilation compile compiled compiler complete complex components concerns consider containing contains content contents contexts controllers cope correct correctly could create created creating creation creator custom data dependencies dependency dependency-injection describe developers di did different differs difficult directive directives directory div do document does dom don dowork during dynamically each easier easy element element-transclude element_node elements elementtransclude else empty encapsulating end ensure entire evaluated everything ex1 example excuse executes execution exists expect explanation expression external extraction failures fake features feel filter filters find fire flame follow following for forced forget format formatting forward four fragment from function functionality functions fundamentally further get getting global going got grade great guide guidelines handed happen happening hard harmed has have having help here hevery hierarchy hold how however html http idea if ignore implies important in individual inject injection injector input insert inserts instance instantiate instead intercept into is isolate issue issues it its jasmine javascript js kind known language last length let lidless like likely linking list load location logic look look-up looking lose make makes making manipulates manipulating manipulation many matching may medium method mind mix mock mockxhr model module monkey most msg much mutated myapp myclass mymodule name names need needed needs network new ng ng-transclude no node nodetype nor not note nothing notice now nutshell obvious of often oldservicelocator oldxhr on one only onreadystatechange open operator options or order origin other otherwise our out outside over overview parameter partials pass passed passing password passwordctrl patch patching pc permanently piece pieces place point power pre-compile preferred present problem problematic project provide provided purposes pwd question questions quotes random rather readable reason reasons references registry related remove removeclass removed render rendered rendering replace replaced replaces request requires reset resetting resort resorting response responsibility responsible restrict resulting results retrieve return returned right root run same sample say scope see seem send separated separates separation server service servicelocator serviceregistry services set several shorter should shows sibling simple simplifying simply simulate since singleton singletons site size so solved some sort sorts span specially start state still store story straight strength strictly strong strongly such surfaces tag tags take tells template templated templates templateurl test testability testable testing tests text than that the their them then there these they thing things think this through throughout thus times to tobeundefined tocontain toequal transclude transclude-directive transcluded transclusion transform translude-directive treated tried true try type typed typical under underscores unique unit unit-testing units untestable unwraps up url us use used user uses using val var variable variables verify very via view wait want watches way ways we weak well well-known were what when where which while whoever why will wish with within without would wrapped wreathed write writing written wrong xhr xhrmock yes you your", + "members": "" + }, + { + "path": "misc/contribute", + "titleWords": "Develop", + "keywords": "_no about access account add administrator afterwards again ahead alert alert-warning all an and angular angular- angular-scenario angularjs any application are artifacts as autotest available based basic be because before between bower browser browsers browsers_ bsd build building building-angularjs bundle by can capture cd change chrome chromecanary class click client-side clone code com command command-line complete components configure consists console containing contains contents continuously contribute correct create creates debug default dependencies depending describes desired develop development different directories directory distributable docs document documentation during either elevated end end-to-end end2end enter environment etc every execute explains fails file files firefox follow following for forking forking-angular-on-github from generate git github globally go good google grunt grunt-cli guide guidelines have higher how however html http https if in included information install installed installing installing-dependencies instance instructions integration into invalid io is it jar jasmine java javascript js just karma learn links linux local locally located machine made main make manage may md mechanics message might min minified minify misc mode more multiple must need needed node non-minified note npm of often on once open opera or oracle org osx other our output overview own package packages page partials please pre-configured pre-packaged preconfigured productive project prompt protractor purpose re re-run read release remote repository root run runner running running-a-local-development-web-server running-the-end-to-end-test-suite running-the-unit-test-suite safari script see served server serves set shell should simply some source spaces start sudo suite sure symbolic system tasks test testing tests text that the them there this time to tool tools try under unit up upstream url use useful username using variable visit we web webserver will windows with write you your zip", + "members": "" + }, + { + "path": "misc/downloading", + "titleWords": "Downloading", + "keywords": "$resource __ __additional __angular above additional after all allows always an and angular angular-animate angular-cookies angular-loader angular-mocks angular-resource angular-route angular-sanitize angular-scenario angular-touch angularjs animation any anything app application applications apps archive are artifacts as asynchronously available avoid be better browser build by can cdn closure code com compiler compose containing contains contents convenient cookies copy core created deeplinking defaults defined development devices directives directory docs documentation don download downloaded downloading during each earlier easier editor enable end-to-end error even events everything example execute faster file files first following for from fun functionality get google googleapis handy harness have helpers host hosted hosting html https human-readable i18n if implementation importantly in includes including index initial interaction into is it javascript js js__ late lifetime listing ll load loaded loader loading local locale locally location long maintain makes messages min minified minimize misc mocks module modules more multiple navigate need ng ng-app nglocale nifty non-minified non-obfuscated note obfuscated of offline often older on one only opening option optional or order org other our override overview own partials particular point points previous production project quickest re reading recommended released releasing request restful routing sanitize script scripts see server servers service services set should since single size source specific src started still strongly suggest suitable support switch tag template test testing tests that the their them there these this those times to touch touch-enabled two types under unit url urls usage use user using version versioned versions very via view want was way we web which who with work wrapper write writing you your zip", + "members": "" + }, + { + "path": "misc/faq", + "titleWords": "FAQ", + "keywords": "$apply $http $rootscope $scope $watch about above active add adding after against aims all almost already also always an and angular angularjs another any anyone app application applies apply applying apps are array artwork as at attached attack attacks attribution-sharealike authentication authorization available awesome back backend bad based basic be because before being below best better bidirectional big billing bind binding bindings bits boolean bootstrap bootstrapped both brackets break bring browser browsers build built-in bundled but by cache call called calls can canada certain chance change changes channel check checks child chrome class classes client-side closure code com combining common commonly commons communication compatibility compatible compilation compiled complexity compressed conditional conditionally conditions confuse connection consider constantly contact container content contents controller controllers conversely costs counterpart countries course create creates cross-site css currently custom data define definitely definition dependencies dependency depending depends describe design designed desktop details developers development different direction directive directives discount discover do document does doesn dog dom don done download downloading due duplicate duplicating each easily element elements email environment errorclass es escaping especially etc even event events everything evil exactly example exciting exclusive executed existing exists explorer expressions extension extensive extremely fall falls falsy faq features fetch fetched few file files find finished firefox first fit fits flip folks following for form framework freenode frequently from function functionality generally get gets github give global good google greatly ground guide habit habits handful handlers handy happy hard hardware has have heavily heavy hide hiding hierarchy highest highly him holes host how however href html https hundreds identical ie ie8 ie9 if ignored illustration impervious implementation important in include includes including info inherit inheriting inject injected injection inner instead instructions integrated internet into intro ios is iserror isn iswarning it its javascript job jqlite jquery js july just keys language last leads learn legacy level library license licensed life lightweight like likely live ll local locally log logo long look lot magic make makes making manipulation manually many means measure measures milliseconds mind minified misc mobile mocks model modify more most much mutually names namespace native necessary need needed network new ng ng-class ng-class-even ng-class-odd ng-click ng-controller ng-disabled ng-hide ng-model ng-repeat ng-show ng-style ng-switch ngmock no none not note nudge number object observing occasionally of off offers often okclass old on one ones only open-source opera operates or order orders ordinary org other others our out outside overview own page parent partials particular particularly path pattern people performance piece pieces pitfalls plugin point policy possible powerful present presenting problems produces project protection prototypally provide provides purpose put quantity questions rather re react really reason recommend recurring reduce reimplemented related removing reorder repeat repository require retrieving return right root round-trip run running runtime safari sales same schwag scope scopes script scripting second security see seen sees server server-side service set setup several shipping should show showing side similar since situations size smaller snappy so some sometimes somewhat sounds source sparingly speed startup state states stays step stickergiant stickers stop store strings struggling subset substantial sucks suggest suite support supporting sync syntax system systems t-shirts talk technology tell template templating tempted tens terms test testability testable tested than that the their them then there therefore these they thing things this those though thousands three time to tom too top transformation tree trigger truthy try trying two-way typical typically unbind under united unnecessary unported up update updates us use used useful users using usually value values variable variables vary vectors very via view views waive want warningclass was watch way we well what when whenever where whitespace-separated who whole whose why widgets will with within witting work worry would wrap write writing xsrf yes you your yourself youtube", + "members": "" + }, + { + "path": "misc", + "titleWords": "Miscellaneous", + "keywords": "angularjs asked building downloading frequently getting html index links misc miscellaneous overview partials questions started", + "members": "" + }, + { + "path": "misc/started", + "titleWords": "Getting Started", + "keywords": "add all an and angular angularjs api app application ask becoming begin building chance channel check circles clone com complete components concepts conceptual covering covers developer development directives directory do documentation download easy end-to-end environment every expert feature follow following for from further getting google guide had harness have haven here homepage how html if includes js layout list major misc more node of on or org our out overview partials path please presentations project put questions read reference scripts server servers set shows started starter starting steps subscribe syntax template test tests the through time to together top tutorial tutorials up us usage use ve video videos visit vocabulary want watch we web while with work you your youtube", + "members": "" + }, + { + "path": "tutorial", + "titleWords": "Tutorial", + "keywords": "able about access actions against alert alert-info all allow along also alt an and android angular angular-phonecat angularjs animations another any anything app application applications apply apps apt apt-get are as assume at automatically background based be before behaving below better binding bootstrapping bower branch browse browser browsers build building but by called can catalog cd change changes check checkout chrome clash class client client-side clone close code com comfort command commands commit commits common computer conf configuration configured connect consider construction controllers correctly couple create creates current data day debian decide demo dependencies dependency designed details developing development device devices diagram different digging directly directory displaying displays distributions do document does dom don down download drivers during dynamic each easier easy end end-to-end ensure entire environment examples executable executables execute executing exit expected experiments explains extensions faster feedback few file files filter finish first focus follow following for framework from get getting git github give globally go good great guides hack hands-on have height helper hosting hours how href html http http-server https identify if img immediate immediately in including index information injection install installed installer installing instance instructions interact interacting interaction interest into introduced introduction io is isolated it javascript js just karma keeps kept know last learn learning leave lets line link list listening loaded local located logic looking machine main make makes management manager manipulation may means misc model modern modules more most move much name native need needed new nganimate node node_modules nodejs nodejs-legacy not note now npm number of on once only onto open operates operating option or org other our out own package page partials particular parts pass phonecat pleasant plug-ins png port possible practice preconfigured process project prompt protractor provide pull purely pushing re re-run read real really reasons recommended relies remote renames repo report repository requests resources response rest results run runner running scripts security see separate serve server services set setup shorter should side simple simulating since small smaller smarter solution source spend src start started static step straight such sudo suggested suggestions sync system tagged tasks tells template terminal test testing tests than that the them then there these this through time title to tool tools tutorial unit up update-webdriver upon use user using utilities utility v0 version versioning versions very via view views walks want watch way we web web-server webserver when whenever whether which while whole width will window windows wire with without work working works would writing you your", + "members": "" + }, + { + "path": "tutorial/step_00", + "titleWords": "0 - Bootstrapping", + "keywords": "$injector $rootscope __ _blank add added adding advanced affected all along already an and angular angular-phonecat angular-seed angularjs any app application apps are as at attribute attributes auto automatically be become being below binding bindings bootstrap bootstrapped bootstrapping bower bower_components browser build bundled but by callback camelcase can capabilities cases cause caused change changes charset checkout class click code com come command compile consider constructed containing contains content context continuous core corresponding create created css current currently custom data defined demonstrates denoted dependencies dependency detects developers developing development diagram directive directives directory displays do doc-tutorial-nav doing dom done double-curlies double-curly downloaded downloads during easy efficient element elements empty en entire evaluate evaluated evaluation event events every example exciting executed expected experiments expression familiar features file files finds flag folder following for found framework freedom from fully future git gives global go guide happen haven here how href html http https if images img imperative implement important in incoming index injection injector insert install into is it its javascript-like js json just key lang learn let line ll loaders looks lost made manual math might model modified most mouse must my name-with-dashes named navigate need new next ng ng-app ngapp not nothing now npm number occurs of ok on once one one-time only open or our page partials phone phonecat place png portion pre-configured press processed processing progress project projects purposes rather ready reflect registers rel removed repeat represents resets response result root run running scope script see seed server servers should shown simple snippet so some soon source src start starting static step step-0 step_00 step_01 steps structure stylesheet such suitable summary tab tag target tell tells template templating terminal text than that the them then there these things this to tools treated try tutorial two typical typically updates updating use used uses using utf-8 very view wait was way we web what when whenever which will window with within working workspace yet you your", + "members": "" + }, + { + "path": "tutorial/step_01", + "titleWords": "1 - Static Template", + "keywords": "about add adding addition an and angular angularjs any app basic can cell code contains create data display doc-tutorial-nav doc-tutorial-reset dynamically enhances examine example experiments fast faster for generate generation go got how html illustrate in index information into just learn let list more next nexus now number of order page partials phones purely result same set some standard static step step_01 step_02 summary tablet template that the then this to try turn tutorial two use uses we wi-fi will with xoom you your", + "members": "" + }, + { + "path": "tutorial/step_02", + "titleWords": "2 - Angular Templates", + "keywords": "$controller $rootscope $scope __ __controller__ __model__ __template__ __view__ about add added adding additional alert alert-info all allows along also although an and angular angular-seed angularjs anonymous another any app application appropriate apps are array as ask assigned at attaches attribute automatically available background be before beforeeach behavior-driven being between bind binding bindings bootstrapping bower_components braces browser but by called can case change changes changing chrome class code component components concept concerns connected constructed constructs contain contained contains context controller controllers could create created critical crucial ctrl curly data data-binding declared decouple defined demonstrates denote descendant describe design developed developers development diagram directive do doc-tutorial-nav doc-tutorial-reset docs documentation does doing don dots dynamic dynamically each easy element encourage encouraged ensure establish example executed execution expect experiments expressions extra extremely fail fast faster features file files following follows for framework from full function functions generated generation github global glue go going got guide hard-coded have hello here home how html http id if ignore img in incrementing index info information inject injected install installed instance instantiate instantiated instantiates instead into io is isn it its jasmine javascript js just karma keep learn length let limited list literal little ll load located logic made make makes many means memory mind minimize minimized mock model model-view-controller models module more motorola much name namespace necessary need new next nexus ng ng-app ng-controller ng-repeat ngcontroller ngrepeat non-global not notation note notice now npm number object occur of on one opened or org os our output page parameter part partials passed pattern phone phonecatapp phonelistctrl phones plays plugins png point points practice pre-configured prefer presentation previous project projection property prototypical provides providing records references referring reflect reflected refresh refreshes registered repeater replaced require rerun results retrieve role run running same says scope scopes search secs see seen separate separating server service set should similar simple simply since slow snippet so socket software some source specified specifies src start started starting step step_02 step_03 structure success such summary sure sweet sync syntax table tablet tag takes tell tells template templates terminal test testing tests text that the them then there this three through time to tobe together tpum9dxclhtztkbaeo-n try tutorial two unit up update updates us use uses using v1 value var verifies verify very via view views want was watch way ways we web when whenever where which wi-fi wikipedia will with within work world wrapped write writing wrote xoom yay yet you your", + "members": "" + }, + { + "path": "tutorial/step_03", + "titleWords": "3 - Filtering Repeaters", + "keywords": "__ __move__ __remove__ about actually add added adding after again alert alert-info all also although an and angular any apis app appear application are array as at automatically available bar be because beforeeach being better bind binding binds block body both box browser but by can capability cause change changes changing choice class clear code col-md-10 col-md-2 com common completely components container-fluid contains content-- controller controllers core correctly could count create criteria curlies current data data-binding declaration defined demonstrates depending describe detects developer diagram did directive directives display displayed do doc-tutorial-nav doc-tutorial-reset dom double easily easy effects efficiently element elements end end-to-end ensure enter even every example execute exit expect expected experiments eye fail feature features file filter filtering fine first following follows for foundation friend from full fully function functional gallery get gettitle github go good google has have how however html http if img immediately implemented in included index input install installed into invisible io is issuing it jasmine javascript js just karma keeps last laying learn learned let lets like list lives ll loading loads look looks lot made manipulation match might model motorola much must name need new nexus ng ng-app ng-bind-template ng-controller ng-model ng-repeat ngbind ngbindtemplate ngcontroller ngrepeat no not note notice noticed now npm number of on one only or other our page parent partials pass perfect phone phonecat phonecatapp phonelist phonelistctrl phones png prior process protractor query quickly re-run read readable really records reflect regressions reload repeater repeaters rerun response result returned row run runner running same scope search second see sendkeys served set should simple slow snippet so solution something sorting split src standard start state stays step step_03 step_04 suite summary sure sync syntax tag template templates terminal test testing tests text that the their these they think this those though title to tobe together tomatch transparent try tutorial two type types unit unlike up update-webdriver updated updates use used user uses using value var variable ve verifies verify very via view want was we web-server webdriver what when which while will wired wiring with within won work works would write written you your", + "members": "" + }, + { + "path": "tutorial/step_04", + "titleWords": "4 - Two-way Data Binding", + "keywords": "$controller $scope __ about add added adding addition age all allows alphabetically an and angular api app are array as assertions at attention automatically be because before beforeeach between binding blank bloated block both box browser by can cause chained changes class click code column construction control controller controllers copies copy correctly create creates creating css ctrl current data data-binding dataset default dependency describe diagram direction discussed display displays do doc-tutorial-nav doc-tutorial-reset doing dom down drop drop-down dynamic each element elm end-to-end example executed expect experiments extract fast faster feature filter first following for from function further generation getnames gettext go good got had have here how html if img implemented in index injection input into is it items its jasmine job js just karma learn length let letting line list listed ll loaded look made magic make manipulation map mechanism menu model modified module motorola name named narrow necessary new newest next nexus ng ng-model ng-repeat no not notice now npm of opposite option options order orderby ordering orderprop our output parent partials phone phonecat phonecatapp phonelistctrl phonenamecolumn phones pick picked png possible process property protractor provided query record remain remove reordered reorders repeater rerun rest return returned reverse run scope search secs section see select selected sendkeys services set sets shared shorter should snippet so sort sorting src statement step step_04 step_05 success summary symbol tab tablet takes talk template temporarily test tested tests text that the then this time to tobe toequal together turn tutorial two two-way ui uninitialized unit unknown unordered until update updated used user users uses value var verified verifies via view way we well when whenever which wi-fi will wiring with work working works would xoom you your", + "members": "" + }, + { + "path": "tutorial/step_05", + "titleWords": "5 - XHRs & Dependency Injection", + "keywords": "$controller $http $httpbackend $inject $new $q $rootscope $scope __ able access accessed add age all allows also an and angular angular-mocks angular-provided annotating annotation annotations anonymous any anything apis app apps are arguments array as asking assertions assign associated asynchronous at attach avoid backend be because been before beforeeach begin begins being best between binding bit both bottom browser building built-in but by call callback called calling can care causes child class code collisions come common complicated components configure conflict considered constructed constructing contains control controlled controller controllers convention correctly corresponding could coupled create created creating ctrl data dataset deal decide declare default definition defy depend dependencies dependency describe detected di diagram displayed do doc-tutorial-nav doc-tutorial-reset documentation doesn done droid dynamically each easy enough environment every everything exactly example executed exist exists expect expectget experiments explanation facilitates fact fake fetch fetched few file filter finally first flush flushing followed following follows for format from front full function generated get gl global go going got guarantees guide handle hard-coded harness has have having helper helps here holds how however html http id identify if ignores images img implementation in incoming index infers inject injected injection injector injects inline inspect instances instead into is isolated it its itself jasmine javascript js json jsonp just karma kind known larger leading learned let life limiting links list ll load loaded look loosely make makes managed may method methods might mind minification minified mock model models modified module more motoblur motorola motorola-defy-with-motoblur name names namespace naming native necessary need new nexus ng ngmock nightmare not note notice now number object of often on one onward operations operator or order orderby orderprop other our output overcome own parameter parameters parsed partials passing phone phonecat phonecatapp phonelistctrl phones png point pre-process prefix presentation prevent private problem production project promise properties property provide provided provides providing queue re ready received recreated registering relative request requests resolved respond responds response responses returned returns sake same sample scope scratch second secs see separate server service services set several should significant simplicity simply since single snippet so some splice src started starting starts state step step_05 step_06 stored string strings style subsystem success summary tab takes tell test testing tests that the them themselves then there these they this three throws thumbnail to tobe tobeundefined toequal trailing train trained transitive tutorial two underscores unit until up upon url us use used uses using value var variable verify verifying version way ways we web well well-structured were what when where which why will with without work would write xhr xhrs you your", + "members": "" + }, + { + "path": "tutorial/step_06", + "titleWords": "6 - Templating Links & Images", + "keywords": "__ about access add added additional address all also an and angular app applications are as attribute before binding brace browser can catalog chance chrome class click confirm contains content correct create css data defy detail directive directory display doc-tutorial-nav doc-tutorial-reset done double-curly dynamically each easy element end-to-end evaluate expect experiments expression extraneous file filter fire firebug first for from function future generate generating getlocationabsurl go had has have here hits how href html http id ids if image images imageurl img implement in indeed information initiating inject inspecting inspector invalid is issue it jpg js json layout lead learn li links list literally location logs makes making markup model motoblur motorola motorola-defy-with-motoblur multiple name new next nexus ng ng-repeat ng-src ngsrc note now now-familiar nowhere npm of old only or orderby pages partials phone phones plain point prevents protractor query record regular render replace request rerun run see sendkeys should snippet soon specific specified split src step step_06 step_07 steps subsequent such summary tag template templates templating test tests that the then there this thumb thumbnail to tobe tools treating tutorial unique upcoming url urls use used using valid values var verify views we web webserver which will with would you", + "members": "" + }, + { + "path": "tutorial/step_07", + "titleWords": "7 - Routing & Multiple Views", + "keywords": "$http $route $routeparams $routeprovider $scope __ able about above add added adding additional address again against age alert alert-info alert-warning all allow also amd an and angular angular-mocks angular-phonecat angular-route angularjs any anything apis app appears application applications apps are argument array as asked associated at attribute automatically batman be because becoming before beforeeach behavior below binding bookmarks bootstrap bootstraps both bower bower_components browser build building but by call called can captain carries case changes class click client code col-md-10 col-md-2 com common compatible complex component config configuration configured configuring conjunction construct constructed contain container-fluid containing content-- control controller controllers core correct could create created creates creation current currently data declaration declared deepen define defined defines definition definitions dependencies dependency depending depends describe description detail detailed details devices di diagram directive directives display displayed distributed div do doc-tutorial-nav doc-tutorial-reset doesn don download each easy either element empty en end-to-end even everything example existence expand expect expected experiments expose exposes expression extra extracted fact feature fetching few file files filter find fit following follows for forward fragment framework from fulfill function functionality functions get getlocationabsurl gettext global globally go goals going growing grows guide happens has hash have hero history holds homepage how however href html http https id if imageurl img implement implemented important improve in include included independent index information inheritance inject injected injection injector install installed instances instantiates instead into io is it its itself javascript jquery js json just know lang larger layout lazily lazy learn let lets license line link linking list listing lists live ll load loaded loading located location major makes making managed match matched matches messy method mit model module modules more most moved multiple must name navigate navigation necessary need new next nexus-s ng-app ng-model ng-repeat ng-src ng-view ngroute ngview none not notation note nothing notice noticed now npm object objects of on one only open opposed or orderby ordering orderprop org organization other otherwise our out own page parameter part partial partials passed perfect phone phone-detail phone-list phonecatapp phonecatcontrollers phonecatctrl phonedetailctrl phoneid phonelistctrl phones placed placeholder png preconfigured previous private probably problem project proper properly property proton protractor provide provided provider providers provides query quickly quite re ready redirect redirected redirection redirectto refactor register relatively removed removing rendered replaced request require required rerun reused role root route routes routing row run runtime same scope script search second see separate separately service services set shadow shadowing should show shown side single slowly small snippet so solve some sort specific specified specify split src starter starting state step step_07 step_08 steps stub style success summary systems tags tbd tell tells template templates templateurl test tests that the their then there these they thing this three thumb thumbnail thus to tobe todo together totally triggers true try turn tutorial two understand understanding unless up updates url urls us use used user users uses using usually utilize value var variable variables various ve verify version very via view views visible want was way we what when where which wikipedia will wire wired with wonders work works would wrote you your zoro", + "members": "" + }, + { + "path": "tutorial/step_08", + "titleWords": "8 - More Templating", + "keywords": "$controller $http $httpbackend $new $rootscope $route $routeparams $scope __ added addition additionalfeatures also and android angular api app as availability been beforeeach binding bindings browser by can class click clicks communications comprise construct contains contour controller ctrl current custom data describe describes description detail details diagram directory display displayed doc-tutorial-nav doc-tutorial-reset each end-to-end executed expand expect expectget experiments extracted features fetch field file files filter flash fleshed flush following for from function get gettext github has heading how html http images img implement in information into io is it jpg js json karma learn line list lists ll markup model module more name navigates near networks new nexus nexus-s ng ng-repeat ng-src ngrepeat none note now npm of on one os our out output own page partials phone phone-detail phone-specific phone-thumbs phonecatapp phonecatcontrollers phonedetailctrl phoneid phonelistctrl phones place placeholder png proceed project properties protractor ram replaced request rerun respond route run same scope secs see service should show similar snippet specs src step step_08 step_09 storage structure style success summary tab tbd template templating test tests that the these this thumbnail to tobe tobeundefined todo toequal tutorial ui unit url use used user using var various verifies view way we when where which will with works write wrote xyz you your", + "members": "" + }, + { + "path": "tutorial/step_09", + "titleWords": "9 - Filters", + "keywords": "__ access add also an and angular any api app appended are as bar baz be before beforeeach binding bindings boolean built-in call can cap certain characters checkmark chosen code combine component connectivity convert create cross custom date dependency describe details display displayed doc-tutorial-nav doc-tutorial-reset easy either element employ enhance evaluates execute executed expect experiment experiments expression false features file filter filtered filters following follows for function further get glyphs go going gps guide have helper how html in include index indicate infrared inject injected injector input into is it js json karma layout learn learned let like lives loads looks lower main mm mock model module must name need new ng-model ngroute not note notice now of one or order other our outlined output own page partials phone phonecatapp phonecatcontrollers phonecatfilters present previous ready register represent return run secs section see should since some src step step_09 step_10 string strings success suffix summary syntax tab template templates test tested tests text that the these this those to tobe true tutorial two unicode uppercase uppercased use used userinput using using-filters-in-controllers-services-and-directives values very want we were what when where whether will with write you your", + "members": "" + }, + { + "path": "tutorial/step_10", + "titleWords": "10 - Event Handlers", + "keywords": "$controller $http $httpbackend $new $rootscope $routeparams $scope __ add added addition alert also an and angular any app appropriate appropriately are as at attribute be because beforeeach below better between bound button by can change changed class click clickable clicked clicking clicks controller controllers could create created css ctrl current data declared default describe desired detail details diagram directive display displays do doc-tutorial-nav doc-tutorial-reset element elmo end-to-end even event expect expectget experiments feature fetch first flush for from function get getattribute great handler handlers have hello how html if image images imageurl img in index inherited is it its jpg js json just large learn let li ll look main mainimageurl method methods model module move name new ng ng-click ng-repeat ng-src ngclick ngsrc none now npm of on one operational order page partials pass passing phone phone-detail phone-list phone-thumbs phonecatapp phonecatcontrollers phonecatctrl phonedetailctrl phoneid phonelistctrl phones place png property protractor re ready refactor registered remains replace rerun respond return returns run same scope second see set setimage several should smaller snippet so src step step_10 step_11 stop style success summary swap swapper template test tests that the this thumbnail thumbnails to tobeundefined todo toequal tomatch tutorial two unit url use user value var verifies verify view way we well when which while will with working world would xyz xyzphonedata you your", + "members": "" + }, + { + "path": "tutorial/step_11", + "titleWords": "11 - REST and Custom Services", + "keywords": "$controller $http $httpbackend $new $resource $rootscope $routeparams $scope __ above access account actual add additionally addmatchers age alert alert-info alert-warning all alone also although an and angular angular-mocks angular-resource angular-route angular-seed angularjs animations any api app application are arguments array arrives as ask at augments automatically be because been before beforeeach between bind bootstrap both bower bower_components but by callback called can case cases change check class client code com compares compatible component conf config configuration conflict contains controller controllers core correctly create ctrl custom data data-binding deal declare declared default defined delete deleting dependencies dependency describe description detail distributed do doc-tutorial-nav doc-tutorial-reset doing don download droid due easier easy equals everything exactly executed expect expected expectget exposed factoring factory fail fetch fetched fetches few file files filled flush folder following for framework from function functionality functions future get globally has have having homepage how html http https if ignores illustrates image images imageurl important improve in include injected install installed instead interacting into invoking io is isarray issuing it js json just karma last layout learn license lines load looks lower-level mainimageurl make makes match matcher may methods mit model modified module motorola must name necessary need new newly-defined nexus ng ngresource ngroute not notice now npm object objects of on only orderprop org our out output own params partials pass passed phone phonecat phonecatapp phonecatcontrollers phonecatfilters phonecatservices phonedetailctrl phoneid phonelistctrl phones place png preconfigured private problem process processing project properties provide provided query ran re ready register released relying replaced replacing represents requests require requires resource resources respond response responses rest restful result return returned returns run running scope secs see separately server service services set setimage setting should side similar simple simplified simply since so solve sometimes sources src standard starter statement step step_11 step_12 sub-controllers success sufficient summary swapper synchronously tab takes tells template test tests than that the them then these thing this to tobe toequal toequaldata true tutorial two understand unit update updates updating urls us use used using value values var verify version versions via view want way we were what when which wikipedia will with without would xhr xyz xyzphonedata you your", + "members": "" + }, + { + "path": "tutorial/step_12", + "titleWords": "12 - Applying Animations", + "keywords": "__ about above absolute active active-add active-add-active active-remove active-remove-active actual add addclass added adding addition adds after alert alert-error alert-info alert-warning all allows also although always amount an and angular angular-animate angular-mocks angular-resource angular-route angular-seed angularjs animate animated animatedown animates animateup animating animation animations another any anything api app append application applied applying are around as ask asset at attach attaching attribute automatically aware background background-color backwards-compatible basically be because become been before beginning being below best between beyond block boolean bootstrap both bower bower_components browsers business but by callback called calling calls can cancelled case causing change changed changes changing class classes classname cleanup click clicking client closing code collapsing com combined common compatible complete completed component configuration conflict consider contained containing contains contents control convention conveyor-belt copy core correctly could cover craft crazy create created cross css css-enabled data declarations default define defined delete dependencies dependency depending described description detail detect developer did directive directives display displayed distributed do doc-tutorial-nav doc-tutorial-reset documentation does doing dom don done download due each earlier easy effect element elements enable end ended enhance ensure ensures enter event example expand expected extra eye fade fade-in fade-out fades feat file files filter final finishes fire fired first float flow fluidly folder for forget found framework from function functionality functions get gets given globally go going good guide handled has have height here hidden homepage hook hooks how however href html http https id idea ie9 if image images imageurl img implement important in include index inserted inserting inside install installed instead into io is isn issued it item items its itself javascript javascript-based javascript-enabled jquery js json jumping just keeping keyframe know known large last later learn leave left let lets libraries library license like linear link list listed listing ll load loaded make manipulating margin-bottom margin-right matching may method mit modern module more most move moved much must name naming naturally necessary need needs nested new newly next ng ng- ng-class ng-enter ng-enter-active ng-leave ng-leave-active ng-mouseenter ng-move ng-move-active ng-repeat ng-src ng-view nganimate ngclass ngrepeat ngresource ngroute ngview nice no nodes none not note notes nothing notice now npm occur occurs of off offset older on once one only opacity operation opportunity or order orderby ordinary org otherwise our out over overflow own padding padding-bottom padding-top page pages parameter parent partials party passed performing phone phone-detail phone-images phone-list phone-listing phone-thumbs phonecat phonecatanimations phonecatapp phonecatcontrollers phonecatfilters phonecatservices phones pixels place platform plays please position positioning positions preconfigured prefixed present previous private problem profile project provided purpose ran range re read reflect registered rel relative relatively released removeclass removed removing render rendered repeat repeat-related repeated repeater reposition represents required rerender result results return right route run running same scope screen scripts see selected separately setimage sets shifting short side signal simple simply since single small snippet so some something specify src standard start started starter starting state step step_12 stop style styles stylesheet suffix summary support sure swapper switching take takes tap tells template that the the_end them then there therefore they thing think thinking this throughout thumb thumbnail thumbnails time times to together top transition transitions trigger triggered true turn tutorial tweak two two-class up updates us use used uses using var vendor-prefixes version versions via view view-container view-frame views visible want was way we web webplatform well what when whenever where which while white wide width will with within without won work working works writing yet you your z-index", + "members": "" + }, + { + "path": "tutorial/the_end", + "titleWords": "The End", + "keywords": "about and angular application apps are at back be bootstrap checkout code com command complete concepts contributing details develop developer developing development end enough especially examples experiment feedback feel for free further git go google guide have hi hope html if in inspired interested is jump just learn learned make message might misc more now of on or our out own partials please post previous project questions ready recommend say see start steps that the the_end this to touched tutorial useful using want was we web when with you your", + "members": "" + }, + { + "path": "api/ng", + "titleWords": "ng", + "keywords": "an and angular angularjs api application available below breakdown by components contains core default directives doc-module-components each essential filters for function high html is itself js level lists loaded module ng of partials services started table testing the this to validity_state_property when within", + "members": "" + }, + { + "path": "api/ng/function/angular.lowercase", + "titleWords": "angular.lowercase", + "keywords": "angular api be converted converts function html lowercase lowercased module ng partials specified string the to", + "members": "" + }, + { + "path": "api/ng/function/angular.uppercase", + "titleWords": "angular.uppercase", + "keywords": "angular api be converted converts function html module ng partials specified string the to uppercase uppercased", + "members": "" + }, + { + "path": "api/ng/function/angular.forEach", + "titleWords": "angular.forEach", + "keywords": "an and angular api array be because become can collection context does each either element expect filters for foreach function gender hasownproperty html in index inherited invoked invokes is it item iterate iterator js key log male method misko module name ng not noting obj object of once optional or over partials properties property push reference specifying that the this to toequal using value values var where which with worth", + "members": "" + }, + { + "path": "api/ng/function/angular.extend", + "titleWords": "angular.extend", + "keywords": "angular api by can copying destination dst enumerable extend extends from function html module multiple ng object objects own partials properties reference source specify src the to you", + "members": "" + }, + { + "path": "api/ng/function/angular.noop", + "titleWords": "angular.noop", + "keywords": "angular api be calculateresult can code foo function functional html in js module ng no noop operations partials performs result style that the this useful var when writing", + "members": "" + }, + { + "path": "api/ng/function/angular.identity", + "titleWords": "angular.identity", + "keywords": "angular api argument be code first function functional html identity in is its js module ng partials passed return returned returns style that the this to transformer useful value when writing", + "members": "" + }, + { + "path": "api/ng/function/angular.isUndefined", + "titleWords": "angular.isUndefined", + "keywords": "angular api check determines function html if is isundefined module ng partials reference to true undefined value", + "members": "" + }, + { + "path": "api/ng/function/angular.isDefined", + "titleWords": "angular.isDefined", + "keywords": "angular api check defined determines function html if is isdefined module ng partials reference to true value", + "members": "" + }, + { + "path": "api/ng/function/angular.isObject", + "titleWords": "angular.isObject", + "keywords": "an angular api are arrays be but check considered determines function html if in is isobject javascript module ng not note null object objects partials reference that to true typeof unlike value", + "members": "" + }, + { + "path": "api/ng/function/angular.isString", + "titleWords": "angular.isString", + "keywords": "angular api check determines function html if is isstring module ng partials reference string to true value", + "members": "" + }, + { + "path": "api/ng/function/angular.isNumber", + "titleWords": "angular.isNumber", + "keywords": "angular api check determines function html if is isnumber module ng number partials reference to true value", + "members": "" + }, + { + "path": "api/ng/function/angular.isDate", + "titleWords": "angular.isDate", + "keywords": "angular api check date determines function html if is isdate module ng partials reference to true value", + "members": "" + }, + { + "path": "api/ng/function/angular.isArray", + "titleWords": "angular.isArray", + "keywords": "an angular api array check determines function html if is isarray module ng partials reference to true value", + "members": "" + }, + { + "path": "api/ng/function/angular.isFunction", + "titleWords": "angular.isFunction", + "keywords": "angular api check determines function html if is isfunction module ng partials reference to true value", + "members": "" + }, + { + "path": "api/ng/function/angular.isElement", + "titleWords": "angular.isElement", + "keywords": "angular api check determines dom element function html if is iselement jquery module ng partials reference to true value wrapped", + "members": "" + }, + { + "path": "api/ng/function/angular.copy", + "titleWords": "angular.copy", + "keywords": "all an and angular any api are array as be can copied copy created creates deep deleted destination elements example-example38 exception from function html identical if including into is it its make module must ng no not null object objects of or partials primitives properties provided returned same should source specified supplied that the then thrown to type undefined updated used was which will", + "members": "" + }, + { + "path": "api/ng/function/angular.equals", + "titleWords": "angular.equals", + "keywords": "all and angular api are arguments arrays as at begin being both but by compare compared comparing comparison consider considered determines domwindow during equal equals equivalent expression expressions false following function html identify if ignored is javascript least matches module names nan ng o1 o2 object objects of one only or partials pass properties property regular represent representation same scope supports textual that the their them to true two type types value values we when with", + "members": "" + }, + { + "path": "api/ng/function/angular.bind", + "titleWords": "angular.bind", + "keywords": "all also angular api application are args arguments as be becomes bind bindings bound call calls can context contrast_with_partial_function_application currying distinguished evaluated feature fn for from function html in is known module ng optional org partials prebound returns self should specified supply that the this to which wikipedia with wraps you", + "members": "" + }, + { + "path": "api/ng/function/angular.toJson", + "titleWords": "angular.toJson", + "keywords": "and angular api be characters contain function html if input internally into json json-formatted json-ified leading module newlines ng notation obj output partials pretty properties representing serialized serializes set since string stripped the this to tojson true uses whitespace will with", + "members": "" + }, + { + "path": "api/ng/function/angular.fromJson", + "titleWords": "angular.fromJson", + "keywords": "angular api deserialize deserialized deserializes fromjson function html json module ng partials string thingy to", + "members": "" + }, + { + "path": "api/ng/directive/ngApp", + "titleWords": "ngApp app", + "keywords": "$injector an and angular angularinit angularjs any api appcontroller application applications as auto auto-bootstrap auto-bootstrapped be below bootstrap bootstrapped can cannot code common compiled contain define dependencies designates directive document each easiest element example example-example39 first for found have html if in information instantiated instead into is load loaded manually module modules more most multiple must name near needed nested ng ngapp not of on one only optional or other page partials per placed resolved root run see should specify tags that the them then this to typically use used using way were when will within would you", + "members": "" + }, + { + "path": "api/ng/function/angular.bootstrap", + "titleWords": "angular.bootstrap", + "keywords": "$injector allow an and angular annotated api app application applications array as be been block bootstrap bootstrapped browser by cannot console created detect directive dom each element end-to-end example-multi-bootstrap first for function guide has html if in injector instances into invoked is it item load loaded manually module modules more multiple must name newly ng ngapp ngscenario-based note of on once only or otherwise partials predefined prevents report results returns root run script scripts see should start strange subsequent tests than that the they this to try up use warning where which will work", + "members": "" + }, + { + "path": "api/ng/object/angular.version", + "titleWords": "angular.version", + "keywords": "about an angular angularjs api as code codename contains current dot following full has html information jiggling-armfat major minor module name ng number object of partials properties release string such that the this version", + "members": "" + }, + { + "path": "api/ng/function/angular.injector", + "titleWords": "angular.injector", + "keywords": "$compile $digest $div $document $injector $rootscope access added after aliases an and angular angularjs api app append application arguments as auto be been block body bootstrapped but by can case compile containing could create creates current currently dependency directive do document element elements end example explicitly extra fairly fn_args following for from function functions get guide has html if implicit in inference inject injecting injection injector into invoke is it jquery js kick label library link list markup module modules must myctrl new ng ng-controller object of off or outside partials party perhaps rare retrieving running scope see services some sometimes that the their then third this to type typical usage use used using var want we well you your", + "members": "" + }, + { + "path": "api/auto", + "titleWords": "auto", + "keywords": "$injector added api auto automatically each fn_args gets html implicit module partials to which", + "members": "" + }, + { + "path": "api/auto/service/$injector", + "titleWords": "$injector", + "keywords": "$inject $injector $provide adding all always an and angular annotated annotating annotation annotations api are argument arguments array as auto be by call calling can change code createinjector defined definition dependency does equivalent expect explicit extracted following for function get have holds html if in inference inferred injection injector inline instances instantiate invoke is item javascript js last load methods minification minified module modules names needed not obfuscation object of on onto parameters parsed partials property provider retrieve return returns service servicea since specified the then these this to tobe tools tostring true types used valid var ways where with work works", + "members": "annotate get has instantiate invoke" + }, + { + "path": "api/auto/service/$provide", + "titleWords": "$provide", + "keywords": "$get $injector $provide accessed add additional also an and angular api are auto be by called calling can cases class components configuration constant contain correct created createinjector examples exposed factories factory finding fn for function functions get given has have helper holds html in individual information instance instantiate instantiated instantiating is it its many methods module more must need new no not number object of often on only options partials property provider providers register registering registers request responsible see service services singleton specifying than that the then there these they to turn using value when which whose will with without wrapped you", + "members": "constant decorator factory provider service value" + }, + { + "path": "api/ng/function/angular.element", + "titleWords": "angular.element", + "keywords": "$destroy $rootscope addclass additional after alert alert-success alias all allows also always an and angular angularjs any api api-compatible apis append are as associated attached attr available be before being bind bindings both built-in but by call called calling camelcase can children class clean clone com commonly compatible contain contents controller cross-browser css current data default delegates destruction directive directly does dom domcontentloaded domelement dummy element elements empty eq event eventdata events extras find fired fires following footprint for found function functionality getcomputedstyles getter goal handlers hasclass having html if implements in inheriteddata injector inline-styles intercepts into is isolate isolatescope it its jqlite jquery limited lite load lookups manipulate methods module most name namespaces needed never new next ng ng339 ngcontroller ngmodel nodes non-isolate not object of off on one only or original parent partials party passes prepend prop provided provides raw reached ready references remove removeattr removeclass removed removedata replacewith retrieved retrieves returns same scope selectors should simply small starts string subset support tag text that the then they this tiny to toggleclass top triggerhandler unbind until up use used val value very walks way which will with wrap wrapped wraps", + "members": "" + }, + { + "path": "api/ng/type/angular.Module", + "titleWords": "angular.Module", + "keywords": "angular api configuring for html interface module modules ng partials setupmoduleloader type", + "members": "animation config constant controller directive factory filter name provider requires run service value" + }, + { + "path": "api/ng/function/angular.module", + "titleWords": "angular.module", + "keywords": "$injector $locationprovider all an and angular api application appname argument arguments as auto available be being blocks bootstrap can collection config configfn configuration configure controllers core create created creating directive directives existing filters first for function further global hashprefix however html if information initialization injector inside is it js just like likely ll load mechanism module modules more must mycoolapp mymodule name new ng ngapp of one only optional or partials party passed place process providers register registered registering requires retrieve retrieved retrieving same service services should simplify specified that the then this to two unspecified use used using value var when with you your", + "members": "" + }, + { + "path": "api/ng/service/$anchorScroll", + "titleWords": "$anchorScroll", + "keywords": "$anchorscroll $anchorscrollprovider $location $rootscope $window according also anchor and any api be by called calling can changes checks current disableautoscrolling disabled element example-example40 function hash html in it match module ng of org partials related rules scrolls service spec specified the the-indicated-part-of-the-document this to value w3 watches when whenever", + "members": "" + }, + { + "path": "api/ng/provider/$animateProvider", + "titleWords": "$animateProvider", + "keywords": "$animate $animateprovider and animations any api be callbacks calls check default doesn dom done enable functional has html implementation in instead js just loaded module ng nganimate of order out partials perform performs provider see src synchronously that the to updates", + "members": "classnamefilter register" + }, + { + "path": "api/ng/service/$animate", + "titleWords": "$animate", + "keywords": "$animate $animator about adding and angularjs animation api as available be by classes click core css dom elements enable enabling for full functions here high-level hooks however html in included insert is javascript learn manipulation module more move must ng nganimate only operations otherwise out page partials perform provides remove removing rudimentary service simple support the this to used visit well which will within", + "members": "addclass enter leave move removeclass setclass" + }, + { + "path": "api/ng/service/$cacheFactory", + "titleWords": "$cacheFactory", + "keywords": "$cachefactory $cachefactoryprovider access all and another api behavior cache cached cacheid capacity constructs created creation destroy example-example41 expect factory following for from get gives html id info into it js key key-value lru methods miss module name new newly ng no nosuchcacheid not object objects of on options or pair partials properties put puts references remove removeall removes returns service set size specified specifies that the them this to tobe tobedefined toequal turns undefined value values var ve we with", + "members": "get info" + }, + { + "path": "api/ng/type/$cacheFactory.Cache", + "titleWords": "$cacheFactory.Cache", + "keywords": "$cachefactory $http and angular another api behave by cache cacheid data directive example expect factory function get html id info inject it js key like module ng object other partials primarily put remove removeall retrieve return script should size store super-cache supercache templates test the to tobeundefined toequal type used value", + "members": "destroy get info put remove removeall" + }, + { + "path": "api/ng/service/$templateCache", + "titleWords": "$templateCache", + "keywords": "$cachefactory $rootelement $templatecache $templatecacheprovider adding angular api attribute be but by cache can consuming containing content descendent directly document does element first for get head html id ignored in included into is it javascript js later load loaded module must myapp need ng ng-app ng-include not of or otherwise partials put quick retrieval retrieve run script see service simply tag template templateid templates text the this time to type use used var via will with you your", + "members": "" + }, + { + "path": "api/ng/service/$compile", + "titleWords": "$compile", + "keywords": "$attrs $compile $compileminerr $compileprovider $digest $element $observe $rootscope $sce $scope $set $transclude $watch about above access accessing accidentally actual advantage after alert alert-error alert-success alert-warning alias aliasing all allowing allows already also always among amount an and angular another any anything api applied apply appropriate are argument arguments around array as asking assigned associated assumed asynchronous at attach attempt attr attribute attributes attrs augment automatic automatically available avoid avoided be because been before behavior being below between bi-directional bind binding bound bracket but by call called caller calling can cannot case cases change changed changes channel child children class classes clone cloneattachfn cloned clonedelement clonelinkingfn comment common communicate communication compilation compile compiled compiler compiles compiling component components comprehensive config configuration console contain content contents context control controller controlleras controllers correct corresponding count create created creates creating creating-custom-directives_creating-directives_template-expanding-directive ctrl current data data-ng-bind deals declaration declared default defaults define defined defines definition depending deprecated derived desirable developer difference different differs directive directivedefinitionobject directivename directives do document does doesn dom done during each eacm easily effects efficient either element elements elm empty entire equivalent error errors evaluated example example-example42 examples exception execute executed execution exist exp expressed expression factory fail false first flag fn following for form found fourth fragment from function functions gentle get gets gettrustedresourceurl given greater guide hand handle has hash hasn have hello here how html iattrs ielement if ignored illustrate imperatively in in-depth including increment infinite info information inherit inject injectable injected inside instance instantiated instead instructions inter inter-communication interpolated interpolation into introduction is isolate isolated it its itself js just keep kinds know last least like link linked linking linkingfn list listener listeners loaded loading local localfn localmodel localname locals locate log logic loop lower major make makes manipulate manual manually many map markup matching maxpriority may migrates modify module most multiple must my-attr my-directive mymodule name names necessary need needs new next ng ng:bind ngbind ngmodel ngtransclude no nodes non_assignable_model_expression normal normalized not notation null number numerical object objects observe of often old omitted on one only optional options or order original other otherinjectables outer overflow overridden own parameter parent parentmodel parents partials pass passed passing phase place please point possible post post-link post-linking postlink practice pre pre-bound pre-link pre-linking prefix prefixed prelink priority private process produces properties property prototypically provided provides put raised rather read reason receives recommended recursively red-on-hover reference referenced reflect reflected registered registering registration release relying removed replace replacement representing request require required resides responsible restrict restricts result results return returning returns reusable reverse right root rule run safe same scope searching section see send service set setup share shared should sibling siblingdirectivename simplified since single so sometimes sort source specific specifically specified specify src stack state still string stringalias strings style subset such supports suspended takes tattrs telement template templateelement templates templateurl terminal testing testing-transclusion-directives than that the their them themselves then there therefore these this through throw time to together transclude transcludefn transclusion transformation transformations transforming tree true two typical typically undefined unspecified until up updated updating upon url use used useful uses using value values var variable variety very via view walking want was watches way ways we well what when where whether which whole widget will with within working works would wrap wrapper x-ng-bind yet you", + "members": "" + }, + { + "path": "api/ng/provider/$compileProvider", + "titleWords": "$compileProvider", + "keywords": "$compileprovider $inject api function html module ng partials provider", + "members": "ahrefsanitizationwhitelist directive imgsrcsanitizationwhitelist" + }, + { + "path": "api/ng/type/$compile.directive.Attributes", + "titleWords": "$compile.directive.Attributes", + "keywords": "$compile all angular api are as attributes between binding compile contains current data-ng-bind directive dom element equivalent functions html in is linking module needed ng ng-bind ng:bind nodesetlinkingfn normalization normalized object of partials reflect shared since state the these treated type values which x-ng-bind", + "members": "$addclass $attr $normalize $observe $removeclass $set $updateclass" + }, + { + "path": "api/ng/provider/$controllerProvider", + "titleWords": "$controllerProvider", + "keywords": "$controller $controllerprovider allows angular api by controller controllers create html is method module new ng partials provider register registration service the this to used via", + "members": "register" + }, + { + "path": "api/ng/service/$controller", + "titleWords": "$controller", + "keywords": "$controller $controllerprovider $injector api auto be but call called can check com considered controller controllers current evaluating extracted following for function github given global html if injection instance instantiating into is it just locals module name ng object of on one otherwise override partials registered responsible retrieve returns scope service simple so steps string that the then this to used using version via which window with", + "members": "" + }, + { + "path": "api/ng/directive/a", + "titleWords": "a", + "keywords": "action additem any api attribute behavior causing change changing creation default directive easy empty href html htmlanchordirective is item links list location modifies module ng ng-click ngclick of or page partials permits prevented reloads so tag that the this when with without", + "members": "" + }, + { + "path": "api/ng/directive/ngHref", + "titleWords": "ngHref href", + "keywords": "an and angular any api attribute attributes be before behaviors broken can chance clicks com combinations contain correct different directive error example example-example43 go gravatar has href html http if in it its like likely link links make markup module most ng ng-click ng-href ngattributealiasdirectives nghref of partials problem replace replaces return shows solves string the their this to until url user using value various way which will with write wrong", + "members": "" + }, + { + "path": "api/ng/directive/ngSrc", + "titleWords": "ngSrc src", + "keywords": "angular any api attribute browser buggy can com contain correct directive doesn expression fetch from gravatar html http img in inside it like literal markup module ng ng-src ngattributealiasdirectives ngsrc partials problem replaces right solves src string text the this to until url using way which will with work write", + "members": "" + }, + { + "path": "api/ng/directive/ngSrcset", + "titleWords": "ngSrcset srcset", + "keywords": "angular any api attribute browser buggy can com contain correct directive doesn expression fetch from gravatar html http img in inside it like literal markup module ng ng-srcset ngattributealiasdirectives ngsrcset partials problem replaces right solves srcset string text the this to until url using way which will with work write", + "members": "" + }, + { + "path": "api/ng/directive/ngDisabled", + "titleWords": "ngDisabled disabled", + "keywords": "absence an and angular api as attribute attributes be because binding boolean browser browsers but button by chrome complementary directive disabled do does element enabled example-example44 expression false for guide html ie8 ies if information input interpolation into is isdisabled it lost make means module ng ng-init ngattributealiasdirectives ngdisabled not of older on partials permanent place presence preserve problem provides put reliable removed removes require scope set shouldn so solves special specification store such the their then this to true truthy values we when will would", + "members": "" + }, + { + "path": "api/ng/directive/ngChecked", + "titleWords": "ngChecked checked", + "keywords": "absence an and angular api as attribute attributes be binding boolean browser browsers by checked complementary directive does element example-example45 expression false for guide html if information input interpolation into is lost means module ng ngattributealiasdirectives ngchecked not of on partials permanent place presence preserve problem provides put reliable removed removes require set so solves special specification store such the their then this to true truthy values we when will would", + "members": "" + }, + { + "path": "api/ng/directive/ngReadonly", + "titleWords": "ngReadonly readonly", + "keywords": "absence an and angular api as attribute attributes be binding boolean browser browsers by complementary directive does element example-example46 expression false for guide html if information input interpolation into is lost means module ng ngattributealiasdirectives ngreadonly not of on partials permanent place presence preserve problem provides put readonly reliable removed removes require set so solves special specification store such the their then this to true truthy values we when will would", + "members": "" + }, + { + "path": "api/ng/directive/ngSelected", + "titleWords": "ngSelected selected", + "keywords": "absence an and angular api as attribute attributes be binding boolean browser browsers by complementary directive does element example-example47 expression false for guide html if information interpolation into is lost means module ng ngattributealiasdirectives ngselected not of on option partials permanent place presence preserve problem provides put reliable removed removes require selected set so solves special specification store such the their then this to true truthy values we when will would", + "members": "" + }, + { + "path": "api/ng/directive/ngOpen", + "titleWords": "ngOpen open", + "keywords": "absence an and angular api as attribute attributes be binding boolean browser browsers by complementary details directive does element example-example48 expression false for guide html if information interpolation into is lost means module ng ngattributealiasdirectives ngopen not of on open partials permanent place presence preserve problem provides put reliable removed removes require set so solves special specification store such the their then this to true truthy values we when will would", + "members": "" + }, + { + "path": "api/ng/type/form.FormController", + "titleWords": "form.FormController", + "keywords": "$dirty $error $inject $invalid $pristine $valid all already an and api are arrays as at being built-in containing control controls creates directive dirty each email error for form formcontroller forms given has hash html if instance interacted invalid is its keeps keys least max maxlength min minlength module name names nested ng not number object of one or partials pattern references required state such that the them to tokens track true type url user valid validation values well where with yet", + "members": "$addcontrol $dirty $error $invalid $pristine $removecontrol $setdirty $setpristine $setvalidity $valid" + }, + { + "path": "api/ng/directive/ngForm", + "titleWords": "ngForm form", + "keywords": "alias all allow any api be but capabilities controller controls determined directive does eac elements example for form formdirectivefactory forms group html if into is it its module name needs nest nestable nesting ng ngform not note of partials posting published purpose related replacement scope server specified sub-group tag the this to under useful validity will with", + "members": "" + }, + { + "path": "api/ng/directive/form", + "titleWords": "form", + "keywords": "action added after alias all allow allows an and angular animation animations any api application-specific applications apps are as associated attribute background be because been behaves browser browsers but button buttons called can cannot child classes classical click client-side color controller css current data default desirable detect different directive directives dirty do doesn double dynamically each element elements enclosing enter example example-example49 execution field fields first following for form formcontroller formdirectivefactory forms full generate generated handle handler has have hitting hook hooked hooks how however html identically if in include input inputs instantiates instead interpolation into invalid is it javascript js keep keyframes linear logic means method mind module more my-form name nest nested nesting ng ng-dirty ng-invalid ng-pristine ng-valid nganimate ngclass ngclick ngform ngrepeat ngsubmit no not of on one only onto or other outer page partials performed prevent preventing prevents pristine provides published reason red related reload removed rendered repeated role roundtrip rules scope sends server set should shows similar simple since so some specification specified specify style submission submit submitted submitting sure than that the then these they this to transition transitions translate trigger triggered triggers two type under unless use useful using utilize valid validated validation validations very way ways well what when which white will within work wrap you", + "members": "" + }, + { + "path": "api/ng/input/input[text]", + "titleWords": "input[text]", + "keywords": "adds all and angular any api as assignable attribute automatically available be binding by changes constraint control controls data data-bind defined does due element elements entered error evaluates every example-text-input-directive executed expected expression expressions false feature for form html if ignored inherited inline input instead interaction is key longer match maxlength minlength module most name never ng ngchange ngmaxlength ngminlength ngmodel ngpattern ngrequired not of offered or parameter partials pattern patterns property published regexp required scope set sets shorter standard text textinputtype than the this to trim true types under use user validation value want when which will with you", + "members": "" + }, + { + "path": "api/ng/input/input[number]", + "titleWords": "input[number]", + "keywords": "adds and angular any api as assignable attribute be changes constraint control data-bind defined does due element entered error evaluates example-number-input-directive executed expected expression expressions for form greater html if inline input instead interaction is key less longer match max maxlength min minlength module name ng ngchange ngmaxlength ngminlength ngmodel ngpattern ngrequired not number numberinputtype of or partials pattern patterns property published regexp required scope sets shorter text than the to transformation true under use user valid validation value want when which with you", + "members": "" + }, + { + "path": "api/ng/input/input[url]", + "titleWords": "input[url]", + "keywords": "adds and angular any api as assignable attribute be changes constraint content control data-bind defined does due element entered error evaluates example-url-input-directive executed expected expression expressions for form html if inline input instead interaction is key longer match maxlength minlength module name ng ngchange ngmaxlength ngminlength ngmodel ngpattern ngrequired not of or partials pattern patterns property published regexp required scope sets shorter text than the to true under url urlinputtype use user valid validation value want when which with you", + "members": "" + }, + { + "path": "api/ng/input/input[email]", + "titleWords": "input[email]", + "keywords": "address adds and angular any api as assignable attribute be changes constraint control data-bind defined does due element email emailinputtype entered error evaluates example-email-input-directive executed expected expression expressions for form html if inline input instead interaction is key longer match maxlength minlength module name ng ngchange ngmaxlength ngminlength ngmodel ngpattern ngrequired not of or partials pattern patterns property published regexp required scope sets shorter text than the to true under use user valid validation value want when which with you", + "members": "" + }, + { + "path": "api/ng/input/input[radio]", + "titleWords": "input[radio]", + "keywords": "angular any api assignable be button changes control data-bind due element example-radio-input-directive executed expression form html input interaction is module name ng ngchange ngmodel ngvalue of partials property published radio radioinputtype selected set sets should the to under user value when which with", + "members": "" + }, + { + "path": "api/ng/input/input[checkbox]", + "titleWords": "input[checkbox]", + "keywords": "angular any api assignable be changes checkbox checkboxinputtype control data-bind due element example-checkbox-input-directive executed expression form html input interaction is module name ng ngchange ngfalsevalue ngmodel ngtruevalue not of partials property published selected set should the to under user value when which with", + "members": "" + }, + { + "path": "api/ng/directive/textarea", + "titleWords": "textarea", + "keywords": "adds and angular any api are as assignable attribute automatically be changes constraint control data-bind data-binding defined directive does due element entered error evaluates exactly executed expected expression expressions false for form html if inline input inputdirective instead interaction is key longer match maxlength minlength module name ng ngchange ngmaxlength ngminlength ngmodel ngpattern ngrequired not of or partials pattern patterns properties property published regexp required same scope set sets shorter textarea than the this those to trim true under use user validation value want when which will with you", + "members": "" + }, + { + "path": "api/ng/directive/input", + "titleWords": "input", + "keywords": "all and angular any api as assignable attribute automatically available be behavior browsers changes control controls data-bind data-binding defined directive does due element entered error every example-input-directive executed expected expression expressions false feature follows for form html html5 if ignored inline input inputdirective interaction is key longer match maxlength minlength module name never ng ngchange ngmaxlength ngminlength ngmodel ngpattern ngrequired not of offered older or parameter partials pattern patterns polyfills property published regexp required scope set sets shorter than the this to trim true types under user validation value when which will with", + "members": "" + }, + { + "path": "api/ng/type/ngModel.NgModelController", + "titleWords": "ngModel.NgModelController model", + "keywords": "$dirty $error $formatters $invalid $modelvalue $parsers $pristine $sanitize $sce $setvalidity $valid $viewchangelisteners $viewvalue $watches achieve actual additional against all already an and any api are arguments array as at attribute automatically bad be bound browser browsers by called can changed changes collaborate contain contains content contenteditable contents control controller convert css custom data-binding deals decide desired different directive directives display does dom each edited element error errors event events example example-ngmodelcontroller execute for format formatter formatting from function functions has hash here how however html html5 if ignored in include inline interacted invalid is it its js keys last least let like listener listening logic make marks model module next ng ng-model ngmodel ngmodelcontroller ngsanitize no not note notice object of older on onclick one or other parsers parsing partials passing pipeline place populate provide provided provides purposefully push reads related remove rendering required result return sanitize service services should shows state still string such tells that the there this through to together touppercase true turn type undefined unsafe update updates use used user using validation validity value values view we well whenever which will with work yet", + "members": "$dirty $error $formatters $invalid $isempty $modelvalue $parsers $pristine $render $setpristine $setvalidity $setviewvalue $valid $viewchangelisteners $viewvalue" + }, + { + "path": "api/ng/directive/ngModel", + "titleWords": "ngModel model", + "keywords": "added after all already an and animation animations any api are as associated attached background basic be been behavior best bind binding binds by can checkbox classes color com control created css current custom depending detect directive directives dirty doesn each element email errors evaluating example example-example50 examples exist exposed expression following for form given has hook hooked hooks how html if implicitly in include including input into invalid is it its itself js keep keeping keyframes linear mind model models module more my-input ng ng-dirty ng-invalid ng-pristine ng-valid nganimate ngclass ngmodel ngmodelcontroller ngmodeldirective note number of on or other parent partials performed practices pristine property providing radio red registering related removed rendered require required responsible scope scopes see select set setting shows similar simple state style such sure text textarea that the these they this to transition transitions triggered try url use using utilize valid validated validation validations validity view way well when which white will with within work", + "members": "" + }, + { + "path": "api/ng/directive/ngChange", + "titleWords": "ngChange change", + "keywords": "api at be change changes coming directive element end evaluate evaluated event example-ngchange-directive expression form from given guide html immediately in input is javascript key leaves model module ng ngchange ngchangedirective ngmodel not note of onchange only or partials present presses requires return the this to triggers unlike upon user value when which", + "members": "" + }, + { + "path": "api/ng/directive/ngList", + "titleWords": "ngList list", + "keywords": "an and api array be between can comma converted converts default delimited delimiter directive example-nglist-directive expression fixed form html if in input into module ng nglist nglistdirective of optional or partials regular should specified split string strings text that the then to used value will", + "members": "" + }, + { + "path": "api/ng/directive/ngValue", + "titleWords": "ngValue value", + "keywords": "angular api as attribute be below binds bound buttons directive dynamically element example-ngvalue-directive expression generating given html input is lists module ng ng-repeat ngmodel ngvalue ngvaluedirective of or partials radio selected set shown so that the to useful using value when whose will", + "members": "" + }, + { + "path": "api/ng/directive/ngBind", + "titleWords": "ngBind bind", + "keywords": "ac alternative an and angular any api attribute be before below bindings box browser but by changes compiles content curly directive directly displayed don double element enter evaluate example-example51 expression given greeting guide html if in instantly instead invisible is it its less like live loading makes markup module momentarily name ng ngbind ngbinddirective ngcloak of page partials preferable preview problem raw replace similar since solution specified state tells template text that the this to typically update use user using value verbose when which while with would you", + "members": "" + }, + { + "path": "api/ng/directive/ngBindTemplate", + "titleWords": "ngBindTemplate bindtemplate", + "keywords": "and any api as attribute be box can cannot change contain content directive element elements enter eval example-example52 expressions form greeting here html in interpolation is it module multiple needed ng ngbind ngbindtemplate ngbindtemplatedirective of option partials replaced should since some span specifies template text that the this title to try unlike watch with", + "members": "" + }, + { + "path": "api/ng/directive/ngBindHtml", + "titleWords": "ngBindHtml bindhtml", + "keywords": "$sanitize $sce also an and angular angular-sanitize any api application are available be bind binding bound by bypass content contextual core creates current default dependencies directive do element ensure escaping evaluate evaluating example example-example53 exception explicitly exploit expression for functionality guide have html if in include including innerhtml innerhtml-ed into is isn js know may module need ng ngbindhtml ngbindhtmldirective ngsanitize note of order partials result safe sanitization sanitized secure see service so strict that the this to trustashtml trusted unavailable under use using utilize value values via way will you your", + "members": "" + }, + { + "path": "api/ng/directive/ngClass", + "titleWords": "ngClass class", + "keywords": "$animate ac add addclass added all allows already an and animation animations any api applied apply are array as basic be before below bindings boolean but by can case changes class class-based classes corresponding css css3 databinding delimited demonstrates depending details different directive do duplicate during dynamically each element end eval evaluates evaluation even example example-example54 example-example55 expression follow for from get guide happens hinder how html idea if in is just key key-value map module more name names naming new ng nganimate ngclass ngclassdirective not object of on one only operates or pair partials particular perform pre-existing previously properties remove removeclass removed representing represents result set should space space-delimited start step still string structure supplementary supports sure that the then they this three to track transitions truthy types upon used using value values via view was ways what when which whose will with won you", + "members": "" + }, + { + "path": "api/ng/directive/ngClassOdd", + "titleWords": "ngClassOdd classodd", + "keywords": "ac an and any api applied array as be can class conjunction delimited directive directives effect eval evaluation exactly example-example56 except expression guide html in module names ng ngclass ngclasseven ngclassodd ngclassodddirective ngrepeat odd of on only or partials representing result rows scope space string take the they this to with within work", + "members": "" + }, + { + "path": "api/ng/directive/ngClassEven", + "titleWords": "ngClassEven classeven", + "keywords": "ac an and any api applied array as be can class conjunction delimited directive directives effect eval evaluation exactly example-example57 except expression guide html in module names ng ngclass ngclasseven ngclassevendirective ngclassodd ngrepeat odd of on only or partials representing result rows scope space string take the they this to with within work", + "members": "" + }, + { + "path": "api/ng/directive/ngCloak", + "titleWords": "ngCloak cloak", + "keywords": "above ac add addition all alternatively and angular angular-csp any api application applied apply are around as attribute avoid be being below best briefly browser browsers but by can cannot caused children class compilation compiled cooperation csp css deletes directive directives display displayed do document during effect element elements embedded encounters example example-example58 external file flicker following for form from head hidden html ie7 in included is it its js legacy like limitation loaded loading making match min mode module multiple must ng ng-cloak ngcloak ngcloakdirective ngcsp none not of page partials permit please portions preferred prevent progressive provide raw rendering result rule script section selector shown small so stylesheet support tagged template that the their they this to undesirable usage use used view visible when while with within work works x-ng-cloak you your", + "members": "" + }, + { + "path": "api/ng/directive/ngController", + "titleWords": "ngController controller", + "keywords": "$route $scope about access accessed accessible accessing adding advantages again also always an and angular any api appear application apply are as aspect attach attached attaches automatically avoiding be behind below binding bindings binds boilerplates business by called can cause changes class classes clearing code common community components contact contains controller controllers current data declaration declare declared declaring decorate definition demonstrates design different directive directly dom don easier easily editing element evaluates example example-ngcontroller example-ngcontrolleras executed expression for form from function functions generally globally greeting guide have here how however html if in included information inheritance injects inside instance into is it itself key logic makes manual markup masking methods mistake model model-view-controller models module more multiple mvc name need ng ng-controller ngcontroller ngcontrollerdirective ngroute note obvious of on one onto option or partials pattern primitives principles properties property propertyname prototypal published reflected removing rendered route scope scopes second service settings settingscontroller1 settingscontroller2 simple since source specifies specifying style styles supports syntax tab template that the there these this through to twice two update used user using values via view when where which will with without worry writing you your", + "members": "" + }, + { + "path": "api/ng/directive/ngCsp", + "titleWords": "ngCsp csp", + "keywords": "active all allowed an and angular angular-csp angularjs annoying api appears application apply applying apps are as attribute autodetect autodetection automatically available be because but cause chrome compatibility compatible console content csp csp-safe css custom data-ng-csp default-src developing differently directive directives do document don element enables error eval evaluate example explicitly expressions extensions fallback first following for forbids form from function functions generate generated getters google harmless how however html if in include includes inject inline into is javascript js like logged make manually mode module mozilla necessary need ng ng-app ng-csp ngcloak ngcsp no non non-csp not note of on only optimization optimized or org other partials policy prevent put raised refused root rules script script-src security self set showing shows slower so some source speed string stylesheet support tag than that the there things this those to tries triggers turn two unsafe-eval up use used uses value violations was we when whichever will work", + "members": "" + }, + { + "path": "api/ng/directive/ngClick", + "titleWords": "ngClick click", + "keywords": "$event allows an any api as available behavior click clicked custom directive element evaluate event example-example59 expression guide html is module ng ngclick ngeventdirectives object partials specify the to upon when you", + "members": "" + }, + { + "path": "api/ng/directive/ngDblclick", + "titleWords": "ngDblclick dblclick", + "keywords": "$event allows any api as available behavior custom dblclick directive evaluate event example-example60 expression guide html is module ng ngdblclick object on partials specify the to upon you", + "members": "" + }, + { + "path": "api/ng/directive/ngMousedown", + "titleWords": "ngMousedown mousedown", + "keywords": "$event allows any api as available behavior custom directive evaluate event example-example61 expression guide html is module mousedown ng ngmousedown object on partials specify the to upon you", + "members": "" + }, + { + "path": "api/ng/directive/ngMouseup", + "titleWords": "ngMouseup mouseup", + "keywords": "$event any api as available behavior custom directive evaluate event example-example62 expression guide html is module mouseup ng ngmouseup object on partials specify to upon", + "members": "" + }, + { + "path": "api/ng/directive/ngMouseover", + "titleWords": "ngMouseover mouseover", + "keywords": "$event any api as available behavior custom directive evaluate event example-example63 expression guide html is module mouseover ng ngmouseover object on partials specify to upon", + "members": "" + }, + { + "path": "api/ng/directive/ngMouseenter", + "titleWords": "ngMouseenter mouseenter", + "keywords": "$event any api as available behavior custom directive evaluate event example-example64 expression guide html is module mouseenter ng ngmouseenter object on partials specify to upon", + "members": "" + }, + { + "path": "api/ng/directive/ngMouseleave", + "titleWords": "ngMouseleave mouseleave", + "keywords": "$event any api as available behavior custom directive evaluate event example-example65 expression guide html is module mouseleave ng ngmouseleave object on partials specify to upon", + "members": "" + }, + { + "path": "api/ng/directive/ngMousemove", + "titleWords": "ngMousemove mousemove", + "keywords": "$event any api as available behavior custom directive evaluate event example-example66 expression guide html is module mousemove ng ngmousemove object on partials specify to upon", + "members": "" + }, + { + "path": "api/ng/directive/ngKeydown", + "titleWords": "ngKeydown keydown", + "keywords": "$event altkey and any api as available be behavior can custom directive etc evaluate event example-example67 expression for guide html interrogated is keycode keydown module ng ngkeydown object on partials specify to upon", + "members": "" + }, + { + "path": "api/ng/directive/ngKeyup", + "titleWords": "ngKeyup keyup", + "keywords": "$event altkey and any api as available be behavior can custom directive etc evaluate event example-example68 expression for guide html interrogated is keycode keyup module ng ngkeyup object on partials specify to upon", + "members": "" + }, + { + "path": "api/ng/directive/ngKeypress", + "titleWords": "ngKeypress keypress", + "keywords": "$event altkey and any api as available be behavior can custom directive etc evaluate event example-example69 expression for guide html interrogated is keycode keypress module ng ngkeypress object on partials specify to upon", + "members": "" + }, + { + "path": "api/ng/directive/ngSubmit", + "titleWords": "ngSubmit submit", + "keywords": "$event action additionally alert alert-warning and angular api as attributes available be binding both but by careful cause class contain current data-action default detailed directive discussion documentation does double-submission enables eval event events example-example70 expression expressions for form guide handlers html if is it may means module ng ngclick ngsubmit not object of only onsubmit or page partials prevents reloading request see sending server submitting-a-form-and-preventing-the-default-action the to together triggered using when x-action", + "members": "" + }, + { + "path": "api/ng/directive/ngFocus", + "titleWords": "ngFocus focus", + "keywords": "$apply $evalasync $event an angularjs api as available behavior calling consistent custom directive during ensure evaluate event executed executes expression fired focus guide html if input is module ng ngclick ngfocus note object on partials scope see select specify state synchronously textarea the to upon using when window", + "members": "" + }, + { + "path": "api/ng/directive/ngBlur", + "titleWords": "ngBlur blur", + "keywords": "$apply $evalasync $event also an angularjs api as available behavior blur consistent custom directive dom during element ensure evaluate event executed executes expression fired fires focus focussed guide has html if input is lost manipulations module mozilla ng ngblur ngclick note object on org partials removing scope see select specify state synchronously textarea the to upon using when window", + "members": "" + }, + { + "path": "api/ng/directive/ngCopy", + "titleWords": "ngCopy copy", + "keywords": "$event api as available behavior copy custom directive evaluate event example-example71 expression guide html input is module ng ngcopy object on partials select specify textarea to upon window", + "members": "" + }, + { + "path": "api/ng/directive/ngCut", + "titleWords": "ngCut cut", + "keywords": "$event api as available behavior custom cut directive evaluate event example-example72 expression guide html input is module ng ngcut object on partials select specify textarea to upon window", + "members": "" + }, + { + "path": "api/ng/directive/ngPaste", + "titleWords": "ngPaste paste", + "keywords": "$event api as available behavior custom directive evaluate event example-example73 expression guide html input is module ng ngpaste object on partials paste select specify textarea to upon window", + "members": "" + }, + { + "path": "api/ng/directive/ngIf", + "titleWords": "ngIf if", + "keywords": "addclass added additionally after also an and animate animations any api are as assigned attribute based be because before behavior bind can case change changing child class clone com common compiled completely container contents copy created css defined destroyed difference differs directive directly display dom effects element elements enter evaluates example example-example74 expression false falsy from guide happens html if implication important in inheritance inherits injected into is it its javascript javascript-prototypal-inheritance jquery js just later leave like lost made method modifications modified module new ng nganimate nghide ngif ngifdirective ngmodel ngshow note of on or original otherwise override parent partials portion position primitive property provide pseudo-classes rather recreates regenerate reinserted rely removed removes restored scope selectors significant something state such than that the their then this to tree truthy used using value variable via visibility when will within you", + "members": "" + }, + { + "path": "api/ng/directive/ngInclude", + "titleWords": "ngInclude include", + "keywords": "$anchorscroll $sce $scedelegateprovider access addition after all an and angular animate animation any api application as attribute autoscroll away bring browser browsers by call calling com compiles concurrently constant content contextual cross-domain default directive disable document domain domains done eca either enable enter escaping evaluate evaluates evaluating example example-example75 existing expression external fetches file for fragment from further gettrustedresourceurl google html if in includes into is it leave load loaded make may module mypartialtemplate new ng nginclude ngincludedirective not occur on onload only or org origin other otherwise partial partials policy protocol protocols quotes refer requests resource resourceurlwhitelist restrict restricted same same-origin_policy_for_xmlhttprequest scroll scrolling set sharing should some source src strict string successfully sure template templates the them this to trustasresourceurl trusted truthy url used value values viewport w3 when whether whitelist without won work wrap you", + "members": "$includecontentloaded $includecontentrequested" + }, + { + "path": "api/ng/directive/ngInit", + "titleWords": "ngInit init", + "keywords": "$filter ac alert alert-error alert-warning aliasing allows along an any api appropriate as assignment below besides case class controllers correct current demo directive eval evaluate example-example76 expression for guide have html if in initialize is make module name ng ng-init nginit nginitdirective ngrepeat of on only orderby parenthesis partials precedence prettyprint properties rather scope seen should special sure test1 than the this to use values with you", + "members": "" + }, + { + "path": "api/ng/directive/ngNonBindable", + "titleWords": "ngNonBindable nonbindable", + "keywords": "ac alone and angular any api appears are be bind binding bindings but by case code compile contains contents could current directive directives displays dom element example example-example77 for have html if ignored in instance interpolation is left locations module ng ngnonbindable ngnonbindabledirective not of one or partials present should simple site snippets tells that the there this to two useful what where which wrapped you", + "members": "" + }, + { + "path": "api/ng/directive/ngPluralize", + "titleWords": "ngPluralize pluralize", + "keywords": "according actual added allows also an and angular any api are as at attribute attributes be better between bound braces bundled but by can case categories category closed configure configuring corresponding count current customization decide deduct default desired dev did directive display displayed displays document documentation dozen ea either en-us evaluated example example-example78 examples experience explicit expression following for found from further guide how html i18n if in including instead into is its john js json kate let locale localization look many mapping mappings mary match matched matches may message messages might module must ng ng-non-bindable ngpluralize ngpluralizedirective no nobody not note notice number numbers object of off offset offsets on one only optional or org other others overridden partials people perhaps person personcount placeholder plural pluralized previous provide providing replace rest result rule rules scope set should show showing shown shows so specifies specify specifying still string strings substituted take taken text that the there these this three throughout to total two up use user uses using value variable view viewing views want we when which while will with would you", + "members": "" + }, + { + "path": "api/ng/directive/ngRepeat", + "titleWords": "ngRepeat repeat", + "keywords": "$even $first $id $index $last $middle $odd above adam added adjacent after age album albums aliases all also amalie an and angularjs any api applied apply are array artist as assign associate associated associates be before below between body boolean built but by can case causing class code collection come conjunction considered contents corresponding creating current currently custom database defined defining details directive directives display distinct does dom each element elements end ending enter enumerate equivalent error evaluate even every example example-example79 explicit exposed expression extending false feature filter filtered filters first flavors footer for formats from function gets given giving have header how html id identifiers identity if implies in including index indicating initializes input instance instantiates instead is it item items iterator its just key last leave length-1 list local long loop makes mapped matter may mean might module more move moving names nesting new ng ng-repeat ng-repeat-end ng-repeat-start nginit ngrepeat ngrepeatdirective ngrepeats no not number object objects odd of offset on once one optional or other out output own parent partials pattern per person placed points position possible properties property provide provided range removed reorder reordered repeat repeated repeater resolve respectively revealed same scope series set should special specified specifying start support supported supports syntax tag template than that the their then these this to track tracking tracking_expression true two type typical unique up use used useful user uses using value variable way well when where which will with works would you", + "members": "" + }, + { + "path": "api/ng/directive/ngShow", + "titleWords": "ngShow show", + "keywords": "$scope about achieved add addclass added adding after alert alert-warning all also an and angular-csp angularjs animation animations another any anything api appear are around as at attribute automatically based be because become becomes before behavior between bigger block bottom by can causing change changing chooses clash class code conflicting consider contents csp css dealing default despite developer directive display don during easily element elements evaluates events example example-example80 except expected expression false falsy file flag for form found frameworks from given guide handle happens heavier here hidden hide hides hiding how html if in include insensitive is isn issue it item just keep left like linear list make matter may mind mode module must my-element myvalue need ng ng-hide ng-hide-add ng-hide-add-active ng-hide-remove ng-hide-remove-active ng-show ngclass ngcsp ngshow ngshowdirective no non none not note of on onto or overridden override overriding own page partials perform please position predefined present property provided removeclass removed removing respectively restating selector selectors set sets show shown shows simple so something specificity states--nganimate style styles styling system that the their then there this time to toggling top transition triggered true truthy used using value values version visible when why will wish with wondering work working works would you your", + "members": "" + }, + { + "path": "api/ng/directive/ngHide", + "titleWords": "ngHide hide", + "keywords": "$scope about achieved add addclass added adding after alert alert-warning all also an and angular-csp angularjs animation animations another any anything api appear are around as at attribute automatically based be because become becomes before behavior between bigger block bottom by can causing change changing chooses clash class code conflicting consider contents csp css dealing default despite developer directive display don during easily element elements evaluates events example example-example81 except expected expression false falsy file flag for form found frameworks from given guide handle happens heavier here hidden hide hides hiding how html if in insensitive instead is isn issue it item just keep left like linear list make matter may mind mode module my-element myvalue need ng ng-hide ng-hide-add ng-hide-add-active ng-hide-remove ng-hide-remove-active ngclass ngcsp nghide nghidedirective ngshow no non none not note of on onto or overridden override overriding own page partials please position predefined present property provided removeclass removed removing respectively restating selector selectors set sets show shown shows simple something specificity states--nganimate style styles styling system that the their then there this to toggling top transition triggered true truthy used using value values version visible when why will wish with wondering work working works would you your", + "members": "" + }, + { + "path": "api/ng/directive/ngStyle", + "titleWords": "ngStyle style", + "keywords": "ac allows an and any api are background-color be below conditionally corresponding css directive element evals example example-example82 expression for guide html in keys module must names ng ngstyle ngstyledirective not object on partials quoted see set since some style the they those to valid values which whose you", + "members": "" + }, + { + "path": "api/ng/directive/ngSwitch", + "titleWords": "ngSwitch switch", + "keywords": "$scope add after against alert alert-info all an and any api appears are as at attribute aware based be before but cache cannot case cases change child chooses class code conditionally container contents default define directive directives display displayed dom downloading ea element elements enter evaluated example example-example83 expression expressions for former found from happens however html if in inform inner inside instead interpreted is it itself just leave literal loading location makes match matched matches matching matchvalue1 matchvalue2 module multiple nested ng ng-switch ng-switch-default ng-switch-when nginclude ngswitch ngswitchdefault ngswitchdirective ngswitchwhen no not obtained of on one or other partials per place placed preserved removed same scope similar simply someval specified statement string structure swap template that the them then there they this times to used value values via visible when which will with within without words works you your", + "members": "" + }, + { + "path": "api/ng/directive/ngTransclude", + "titleWords": "ngTransclude transclude", + "keywords": "ac any api be before content directive dom element example-example84 existing for html inserted insertion is marks module nearest ng ngtransclude ngtranscludedirective of on parent partials placed point removed that the this transcluded transclusion uses will", + "members": "" + }, + { + "path": "api/ng/directive/script", + "titleWords": "script", + "keywords": "$templatecache and any api as assigned be by cache can content directive directives element example-example85 for guide html id into load module must name ng nginclude ngroute ngview of or partials script scriptdirective set so specified template templateurl text that the then through to type used which", + "members": "" + }, + { + "path": "api/ng/directive/select", + "titleWords": "select", + "keywords": "adds alert alert-warning an and angular any api array as assignable at attribute be because below binding bound by can class compares comprehension_expression considered constraint control data data-bind data-binding default demonstration directive dom during dynamically each element elements empty entered evaluates evaluating example example-example86 expression facility following for form forms generate group hard-coded html identified identify if important in instead into is item iterate iteration iterator jsfiddle key label likely list local menu model module most name nested net ng ngmodel ngoptions ngoptionsdirective ngrepeat ngrequired non-string not null object objects obtained of one only option optionally options or over parent partials present property propertyname provides published refer reference represent represented required result see select selected set should single sources specified string the then this to track trackexpr true under use used using valid validation value values variable want when where which will with working you", + "members": "" + }, + { + "path": "api/ng/service/$document", + "titleWords": "$document", + "keywords": "$document $documentprovider $window angular api browser document element example-example87 for html jqlite jquery module ng object or partials service the window wrapper", + "members": "" + }, + { + "path": "api/ng/service/$exceptionHandler", + "titleWords": "$exceptionHandler", + "keywords": "$exceptionhandler $exceptionhandlerprovider $log about action aids angular angular-mocks any api associated browser by cause console context default delegated delegates error example exception exceptionoverride exceptions expressions factory fail function happen hard html if implementation in information instead into is it js just loaded logging logs make message mock module ng ngmock normal of optional overridden override partials return service simply testing tests the they this throw thrown to uncaught unit was when which will with", + "members": "" + }, + { + "path": "api/ng/provider/$filterProvider", + "titleWords": "$filterProvider", + "keywords": "$filterprovider $inject $injector $provide about achieve always an and angular annotated api are be check consists create creating definition demonstrate dependencies dependency developer di expect factory filter filters for forgiving function functions generate greet guide hello how however html in information inject injected injection input instance is it js just module more mymodule name need needed ng of output own partials provider register registered registration responsible return reverse reversefilter salutation same see service should so suffix text the this to tobe transform under uses validity value which with work your", + "members": "register" + }, + { + "path": "api/ng/service/$filter", + "titleWords": "$filter", + "keywords": "$filter $inject api are as data displayed example- expression filter filter_name filters follows for formatting function general html in is module name ng of partials retrieve service syntax templates the to used user", + "members": "" + }, + { + "path": "api/ng/filter/filter", + "titleWords": "filter", + "keywords": "above accept actual against all an and angular any api arbitrary array as be by called can case comparator compare comparison considered contain contained containing contents described determining each element elements equals equivalent essentially evaluated example example-example88 expected expression false filter filtered filterfilter filters final for from function given hand have html if in included insensitive is it item items look match module name negated new ng not object objects of on one or partials pattern phone predicate prefixing properties property result resulting return returned returns selecting selects short shorthand should simple source special specific strict string strings subset substring text that the this those to true used value way which will with write", + "members": "" + }, + { + "path": "api/ng/filter/currency", + "titleWords": "currency", + "keywords": "$1 $inject amount api as be currency current default displayed example-example89 filter for formats formatted function html identifier input is locale module ng no number or partials provided symbol to used when", + "members": "" + }, + { + "path": "api/ng/filter/number", + "titleWords": "number", + "keywords": "$inject after an and api as be case computed current decimal decimalplaces default digit each empty example-example90 filter format formats formatting fraction fractionsize from function html if in input is it locale module ng not number of partials pattern places provided returned round rounded size string text the then third this to will", + "members": "" + }, + { + "path": "api/ng/filter/date", + "titleWords": "date", + "keywords": "$inject ad also am and api as based be by can clock composed considered contain date datetime day dd description digit eee eeee either elements en_us equivalent escape escaped example-example91 filter following for format formats formatted formatting friday fulldate function guide hh hour html if in input is iso it its like literal local locale localizable longdate marker medium mediumdate mediumtime millisecond milliseconds minute mm mmm mmmm module month morning need ng no not number object of offset on one or order output padded partials pm predefined quote quotes recognized representation requested rules second sep september sequence short shortdate shorter shorttime single specified ss sss sssz string surrounding the these time timezone to two used values various versions week with year yy yyyy yyyy-mm-dd yyyy-mm-ddthh yyyymmddthhmmssz", + "members": "" + }, + { + "path": "api/ng/filter/json", + "titleWords": "json", + "keywords": "allows and any api arrays automatically binding convert converted curly debugging double example-example92 filter for function html into is javascript json jsonfilter module mostly ng notation object partials primitive string the this to types useful using when you", + "members": "" + }, + { + "path": "api/ng/filter/lowercase", + "titleWords": "lowercase", + "keywords": "angular api converts filter function html lowercase lowercasefilter module ng partials string to", + "members": "" + }, + { + "path": "api/ng/filter/uppercase", + "titleWords": "uppercase", + "keywords": "angular api converts filter function html module ng partials string to uppercase uppercasefilter", + "members": "" + }, + { + "path": "api/ng/filter/limitTo", + "titleWords": "limitTo", + "keywords": "and api are array as be beginning by containing copied creates either elements end example-example93 exceeds filter from function had html if input is it items length less limit limited limitto limittofilter module negative new ng number of only or partials positive returned sign source specified string sub-array substring taken than the to trimmed value will", + "members": "" + }, + { + "path": "api/ng/filter/orderBy", + "titleWords": "orderBy", + "keywords": "$filter $inject actually alphabetically also an and angular api are array as ascending be being but by call called calling can characters comparator compare comparisons constant control copy correctly defaults descending desired determine element elements empty equivalent example example-example94 example-example95 expression filter first for function getter html if in injecting interpreted is it items itself make manually missing module name next ng no not note notice numbers numerically object of one operator optionally or order orderby ordered orders parameters partials possible predicate predicates prefixed property provided result retrieving returned reverse routine saved sort sorted sorting source special specified string strings substr sure the their then they this to two used using value when where will with you", + "members": "" + }, + { + "path": "api/ng/provider/$httpProvider", + "titleWords": "$httpProvider", + "keywords": "$http $httpprovider api behavior change default html module ng of partials provider service the to use", + "members": "defaults interceptors" + }, + { + "path": "api/ng/service/$http", + "titleWords": "$http", + "keywords": "$cachefactory $http $httpbackend $httpprovider $injector $provide $q $resource $rootscope able abort above absolute abstraction accept accessing add added adding addition address advanced advantage after again all allows also alternatively an and angular anonymous any api apis application applications applies are argument arguments array as aspx assigning assured asynchronous asynchronously at attack augment authentication authorization automatically available backend based basic basis be before being below between body both browser built but by cache cached caching call callback callbacks called calling came can certain chain change changing check client code com comes common communication complete completely conditions config config-time configuration configured consider considerations considered containing contains content-type cookie cooperate cooperation core could counter create creating credentials cross cross-domain currently custom data debugging decide default defaults deferred delete delivery dependencies dependency1 dependency2 describing deserialize deserialized designing desirable desired destructured details detected digest directly do doesn domain each either eliminate enable enabled error etc even example example-example96 expectget explicitly exposed facilitates factories factory fails false familiarize fashion first flag flush follow following for forgery format free from fulfil fulfill fulfilled fully function functions gain general generate get gets getter global globally guarantees handed handling has have head header headers headersgetter higher how html http if important in info information initiated injected instance intercept interceptor interceptors into involved is issues it its javascript js json jsonified jsonp key kind kinds level leverage list locally lowercased made making map matches matter may meaning meant mechanism message method methods milliseconds mock modify module more mozilla much multiple must my-header myhttpinterceptor name necessary need needs new next ng ngmock ngresource not note now null object objects occurs of on one only optional or order org original other otherwise out over override overrides overwrite own parser partials party passed passing patch patterns pending pendingrequests per per-request performing please populate populated post postprocessing pre-configured pre-processing prefix preprocessing prevent previous primarily private processed processing promise properties properties_defaults property protection provide provides purposes push put read readable reads real receive received recommend redirect register registered reject rejection relative remaining remote remove representation representing req request requested requesterror requests requests_with_credentials require required resolved resource respectively response responseerror responseinterceptors responseornewpromise responses responsetype result return returned returns run run-time running runs runtime same section security see send sending sent serialize serialized served server servers service services session set sets setting shortcut should signature similarly simple simply since single site some something specific specified specify standard start status stores strategies string strings strip subsequent succeeds success such supply sure synchronous take takes technique test testing tests text than that the their them then there therefore these they third this threats threw time timeout to token tokens trained transform transformation transformations transformed transforming transformrequest transformresponse transforms transparently true turn turned two type unauthorized undefined under understand unique unit unshift up updating url usage use used useful user using value var verifiable verify version via vulnerability vulnerable was way we web website when whether which while who wikipedia will wish with withcredentials without work wrapper writing x-xsrf-token xhr xmlhttprequest xsrf xsrf-token xsrfcookiename xsrfheadername yet ymvlcdpib29w you your yourself", + "members": "defaults delete get head jsonp patch pendingrequests post put" + }, + { + "path": "api/ng/service/$httpBackend", + "titleWords": "$httpBackend", + "keywords": "$document $http $httpbackend $httpbackendprovider $resource $window abstractions and api backend be browser by can deals delegates directly during higher-level html http implementation incompatibilities instead is jsonp mock module need never ng ngmock ngresource object or partials responses service should swapped testing that the this to trained use used which with xmlhttprequest you", + "members": "" + }, + { + "path": "api/ng/provider/$interpolateProvider", + "titleWords": "$interpolateProvider", + "keywords": "$interpolateprovider and api configuring defaults example-example97 for function html interpolation markup module ng partials provider the to used", + "members": "endsymbol startsymbol" + }, + { + "path": "api/ng/service/$interpolate", + "titleWords": "$interpolate", + "keywords": "$compile $interpolate $interpolateprovider $parse $sce against an angular any api are before binding by compiles compute configuring context contextual data details embedded escaping evaluated exp expect expression expressions for function gettrusted has have hello html if in injected interpolate interpolated interpolation into is it js markup module must musthaveexpression ng no null object order parameters partials passes provided provides refer result return returned returning see service set strict string strings text that the then these this through to toequal true trustedcontext uppercase used var when which will with", + "members": "endsymbol startsymbol" + }, + { + "path": "api/ng/service/$interval", + "titleWords": "$interval", + "keywords": "$apply $interval $rootscope after alert alert-warning always an and angular any api appropriate are at automatically be below between block by call called can cancel checking class consideration controller count created defined delay destroyed details directive dirty do each element every example example-example98 executed explicitly false finished flush fn for forward function functions have how html if in indefinitely interval intervals into invoke is iteration iterations make millis milliseconds model module moment more move must ng ngmock not notification notified number of on or otherwise partials particular promise registering repeat repeatedly resolved return run scheduled scope see service set setinterval should skips sure take tests that the them they this tick time times to trigger upon use value when which will window with within wrapper you", + "members": "cancel" + }, + { + "path": "api/ng/service/$locale", + "titleWords": "$locale", + "keywords": "$locale $localeprovider angular api as components en-us for formatted html id is languageid-countryid locale localization module ng now of only partials provides public right rules service the various", + "members": "" + }, + { + "path": "api/ng/service/$location", + "titleWords": "$location", + "keywords": "$location $locationprovider $rootelement address and api application are as available back bar browser button can change changes clicks current developer exposes for forward guide hash history host html in information into link location makes methods module more mozilla ng object observe of on or org parses partials path port reflected represents search see service set so synchronizes the to url user using watch when with you your", + "members": "$locationchangestart $locationchangesuccess absurl hash host path port protocol replace search url" + }, + { + "path": "api/ng/provider/$locationProvider", + "titleWords": "$locationProvider", + "keywords": "$locationprovider api application are configure deep how html linking module ng partials paths provider stored the to use", + "members": "hashprefix html5mode" + }, + { + "path": "api/ng/service/$log", + "titleWords": "$log", + "keywords": "$log $logprovider $window and api browser can change console debug debugenabled debugging default example-example99 for html implementation into is log logging main message messages module ng of partials present purpose safely service simple simplify the this to troubleshooting use writes you", + "members": "debug error info log warn" + }, + { + "path": "api/ng/provider/$logProvider", + "titleWords": "$logProvider", + "keywords": "$logprovider api application configure how html logs messages module ng partials provider the to use", + "members": "debugenabled" + }, + { + "path": "api/ng/service/$parse", + "titleWords": "$parse", + "keywords": "$parse $parseprovider against also an angular any api are assign assignable be change compile compiled constant context converts embedded entirely evaluated expect expression expressions following for function getter given guide has html if in into is its javascript js literal literals local locals made module name newvalue ng node object of on overriding partials properties represents returned scope service set setter string strings the this to toequal top-level useful user value values var variables whether which will", + "members": "" + }, + { + "path": "api/ng/provider/$parseProvider", + "titleWords": "$parseProvider", + "keywords": "$parse $parseprovider api be behavior can configuring default for function html module ng of partials provider service the used", + "members": "logpromisewarnings unwrappromises" + }, + { + "path": "api/ng/service/$q", + "titleWords": "$q", + "keywords": "$apply $http $q $qprovider $rootscope about access action additionally after alert all allow allowed allows also always an and android angular another any api apis approach are argument as associated assume async asyncgreet asynchronous asynchronously at available avoiding be because been before between browser but by bytes callback callbacks called calling calls can catch chain chaining chains clean-up code com comes common commonjs compatible completes completion complexity composition constructed contains cost could create created current dealing defer deferred derived describes differences do documentation does done easily either else equivalent error errorcallback es3 especially example exceptions execution expect expose extra failed faster features final finally finished first flickering for from fulfillment function functionality functions further get given got greet greeting guarantees handling hard has have hello helps hood html https ie8 if immediately implement implementation important in incremented indication information inject injected inspired instance instead integrated interacting interceptors interested interface into invoke is it its javascript joining js keywords kowal kris length let lexical like ll main make makes many may md means mechanism method might model models modifying module more multiple name names need needed needs new ng not note notification notifies notify notifycallback object objects observation observe obvious of oktogreet on one or org parallel partials parties passed pause payoff performed perspective please point possible powerful processing programming progress promise promisea promiseb promisefinallycallback promises propagate propagation property proposal provide provides purpose reason regardless reject rejected rejection rejects release repaints represents reserved resolution resolve resolved resolvedvalue resolves resolving resources response result retrieved return returns robin run scope section see serial service settimeout shorthand should signaling simulate since single so some soon specification status success successcallback successful supported synchronous synchronously task tasks testing than that the their then there they this throw time times tiny to tobeundefined toequal traditional trouble try two ui unnecessary unsuccessful update updates use used useful using value values var variables very via want was way we well what when whether which why wikipedia will with without word worth would you your zero", + "members": "all defer reject when" + }, + { + "path": "api/ng/service/$rootElement", + "titleWords": "$rootElement", + "keywords": "$injector $rootelement also angular api application applications auto be bootstrap can declared directive either element gets html injector into is it location module ng ngapp of or partials passed published represent retrieved root service the this using was where", + "members": "" + }, + { + "path": "api/ng/provider/$rootScopeProvider", + "titleWords": "$rootScopeProvider", + "keywords": "$rootscope $rootscopeprovider api for html module ng partials provider service the", + "members": "digestttl" + }, + { + "path": "api/ng/service/$rootScope", + "titleWords": "$rootScope", + "keywords": "$rootscope $rootscopeprovider all also an and api application are between changes descendant developer emission event every facility for guide has html mechanism model module ng of on other partials provide root scope scopes see separation service single subscription the they via view watching", + "members": "" + }, + { + "path": "api/ng/type/$rootScope.Scope", + "titleWords": "$rootScope.Scope", + "keywords": "$injector $new $rootscope and api append are as auto automatically be by can child compiled created current default defaults docs1 example executed expect factory for from function handy having hello here how html in inherit inheritance instancecache interact is js key map method module name need newly ng of override parent partials pre-instantiated provided providers provides retrieved root salutation scope scopes service services should show simple snippet src tag template the this to toequal type unit-testing using var welcome when which with world you", + "members": "$apply $broadcast $destroy $digest $emit $eval $evalasync $id $new $on $parent $root $watch $watchcollection" + }, + { + "path": "api/ng/service/$sceDelegate", + "titleWords": "$sceDelegate", + "keywords": "$sce $scedelegate $scedelegateprovider and angularjs api as because behavior blacklists box by can case change common completely configure configuring contextual core customize default delegates escaping etc for function functions gettrusted html in instance instead involve is it little loading methods module need ng numerous of only operations or out override own pain partials provide provides really refer replace resources resourceurlblacklist resourceurlwhitelist service services setting shorthand should strict such templates that the these things this to trustas trusting typically urls used valueof way while whitelists with work works would you your", + "members": "gettrusted trustas valueof" + }, + { + "path": "api/ng/provider/$sceDelegateProvider", + "titleWords": "$sceDelegateProvider", + "keywords": "$sce $scedelegate $scedelegateprovider about allow allows an and angular api app are as assets at between blacklist blacklists blocked but case com config configuration configure consider contextual control details developers difference domain domains ensure escaping etc example following for from general get have here hosted html http in is like loading loads look main might module myapp name ng notice of on one open origin other our overrides page partials provider read redirect refer resource resourceurlblacklist resourceurlwhitelist safe same scenario secure self service so some sourcing strict such templates that the this to url urls used what whitelist whitelists you your", + "members": "resourceurlblacklist resourceurlwhitelist" + }, + { + "path": "api/ng/provider/$sceProvider", + "titleWords": "$sceProvider", + "keywords": "$sce $sceprovider about allows api configure contextual custom default delegate developers enable escaping html implementation in module more ng override partials provider read service strict the to with", + "members": "enabled" + }, + { + "path": "api/ng/service/$sce", + "titleWords": "$sce", + "keywords": "$parse $sanitize $sce $scedelegate $scedelegateprovider $sceprovider $watch about absolute accepted accidentally actual adding addition additionally against all allow allowing allows also an and angular angularjs any anywhere api application applies apply appropriate arbitrary are arrays articles as aspx assists at attr attribute audit audited auditing automatically aware back be because becomes been before behind being below benefits bind binding bindings blacklist blacklists blocks blog bolting both bound browser browsers bug built but by call calling can case cases caveat certain change character characters clickjacking client closure closure-library code codebase codes coding com comes comments completely complex config constant constitute contents context contexts contextual controlled correct cors could coverage creates css currently custom default defaults delete demonstration depending determine developer did didn different directive directives directly directory disable disabled disallowed discouraged div do document does doesn domain domains don done each ease easier easily easy either element enable enabled encountered end engine enough ensure ensuring error escape escaping etc even every exactly example example-example100 examples execute existing explicitly exposed expression expressions fall far feel feels file files flags flexibility follow following for forgot format free from full function further generating gettrusted gettrustedresourceurl gives global good google googlecode great grep guide harder has have having help here highly how however href html http https ie8 if iframe ignorecase ignored img impact important in include included inevitable input instance instead intended intention internal interpolated interpolation into introduce introduced is issue it items its javascript js just know lacks last later learn level library like likely line line962 links literal literals little load loaded loading loads look lot maintain make makes manageable marked markup match matched matches matching may me means mechanism method-c-escape methods might migrating mode module more msdn much multiline must myappwithscedisabledmyapp name need new ng ng-bind-html ng-include ng-model ngbindhtml ngbindhtmldirective ngsanitize ngsrc non-constant not note notes notice number object obtain occurrences of offer ok on one only onto or org organize origin other over overhead own parse parseas parseashtml partials pass path patterns pay performs perhaps place platform play policy powerful present privileged projects properties protocol protocols provides purposes python quirks rather re realistic received recommended reduces refer regex regexes regexp regexpescape regular remember renamed render rendering required requires requiring resort resource resource_url resourceurlblacklist resourceurlpatternitem resourceurlwhitelist restrict result return returned right role ruby ruby-doc safe said same same-origin_policy_for_xmlhttprequest sane sanitize sanitized says sce scenes scheme scope secure security self sense sequences served server service services setting sharing ships shorthand should show side significantly similar simple simplified small some something source special specific specified src stage standards statement strict string stronger strongly subdomain successfully such supported syntax tags take task tell template templates templateurl templating test tested than that the their them themselves then there therefore these they this those through throwing time to too top trustas trustashtml trustasresourceurl trusted types unless unsafe unused update updates url urls usage use used useful user userhtml uses using value values var verify version very via vulnerabilities w3 want was watch way we well were what when where whether which while whitelist whitelists whose wildcard will with without won work works would wrap writing written xss yes you your zero", + "members": "gettrusted gettrustedcss gettrustedhtml gettrustedjs gettrustedresourceurl gettrustedurl isenabled parseas parseascss parseashtml parseasjs parseasresourceurl parseasurl trustas trustashtml trustasjs trustasresourceurl trustasurl" + }, + { + "path": "api/ng/service/$timeout", + "titleWords": "$timeout", + "keywords": "$apply $exceptionhandler $rootscope $timeout and angular any api be block call can cancel checking deferred delay delayed delegates dirty exceptions executed execution false flush fn for function functions html if in into invoke is milliseconds model module ng ngmock of otherwise partials promise queue reached registering request resolved return scope service set settimeout should skips synchronously tests that the this timeout to try use value when which whose will window with within wrapped wrapper you", + "members": "cancel" + }, + { + "path": "api/ng/service/$window", + "titleWords": "$window", + "keywords": "$window $windowprovider always an angular api are available be because below browser causes coding current defined dependency directive evaluated example example-example101 expression expressions for global globally html in inadvertently is it javascript like may mocked module ng ngclick no object of on one or overridden partials problems refer reference removed respect risk scope service so such testability testing the there therefore through to value variable we while window with", + "members": "" + }, + { + "path": "api/ngAnimate", + "titleWords": "ngAnimate animate", + "keywords": "$animate $timeout about above accidental action active add addclass added addition advantage after all allowed along also an and angular angular-animate angularjs animate animated animation animations any apart api application applied apply appropriate are as at attached attaching attribute automatically avoid base based be been before beforeaddclass beforeremoveclass being below between block blocking both breakdown browser browsers by call callback callbacks called calls can cancelled cannot case changes child children class classes classname code collection combine complete completed config conflicts contain container containing contains core correct created creating css css-defined css-like css-specificity css3 currently curtain-like custom default define defined delay demonstrates designed detailed detect determine directive directives do doc-module-components does doesn dom done duration each effect either element elements end ends enter enter_sequence event events example executed existing expected explained explode-animation expression fade-animation false feature figure final find fired firing first fits following for form found from function functions future handle has have here hooks how however html ie10 if immediately in index information inheritance inside invalid is issue issued it its itself javascript javascript-defined js keep keyframe kids last leave like linear long look make match matching mind modern module more move multiple must mutation my-animation my-crazy-animation mymodule naming ng ng-animate-children ng-enter ng-enter-active ng-enter-stagger ng-hide ng-if ng-include ng-leave ng-leave-active ng-view nganimate ngclass nghide ngif nginclude ngmodel ngmodule ngrepeat ngroute ngshow ngswitch ngview no not noted object of offer on once only opacity operation or other out outside over overridden own page parent partials passed perform performed placing play pre-existing preparation prepares present pristine property provided provides register remove removeclass removed required reset restrictions resulting return returned reveal-animation run running safari same see selector selectors service set should simple single slide slide-animation slight stagger staggering standard start starting state structure style styles stylesheet styling successive support supported supports surrounding tag take terminal text than that the then therefore these they this timing to together transition transition-delay transition-duration transitions trigger triggered triggers true two type until upon usage usage_animations use used using valid validations value values var various via view-container visiting want well when which will wish with within without words work yet you your yourapp", + "members": "" + }, + { + "path": "api/ngAnimate/provider/$animateProvider", + "titleWords": "$animateProvider", + "keywords": "$animate $animateprovider about allows an animation animations any api application be developers directive directly event find handlers how html in inside installed is javascript learn match module more name nganimate of overview page partials please provided provider query register requires service that the to triggered use value visit when will your", + "members": "" + }, + { + "path": "api/ngAnimate/service/$animate", + "titleWords": "$animate", + "keywords": "$animate $animateprovider about addclass against and animation animations any api application are as be behind box by classes configuration css css-defined defined detection directives dom during element examine extra function how html in installed is javascript-defined learn leave module more move nganimate object of on once operation operations out overview page partials performing please pre-existing present provider provides removeclass requires run scenes service support the these to use used using visit well when while will with without work your", + "members": "addclass enabled enter leave move removeclass" + }, + { + "path": "api/ngCookies", + "titleWords": "ngCookies cookies", + "keywords": "$cookies $cookiestore and angular-cookies api browser convenient cookies doc-module-components factory for html js module ngcookies partials provides reading see the usage wrapper writing", + "members": "" + }, + { + "path": "api/ngCookies/service/$cookies", + "titleWords": "$cookies", + "keywords": "$cookies $eval access adding and angular api are at be browser by can controller cookie cookies cookiesexample created current end examplecontroller exposed factory favoritecookie function html installed is js module myfavorite new ngcookies oatmeal object of only or partials properties provides read removing requires retrieving service setting simple strings the this to var", + "members": "" + }, + { + "path": "api/ngCookies/service/$cookieStore", + "titleWords": "$cookieStore", + "keywords": "$cookies $cookiestore angular api are automatically backed be by controller cookie cookies cookiestoreexample deserialized examplecontroller factory favoritecookie from function get html installed is js key-value module myfavorite ngcookies oatmeal objects or partials provides put remove removing requires retrieved serialized service session storage that the this to tojson var", + "members": "get put remove" + }, + { + "path": "api/ngMock/object/angular.mock", + "titleWords": "angular.mock", + "keywords": "angular angular-mocks api code contains from html js mock module namespace ngmock object partials related testing which", + "members": "" + }, + { + "path": "api/ngMock/provider/$exceptionHandlerProvider", + "titleWords": "$exceptionHandlerProvider", + "keywords": "$exceptionhandler $exceptionhandlerprovider api configures errors html implementation into log mock module ng ngmock of or partials passed provider rethrow the to", + "members": "mode" + }, + { + "path": "api/ngMock/service/$exceptionHandler", + "titleWords": "$exceptionHandler", + "keywords": "$exceptionhandler $exceptionhandlerprovider $log $timeout and api assertempty banana capture configuration describe errors exceptions expect flush for function html implementation information inject into it js log logs messages mock mode module ng ngmock of or partials passed peel rethrows see service should that throw toequal", + "members": "" + }, + { + "path": "api/ngMock/service/$log", + "titleWords": "$log", + "keywords": "$log $logprovider all api are array arrays as each error exposed for function gathers html implementation in is level level-specific log logged logging logs messages mock module ng ngmock of partials per property service that the these", + "members": "assertempty debug error info log logs reset warn" + }, + { + "path": "api/ngMock/service/$interval", + "titleWords": "$interval", + "keywords": "$apply $interval $intervalprovider $rootscope and any api be between block by call called checking delay dirty each false flush fn forward function functions html if implementation in indefinitely invoke iteration millis milliseconds mock model module move ng ngmock not notified number of on or otherwise partials promise repeat repeatedly run scheduled scope service set should skips that the time times to trigger use which will within", + "members": "cancel flush" + }, + { + "path": "api/ngMock/type/angular.mock.TzDate", + "titleWords": "angular.mock.TzDate", + "keywords": "an angular api arg available be best but called calls can class code complete create date date-like dependency depends desired do errors fixed foo from getdate getfullyear gethours getminutes getmonth getseconds gettimezoneoffset globally has honored hours html implemented in incompatible incomplete inherit injectable instance instances intercept is its js just like list local machine main make matters methods might missing mock module new newyearinbratislava ngmock non-standard not object of offset on only our partials prototype purpose representing result running safely settings since so some specified stuff test that the this time timestamp timezone to type tzdate unimplemented var via warning we were where which will with without worse zone", + "members": "" + }, + { + "path": "api/ngMock/function/angular.mock.dump", + "titleWords": "angular.mock.dump", + "keywords": "also an angular any api argument available be can common console debug debugging display dump elements etc for function globally html injectable instance into is it just method mock module ngmock not object objects of on partials serialized serializing string strings the this to turn used useful where window", + "members": "" + }, + { + "path": "api/ngMock/service/$httpBackend", + "titleWords": "$httpBackend", + "keywords": "$controller $http $httpbackend $httpbackendprovider $injector $rootscope $scope a-token about aftereach algorithm all allow allowing allows alternatively always an and angular any api apis application applications appropriate are as assert assertions async asynchronously auth authentication authorization authtoken backend backend-less be been beforeeach behavior below both but by calls can care cases certain change check class code common content controller controllers create createcontroller data define defined definition definitions dependencies dependency describe development didn doesn don during dynamic e2e easy end end-to-end error etc evaluated execute execution expect expectation expectations expected expectget expectpost explicitly external fail fake fetch first flush flushing follow following for from function get gets hard has have having header headers hold how html http if implementation in inject injection instances is it js just let made maintain make makes match matched matters message method mock module mozilla msg multiple mycontroller need needs neither ng ngmock ngmocke2e no not now of or order org our partials particular pass pending please post pre-trained preserved preserves production provide py quickly real really reason request requests required respond responds response responses result return returned returns root run same savemessage saving scope search see send sending sends sent sequential server service set setup shortcuts should shows so some specified specifies specify specs static status still success suitable synchronously table test testing tests that the their them there they this those to tobe token trained two undefined under unit up usage use used user userx using var verify verifynooutstandingexpectation verifynooutstandingrequest via vs want was wasn way ways we what whatever when whenpost where whether which while width wikipedia will with without won would write wrong xxx you your", + "members": "expect expectdelete expectget expecthead expectjsonp expectpatch expectpost expectput flush resetexpectations verifynooutstandingexpectation verifynooutstandingrequest when whendelete whenget whenhead whenjsonp whenpatch whenpost whenput" + }, + { + "path": "api/ngMock/service/$timeout", + "titleWords": "$timeout", + "keywords": "$timeout $timeoutdecorator adds and api decorator flush for html is just methods module ng ngmock partials service simple that this verifynopendingtasks", + "members": "flush verifynopendingtasks" + }, + { + "path": "api/ngMock", + "titleWords": "ngMock mock", + "keywords": "addition also and angular angular-mocks api be can code config controlled core doc-module-components extends html in inject inspected into js manner mock module ng ngmock partials provides services such support synchronous test tests that the they to unit various within", + "members": "" + }, + { + "path": "api/ngMockE2E", + "titleWords": "ngMockE2E mocke2e", + "keywords": "$httpbackend an angular angular-mocks api config contains currently e2e end-to-end for html in is js mock mocks module ngmocke2e one only partials present suitable testing the there this which", + "members": "" + }, + { + "path": "api/ngMockE2E/service/$httpBackend", + "titleWords": "$httpBackend", + "keywords": "$http $httpbackend additionally adds afterwards an and angular api apis app application applications array as automatically backend backend-less be behavior being bootstrap bypass can category certain closely configure create current data defines depends desirable developed development do don during dynamic e2e end-to-end etc fake fetch files flush flushes for from fromjson handler have html http implementation in instead interact is issue it its js like list manually mock mocked module modules myapp myappdev new ng ngmock ngmocke2e object of often on opposed optionally or out partials pass passthrough phone phone1 phone2 phones please push real reason remote replaced request requests respond responses return returns run scenario see service setup shortcuts simulating specific static suitable templates testing that the this through to unit unit-testing url use used var via want we webserver when whenget whenpost with xmlhttprequest you your", + "members": "when whendelete whenget whenhead whenjsonp whenpatch whenpost whenput" + }, + { + "path": "api/ngMock/function/angular.mock.module", + "titleWords": "angular.mock.module", + "keywords": "access aliases also an and angular anonymous any api are as automatically be being by code collects configuration configure created declared easy example fns for function functions html if in information initialization inject injector is it jasmine key literal loaded mocha mock module modules name ng ngmock number object of on only or partials passed published registered registers represented returned running see string tests the they this to usage used value values what when which will window with", + "members": "" + }, + { + "path": "api/ngMock/function/angular.mock.inject", + "titleWords": "angular.mock.inject", + "keywords": "$injector $provide _myservice_ able access aliases all also an and angular any api app are arguments as assign auto available be beforeeach block body by can clauses creates declared default defined describe do dostuff easy enclosed erroraddingdeclarationlocationstack example expect fns for function functions given have help here hide html ignored in inject injectable injected injector inside instance into is it jasmine js like likely load loads looks makes method mocha mock mode module modules most multiple must myapp myapplicationmodule myservice name need new ng ngmock number of often on once only optionally or out outer outside overridden override parameter parameters partials per problem provide published reference references resolved resolving reuse running same scope see series should since strings takes test tests that the then these this to toequal typical underscores use used using v1 value var variable version want we what when which will window with would wrap wrapping wraps you", + "members": "" + }, + { + "path": "api/ngResource", + "titleWords": "ngResource resource", + "keywords": "$resource angular-resource api doc-module-components factory for html interaction js module ngresource partials provides restful see service services support the usage via with", + "members": "" + }, + { + "path": "api/ngResource/service/$resource", + "titleWords": "$resource", + "keywords": "$action $cachefactory $charge $http $id $promise $q $resolved $resource $routeparams $routeprovider $save $scope abc abort above access action action2 actions actual add additional after all allows along also an and angular any api apis app appear appended are argument arguments array arrives as assigned automatically available be becomes been before behavior behaviors below body both bound built by cache caching call callback called calling came can card cardid cards case cases charge checks class collapse collapsed collection com completed config contain contains controller corresponding could create created creates creating credentials credit creditcard crud custom data data-binding declaration default defaultparam defer define definition delete depending deserialized deserializes destination down each easily easy empty error escape etc even every example excess executed execution existing expect extend extended extracted factory failure false first flag following for format from fromjson function functions get getresponseheaders gets getter given greet has hash have having header headers headersgetter hello here high-level html http id if immediately important in information insensitive installed instance instanceof instances instead interact interaction interceptor interceptors invoke invoked invoking is isarray it item its itself js json jsonp just key keys knowing lets level like loaded looks low make makes mapped means method methods mike milliseconds model module more most mozilla name need needs never new newcard ng ngresource ngroute no non non-get not note notes notesctrl noting now null number object obtained of on once one onto operations optional optionally or org original other otherwise our overridden override param paramdefaults parameter parameters parametrized params partials pass passed passing payload perform populated port post postdata pre-bound prefix prefixed present prevent promise properties property provide provided put putresponseheaders query raw re-renders read realize reference rejection remove rendered rendering request requires resolve resolved resource resource-level respected response responseerror responseheaders responsetype results retrieve return returned returns rewrite salutation same save saved search section section_5 see sequence serialized serializes server server-side service set should showing since single smith so some someparam someprop sources specific specified static string success such suffix support supported takes template templating that the then these this time timeout to toequal tojson transform transformed transformrequest transformresponse trick true two type until update updated updating url urls usage_parameters use used useful user using usually value values var version via view was we well when where whether which wikipedia will with withcredentials without worth write xhr you your", + "members": "" + }, + { + "path": "api/ngRoute/directive/ngView", + "titleWords": "ngView view", + "keywords": "$anchorscroll $inject $route according after an and animate animation any api as attribute autoscroll away be bring browser by call changes complements concurrently configuration content current directive disable eca enable enter evaluate evaluated every example-ngview-directive existing expression file html if included including index installed into is it layout leave main module new ng ngroute ngview not occur of onload only otherwise overview partials rendered requires route scroll scrolling service set should template that the time to truthy updated updates used value view viewport whenever whether with without yields", + "members": "$viewcontentloaded" + }, + { + "path": "api/ngRoute", + "titleWords": "ngRoute route", + "keywords": "$route an and angular angular-route api apps configuring deeplinking directives doc-module-components example for html js module ngroute ngroutemodule of partials provides routing see services the using", + "members": "" + }, + { + "path": "api/ngRoute/provider/$routeProvider", + "titleWords": "$routeProvider", + "keywords": "$route $routeprovider an and api be configuring dependencies example for function html installed module ngroute of partials provider requires routes see the to used using", + "members": "otherwise when" + }, + { + "path": "api/ngRoute/service/$route", + "titleWords": "$route", + "keywords": "$controller $location $route $routeparams $routeprovider $scope $template additionally against all also an and api as be by can causes changing configuration conjunction contain contains controller controllers current deep-linking define definition directive example example- existing for forcereload hash how html in installed instantiation is it its locals map match module ng ngroute ngview object objects of partial partials path properties pulls reference requires resolve resolved route routes scope service shows template the this through to tries typically url urls used values views watches which with you", + "members": "$routechangeerror $routechangestart $routechangesuccess $routeupdate current reload routes" + }, + { + "path": "api/ngRoute/service/$routeParams", + "titleWords": "$routeParams", + "keywords": "$location $route $routeparams $routeparamsprovider access allows and api are be being can cannot case change collision com combination completes correct current even extracted functions given guarantees html http identity in installed instead is its js likely matched means moby module name new ng ngroute note object occurs of on only over parameter parameters params partials path precedence properties rely remain requires resolve retrieve route search sectionid service set successfully take that the then this to unchanged updated url use when will you", + "members": "" + }, + { + "path": "api/ngSanitize/filter/linky", + "titleWords": "linky", + "keywords": "address and api be email example-example102 filter finds frame function html html-linkified http in input installed into links linky linky_expression module named ng-bind-html ngsanitize open or partials plain requires supports target text the them to turns window", + "members": "" + }, + { + "path": "api/ngSanitize", + "titleWords": "ngSanitize sanitize", + "keywords": "$sanitize $sanitizeprovider angular-sanitize api doc-module-components for functionality html js module ngsanitize partials provides sanitize see the to usage", + "members": "" + }, + { + "path": "api/ngSanitize/service/$sanitize", + "titleWords": "$sanitize", + "keywords": "$compileprovider $sanitize $sanitizeprovider ahrefsanitizationwhitelist all and api are as back be browser by can configured escaped example-example103 function functions however html imgsrcsanitizationwhitelist input into is it make means module more ng ngsanitize no obscure of our parser parsing partials possible properly recognized returned safe sanitized sanitizer serialized service since some strict string than that the then this through to tokens typical unsafe using valid which whitelist won would", + "members": "" + }, + { + "path": "api/ngTouch/directive/ngClick", + "titleWords": "ngClick click", + "keywords": "$event about after also an and any api as available back be before being browsers can class click config css default depressed designed desktop devices directive down element evaluate event example-example104 expression fall following for from guide handles held html if immediately installed is mobile module more most mouse ng-click-active ngclick ngtouch object on or ordinary partials powerful prevents propagating replacement requires restyle sending sets so tap tap-and-release the them then this to touch touchscreen upon used using version wait well while wish works you", + "members": "" + }, + { + "path": "api/ngTouch/directive/ngSwipeLeft", + "titleWords": "ngSwipeLeft swipeleft", + "keywords": "$event an and any api as available be behavior click custom designed device devices directive drag element evaluate example-example105 expression finger for guide html installed is it left leftward makeswipedirective module mouse ngswipeleft ngtouch object of on partials quick requires right-to-left slide specify swipe swiped the though to too touch-based touchscreen upon when will with work", + "members": "" + }, + { + "path": "api/ngTouch/directive/ngSwipeRight", + "titleWords": "ngSwipeRight swiperight", + "keywords": "$event an and any api as available be behavior click custom designed device devices directive drag element evaluate example-example106 expression finger for guide html installed is it left-to-right makeswipedirective module mouse ngswiperight ngtouch object of on partials quick requires right rightward slide specify swipe swiped the though to too touch-based touchscreen upon when will with work", + "members": "" + }, + { + "path": "api/ngTouch/service/$swipe", + "titleWords": "$swipe", + "keywords": "$swipe abstracts an and api be behavior below bind by component convenient details directives documentation element factory for four functions handler hold-and-drag html implementing in installed is make messier method module more ngcarousel ngswipeleft ngswiperight ngtouch object of partials requires see separate service single swipe swipe-related swipes takes that the to usage used watched which with", + "members": "bind" + }, + { + "path": "api/ngTouch", + "titleWords": "ngTouch touch", + "keywords": "$swipe and angular-touch api based com devices doc-module-components event events for handling helpers html implementation is jquery js mobile module ngtouch on other partials provides see the touch touch-enabled usage", + "members": "" + }, + { + "path": "error/$animate", + "titleWords": "$animate", + "keywords": "$animate error errornamespace html partials", + "members": "" + }, + { + "path": "error/$cacheFactory", + "titleWords": "$cacheFactory", + "keywords": "$cachefactory error errornamespace html partials", + "members": "" + }, + { + "path": "error/$compile", + "titleWords": "$compile", + "keywords": "$compile error errornamespace html partials", + "members": "" + }, + { + "path": "error/$controller", + "titleWords": "$controller", + "keywords": "$controller error errornamespace html partials", + "members": "" + }, + { + "path": "error/$httpBackend", + "titleWords": "$httpBackend", + "keywords": "$httpbackend error errornamespace html partials", + "members": "" + }, + { + "path": "error/$injector", + "titleWords": "$injector", + "keywords": "$injector error errornamespace html partials", + "members": "" + }, + { + "path": "error/$interpolate", + "titleWords": "$interpolate", + "keywords": "$interpolate error errornamespace html partials", + "members": "" + }, + { + "path": "error/$location", + "titleWords": "$location", + "keywords": "$location error errornamespace html partials", + "members": "" + }, + { + "path": "error/$parse", + "titleWords": "$parse", + "keywords": "$parse error errornamespace html partials", + "members": "" + }, + { + "path": "error/$resource", + "titleWords": "$resource", + "keywords": "$resource error errornamespace html partials", + "members": "" + }, + { + "path": "error/$rootScope", + "titleWords": "$rootScope", + "keywords": "$rootscope error errornamespace html partials", + "members": "" + }, + { + "path": "error/$sanitize", + "titleWords": "$sanitize", + "keywords": "$sanitize error errornamespace html partials", + "members": "" + }, + { + "path": "error/$sce", + "titleWords": "$sce", + "keywords": "$sce error errornamespace html partials", + "members": "" + }, + { + "path": "error/jqLite", + "titleWords": "jqLite", + "keywords": "error errornamespace html jqlite partials", + "members": "" + }, + { + "path": "error/ng", + "titleWords": "ng", + "keywords": "error errornamespace html ng partials", + "members": "" + }, + { + "path": "error/ngModel", + "titleWords": "ngModel model", + "keywords": "error errornamespace html ngmodel partials", + "members": "" + }, + { + "path": "error/ngOptions", + "titleWords": "ngOptions options", + "keywords": "error errornamespace html ngoptions partials", + "members": "" + }, + { + "path": "error/ngPattern", + "titleWords": "ngPattern pattern", + "keywords": "error errornamespace html ngpattern partials", + "members": "" + }, + { + "path": "error/ngRepeat", + "titleWords": "ngRepeat repeat", + "keywords": "error errornamespace html ngrepeat partials", + "members": "" + }, + { + "path": "error/ngTransclude", + "titleWords": "ngTransclude transclude", + "keywords": "error errornamespace html ngtransclude partials", + "members": "" + }, + { + "path": "api/ng/function", + "titleWords": "function components in ng", + "keywords": "api componentgroup components function html in module ng partials", + "members": "" + }, + { + "path": "api/ng/directive", + "titleWords": "directive components in ng", + "keywords": "api componentgroup components directive html in module ng partials", + "members": "" + }, + { + "path": "api/ng/object", + "titleWords": "object components in ng", + "keywords": "api componentgroup components html in module ng object partials", + "members": "" + }, + { + "path": "api/ng/type", + "titleWords": "type components in ng", + "keywords": "api componentgroup components html in module ng partials type", + "members": "" + }, + { + "path": "api/ng/service", + "titleWords": "service components in ng", + "keywords": "api componentgroup components html in module ng partials service", + "members": "" + }, + { + "path": "api/ng/provider", + "titleWords": "provider components in ng", + "keywords": "api componentgroup components html in module ng partials provider", + "members": "" + }, + { + "path": "api/ng/input", + "titleWords": "input components in ng", + "keywords": "api componentgroup components html in input module ng partials", + "members": "" + }, + { + "path": "api/ng/filter", + "titleWords": "filter components in ng", + "keywords": "api componentgroup components filter html in module ng partials", + "members": "" + }, + { + "path": "api/auto/service", + "titleWords": "service components in auto", + "keywords": "api auto componentgroup components html in module partials service", + "members": "" + }, + { + "path": "api/ngAnimate/provider", + "titleWords": "provider components in ngAnimate animate", + "keywords": "api componentgroup components html in module nganimate partials provider", + "members": "" + }, + { + "path": "api/ngAnimate/service", + "titleWords": "service components in ngAnimate animate", + "keywords": "api componentgroup components html in module nganimate partials service", + "members": "" + }, + { + "path": "api/ngCookies/service", + "titleWords": "service components in ngCookies cookies", + "keywords": "api componentgroup components html in module ngcookies partials service", + "members": "" + }, + { + "path": "api/ngMock/object", + "titleWords": "object components in ngMock mock", + "keywords": "api componentgroup components html in module ngmock object partials", + "members": "" + }, + { + "path": "api/ngMock/provider", + "titleWords": "provider components in ngMock mock", + "keywords": "api componentgroup components html in module ngmock partials provider", + "members": "" + }, + { + "path": "api/ngMock/service", + "titleWords": "service components in ngMock mock", + "keywords": "api componentgroup components html in module ngmock partials service", + "members": "" + }, + { + "path": "api/ngMock/type", + "titleWords": "type components in ngMock mock", + "keywords": "api componentgroup components html in module ngmock partials type", + "members": "" + }, + { + "path": "api/ngMock/function", + "titleWords": "function components in ngMock mock", + "keywords": "api componentgroup components function html in module ngmock partials", + "members": "" + }, + { + "path": "api/ngMockE2E/service", + "titleWords": "service components in ngMockE2E mocke2e", + "keywords": "api componentgroup components html in module ngmocke2e partials service", + "members": "" + }, + { + "path": "api/ngResource/service", + "titleWords": "service components in ngResource resource", + "keywords": "api componentgroup components html in module ngresource partials service", + "members": "" + }, + { + "path": "api/ngRoute/directive", + "titleWords": "directive components in ngRoute route", + "keywords": "api componentgroup components directive html in module ngroute partials", + "members": "" + }, + { + "path": "api/ngRoute/provider", + "titleWords": "provider components in ngRoute route", + "keywords": "api componentgroup components html in module ngroute partials provider", + "members": "" + }, + { + "path": "api/ngRoute/service", + "titleWords": "service components in ngRoute route", + "keywords": "api componentgroup components html in module ngroute partials service", + "members": "" + }, + { + "path": "api/ngSanitize/filter", + "titleWords": "filter components in ngSanitize sanitize", + "keywords": "api componentgroup components filter html in module ngsanitize partials", + "members": "" + }, + { + "path": "api/ngSanitize/service", + "titleWords": "service components in ngSanitize sanitize", + "keywords": "api componentgroup components html in module ngsanitize partials service", + "members": "" + }, + { + "path": "api/ngTouch/directive", + "titleWords": "directive components in ngTouch touch", + "keywords": "api componentgroup components directive html in module ngtouch partials", + "members": "" + }, + { + "path": "api/ngTouch/service", + "titleWords": "service components in ngTouch touch", + "keywords": "api componentgroup components html in module ngtouch partials service", + "members": "" + } +] \ No newline at end of file diff --git a/1.2.30/docs/js/search-worker.js b/1.2.30/docs/js/search-worker.js new file mode 100644 index 0000000000..6c3c96dd54 --- /dev/null +++ b/1.2.30/docs/js/search-worker.js @@ -0,0 +1,44 @@ +"use strict"; +/* jshint browser: true */ +/* global importScripts, onmessage: true, postMessage, lunr */ + +// Load up the lunr library +importScripts('../components/lunr.js-0.4.2/lunr.min.js'); + +// Create the lunr index - the docs should be an array of object, each object containing +// the path and search terms for a page +var index = lunr(function() { + this.ref('path'); + this.field('titleWords', {boost: 50}); + this.field('members', { boost: 40}); + this.field('keywords', { boost : 20 }); +}); + +// Retrieve the searchData which contains the information about each page to be indexed +var searchData = {}; +var searchDataRequest = new XMLHttpRequest(); +searchDataRequest.onload = function() { + + // Store the pages data to be used in mapping query results back to pages + searchData = JSON.parse(this.responseText); + // Add search terms from each page to the search index + searchData.forEach(function(page) { + index.add(page); + }); + postMessage({ e: 'index-ready' }); +}; +searchDataRequest.open('GET', 'search-data.json'); +searchDataRequest.send(); + +// The worker receives a message everytime the web app wants to query the index +onmessage = function(oEvent) { + var q = oEvent.data.q; + var hits = index.search(q); + var results = []; + // Only return the array of paths to pages + hits.forEach(function(hit) { + results.push(hit.ref); + }); + // The results of the query are sent back to the web app via a new message + postMessage({ e: 'query-ready', q: q, d: results }); +}; \ No newline at end of file diff --git a/1.2.30/docs/js/search-worker.min.js b/1.2.30/docs/js/search-worker.min.js new file mode 100644 index 0000000000..d26d0bae08 --- /dev/null +++ b/1.2.30/docs/js/search-worker.min.js @@ -0,0 +1,2 @@ +"use strict";importScripts("../components/lunr.js-0.4.2/lunr.min.js");var index=lunr(function(){this.ref("path"),this.field("titleWords",{boost:50}),this.field("members",{boost:40}),this.field("keywords",{boost:20})}),searchData={},searchDataRequest=new XMLHttpRequest;searchDataRequest.onload=function(){searchData=JSON.parse(this.responseText),searchData.forEach(function(e){index.add(e)}),postMessage({e:"index-ready"})},searchDataRequest.open("GET","search-data.json"),searchDataRequest.send(),onmessage=function(e){var s=e.data.q,a=index.search(s),t=[];a.forEach(function(e){t.push(e.ref)}),postMessage({e:"query-ready",q:s,d:t})}; +//# sourceMappingURL=../js/search-worker.min.js.map \ No newline at end of file diff --git a/1.2.30/docs/js/search-worker.min.js.map b/1.2.30/docs/js/search-worker.min.js.map new file mode 100755 index 0000000000..10f1606b36 --- /dev/null +++ b/1.2.30/docs/js/search-worker.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["js/search-worker.js"],"names":[],"mappings":"AAAA,YAKA,eAAA,0CAIA,IAAA,OAAA,KAAA,WACA,KAAA,IAAA,QACA,KAAA,MAAA,cAAA,MAAA,KACA,KAAA,MAAA,WAAA,MAAA,KACA,KAAA,MAAA,YAAA,MAAA,OAIA,cACA,kBAAA,GAAA,eACA,mBAAA,OAAA,WAGA,WAAA,KAAA,MAAA,KAAA,cAEA,WAAA,QAAA,SAAA,GACA,MAAA,IAAA,KAEA,aAAA,EAAA,iBAEA,kBAAA,KAAA,MAAA,oBACA,kBAAA,OAGA,UAAA,SAAA,GACA,GAAA,GAAA,EAAA,KAAA,EACA,EAAA,MAAA,OAAA,GACA,IAEA,GAAA,QAAA,SAAA,GACA,EAAA,KAAA,EAAA,OAGA,aAAA,EAAA,cAAA,EAAA,EAAA,EAAA","file":"js/search-worker.min.js","sourcesContent":["\"use strict\";\n/* jshint browser: true */\n/* global importScripts, onmessage: true, postMessage, lunr */\n\n// Load up the lunr library\nimportScripts('../components/lunr.js-0.4.2/lunr.min.js');\n\n// Create the lunr index - the docs should be an array of object, each object containing\n// the path and search terms for a page\nvar index = lunr(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// Retrieve the searchData which contains the information about each page to be indexed\nvar searchData = {};\nvar searchDataRequest = new XMLHttpRequest();\nsearchDataRequest.onload = function() {\n\n // Store the pages data to be used in mapping query results back to pages\n searchData = JSON.parse(this.responseText);\n // Add search terms from each page to the search index\n searchData.forEach(function(page) {\n index.add(page);\n });\n postMessage({ e: 'index-ready' });\n};\nsearchDataRequest.open('GET', 'search-data.json');\nsearchDataRequest.send();\n\n// The worker receives a message everytime the web app wants to query the index\nonmessage = function(oEvent) {\n var q = oEvent.data.q;\n var hits = index.search(q);\n var results = [];\n // Only return the array of paths to pages\n hits.forEach(function(hit) {\n results.push(hit.ref);\n });\n // The results of the query are sent back to the web app via a new message\n postMessage({ e: 'query-ready', q: q, d: results });\n};"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/1.2.30/docs/js/versions-data.js b/1.2.30/docs/js/versions-data.js new file mode 100644 index 0000000000..044556bd4d --- /dev/null +++ b/1.2.30/docs/js/versions-data.js @@ -0,0 +1,1469 @@ +// Meta data used by the AngularJS docs app +angular.module('versionsData', []) + .value('NG_VERSION', { + "raw": "v1.2.30", + "major": 1, + "minor": 2, + "patch": 30, + "prerelease": [], + "build": [], + "version": "1.2.30", + "codeName": "patronal-resurrection", + "full": "1.2.30", + "branch": "v1.2.x" +}) + .value('NG_VERSIONS', [ + { + "raw": "v1.2.30", + "major": 1, + "minor": 2, + "patch": 30, + "prerelease": [], + "build": [], + "version": "1.2.30", + "codeName": "patronal-resurrection", + "full": "1.2.30", + "branch": "v1.2.x" + }, + { + "raw": "v1.5.7", + "major": 1, + "minor": 5, + "patch": 7, + "prerelease": [], + "build": [], + "version": "1.5.7", + "docsUrl": "http://code.angularjs.org/1.5.7/docs" + }, + { + "raw": "v1.5.6", + "major": 1, + "minor": 5, + "patch": 6, + "prerelease": [], + "build": [], + "version": "1.5.6", + "docsUrl": "http://code.angularjs.org/1.5.6/docs" + }, + { + "raw": "v1.5.5", + "major": 1, + "minor": 5, + "patch": 5, + "prerelease": [], + "build": [], + "version": "1.5.5", + "docsUrl": "http://code.angularjs.org/1.5.5/docs" + }, + { + "raw": "v1.5.4", + "major": 1, + "minor": 5, + "patch": 4, + "prerelease": [], + "build": [], + "version": "1.5.4", + "docsUrl": "http://code.angularjs.org/1.5.4/docs" + }, + { + "raw": "v1.5.3", + "major": 1, + "minor": 5, + "patch": 3, + "prerelease": [], + "build": [], + "version": "1.5.3", + "docsUrl": "http://code.angularjs.org/1.5.3/docs" + }, + { + "raw": "v1.5.2", + "major": 1, + "minor": 5, + "patch": 2, + "prerelease": [], + "build": [], + "version": "1.5.2", + "docsUrl": "http://code.angularjs.org/1.5.2/docs" + }, + { + "raw": "v1.5.1", + "major": 1, + "minor": 5, + "patch": 1, + "prerelease": [], + "build": [], + "version": "1.5.1", + "docsUrl": "http://code.angularjs.org/1.5.1/docs" + }, + { + "raw": "v1.5.0", + "major": 1, + "minor": 5, + "patch": 0, + "prerelease": [], + "build": [], + "version": "1.5.0", + "docsUrl": "http://code.angularjs.org/1.5.0/docs" + }, + { + "raw": "v1.5.0-rc.2", + "major": 1, + "minor": 5, + "patch": 0, + "prerelease": [ + "rc", + 2 + ], + "build": [], + "version": "1.5.0-rc.2", + "docsUrl": "http://code.angularjs.org/1.5.0-rc.2/docs" + }, + { + "raw": "v1.5.0-rc.1", + "major": 1, + "minor": 5, + "patch": 0, + "prerelease": [ + "rc", + 1 + ], + "build": [], + "version": "1.5.0-rc.1", + "docsUrl": "http://code.angularjs.org/1.5.0-rc.1/docs" + }, + { + "raw": "v1.5.0-rc.0", + "major": 1, + "minor": 5, + "patch": 0, + "prerelease": [ + "rc", + 0 + ], + "build": [], + "version": "1.5.0-rc.0", + "docsUrl": "http://code.angularjs.org/1.5.0-rc.0/docs" + }, + { + "raw": "v1.5.0-beta.2", + "major": 1, + "minor": 5, + "patch": 0, + "prerelease": [ + "beta", + 2 + ], + "build": [], + "version": "1.5.0-beta.2", + "docsUrl": "http://code.angularjs.org/1.5.0-beta.2/docs" + }, + { + "raw": "v1.5.0-beta.1", + "major": 1, + "minor": 5, + "patch": 0, + "prerelease": [ + "beta", + 1 + ], + "build": [], + "version": "1.5.0-beta.1", + "docsUrl": "http://code.angularjs.org/1.5.0-beta.1/docs" + }, + { + "raw": "v1.5.0-beta.0", + "major": 1, + "minor": 5, + "patch": 0, + "prerelease": [ + "beta", + 0 + ], + "build": [], + "version": "1.5.0-beta.0", + "docsUrl": "http://code.angularjs.org/1.5.0-beta.0/docs" + }, + { + "raw": "v1.4.12", + "major": 1, + "minor": 4, + "patch": 12, + "prerelease": [], + "build": [], + "version": "1.4.12", + "docsUrl": "http://code.angularjs.org/1.4.12/docs" + }, + { + "raw": "v1.4.11", + "major": 1, + "minor": 4, + "patch": 11, + "prerelease": [], + "build": [], + "version": "1.4.11", + "docsUrl": "http://code.angularjs.org/1.4.11/docs" + }, + { + "raw": "v1.4.10", + "major": 1, + "minor": 4, + "patch": 10, + "prerelease": [], + "build": [], + "version": "1.4.10", + "docsUrl": "http://code.angularjs.org/1.4.10/docs" + }, + { + "raw": "v1.4.9", + "major": 1, + "minor": 4, + "patch": 9, + "prerelease": [], + "build": [], + "version": "1.4.9", + "docsUrl": "http://code.angularjs.org/1.4.9/docs" + }, + { + "raw": "v1.4.8", + "major": 1, + "minor": 4, + "patch": 8, + "prerelease": [], + "build": [], + "version": "1.4.8", + "docsUrl": "http://code.angularjs.org/1.4.8/docs" + }, + { + "raw": "v1.4.7", + "major": 1, + "minor": 4, + "patch": 7, + "prerelease": [], + "build": [], + "version": "1.4.7", + "docsUrl": "http://code.angularjs.org/1.4.7/docs" + }, + { + "raw": "v1.4.6", + "major": 1, + "minor": 4, + "patch": 6, + "prerelease": [], + "build": [], + "version": "1.4.6", + "docsUrl": "http://code.angularjs.org/1.4.6/docs" + }, + { + "raw": "v1.4.5", + "major": 1, + "minor": 4, + "patch": 5, + "prerelease": [], + "build": [], + "version": "1.4.5", + "docsUrl": "http://code.angularjs.org/1.4.5/docs" + }, + { + "raw": "v1.4.4", + "major": 1, + "minor": 4, + "patch": 4, + "prerelease": [], + "build": [], + "version": "1.4.4", + "docsUrl": "http://code.angularjs.org/1.4.4/docs" + }, + { + "raw": "v1.4.3", + "major": 1, + "minor": 4, + "patch": 3, + "prerelease": [], + "build": [], + "version": "1.4.3", + "docsUrl": "http://code.angularjs.org/1.4.3/docs" + }, + { + "raw": "v1.4.2", + "major": 1, + "minor": 4, + "patch": 2, + "prerelease": [], + "build": [], + "version": "1.4.2", + "docsUrl": "http://code.angularjs.org/1.4.2/docs" + }, + { + "raw": "v1.4.1", + "major": 1, + "minor": 4, + "patch": 1, + "prerelease": [], + "build": [], + "version": "1.4.1", + "docsUrl": "http://code.angularjs.org/1.4.1/docs" + }, + { + "raw": "v1.4.0", + "major": 1, + "minor": 4, + "patch": 0, + "prerelease": [], + "build": [], + "version": "1.4.0", + "docsUrl": "http://code.angularjs.org/1.4.0/docs" + }, + { + "raw": "v1.4.0-rc.2", + "major": 1, + "minor": 4, + "patch": 0, + "prerelease": [ + "rc", + 2 + ], + "build": [], + "version": "1.4.0-rc.2", + "docsUrl": "http://code.angularjs.org/1.4.0-rc.2/docs" + }, + { + "raw": "v1.4.0-rc.1", + "major": 1, + "minor": 4, + "patch": 0, + "prerelease": [ + "rc", + 1 + ], + "build": [], + "version": "1.4.0-rc.1", + "docsUrl": "http://code.angularjs.org/1.4.0-rc.1/docs" + }, + { + "raw": "v1.4.0-rc.0", + "major": 1, + "minor": 4, + "patch": 0, + "prerelease": [ + "rc", + 0 + ], + "build": [], + "version": "1.4.0-rc.0", + "docsUrl": "http://code.angularjs.org/1.4.0-rc.0/docs" + }, + { + "raw": "v1.4.0-beta.6", + "major": 1, + "minor": 4, + "patch": 0, + "prerelease": [ + "beta", + 6 + ], + "build": [], + "version": "1.4.0-beta.6", + "docsUrl": "http://code.angularjs.org/1.4.0-beta.6/docs" + }, + { + "raw": "v1.4.0-beta.5", + "major": 1, + "minor": 4, + "patch": 0, + "prerelease": [ + "beta", + 5 + ], + "build": [], + "version": "1.4.0-beta.5", + "docsUrl": "http://code.angularjs.org/1.4.0-beta.5/docs" + }, + { + "raw": "v1.4.0-beta.4", + "major": 1, + "minor": 4, + "patch": 0, + "prerelease": [ + "beta", + 4 + ], + "build": [], + "version": "1.4.0-beta.4", + "docsUrl": "http://code.angularjs.org/1.4.0-beta.4/docs" + }, + { + "raw": "v1.4.0-beta.3", + "major": 1, + "minor": 4, + "patch": 0, + "prerelease": [ + "beta", + 3 + ], + "build": [], + "version": "1.4.0-beta.3", + "docsUrl": "http://code.angularjs.org/1.4.0-beta.3/docs" + }, + { + "raw": "v1.4.0-beta.2", + "major": 1, + "minor": 4, + "patch": 0, + "prerelease": [ + "beta", + 2 + ], + "build": [], + "version": "1.4.0-beta.2", + "docsUrl": "http://code.angularjs.org/1.4.0-beta.2/docs" + }, + { + "raw": "v1.4.0-beta.1", + "major": 1, + "minor": 4, + "patch": 0, + "prerelease": [ + "beta", + 1 + ], + "build": [], + "version": "1.4.0-beta.1", + "docsUrl": "http://code.angularjs.org/1.4.0-beta.1/docs" + }, + { + "raw": "v1.4.0-beta.0", + "major": 1, + "minor": 4, + "patch": 0, + "prerelease": [ + "beta", + 0 + ], + "build": [], + "version": "1.4.0-beta.0", + "docsUrl": "http://code.angularjs.org/1.4.0-beta.0/docs" + }, + { + "raw": "v1.3.20", + "major": 1, + "minor": 3, + "patch": 20, + "prerelease": [], + "build": [], + "version": "1.3.20", + "docsUrl": "http://code.angularjs.org/1.3.20/docs" + }, + { + "raw": "v1.3.19", + "major": 1, + "minor": 3, + "patch": 19, + "prerelease": [], + "build": [], + "version": "1.3.19", + "docsUrl": "http://code.angularjs.org/1.3.19/docs" + }, + { + "raw": "v1.3.18", + "major": 1, + "minor": 3, + "patch": 18, + "prerelease": [], + "build": [], + "version": "1.3.18", + "docsUrl": "http://code.angularjs.org/1.3.18/docs" + }, + { + "raw": "v1.3.17", + "major": 1, + "minor": 3, + "patch": 17, + "prerelease": [], + "build": [], + "version": "1.3.17", + "docsUrl": "http://code.angularjs.org/1.3.17/docs" + }, + { + "raw": "v1.3.16", + "major": 1, + "minor": 3, + "patch": 16, + "prerelease": [], + "build": [], + "version": "1.3.16", + "docsUrl": "http://code.angularjs.org/1.3.16/docs" + }, + { + "raw": "v1.3.15", + "major": 1, + "minor": 3, + "patch": 15, + "prerelease": [], + "build": [], + "version": "1.3.15", + "docsUrl": "http://code.angularjs.org/1.3.15/docs" + }, + { + "raw": "v1.3.14", + "major": 1, + "minor": 3, + "patch": 14, + "prerelease": [], + "build": [], + "version": "1.3.14", + "docsUrl": "http://code.angularjs.org/1.3.14/docs" + }, + { + "raw": "v1.3.13", + "major": 1, + "minor": 3, + "patch": 13, + "prerelease": [], + "build": [], + "version": "1.3.13", + "docsUrl": "http://code.angularjs.org/1.3.13/docs" + }, + { + "raw": "v1.3.12", + "major": 1, + "minor": 3, + "patch": 12, + "prerelease": [], + "build": [], + "version": "1.3.12", + "docsUrl": "http://code.angularjs.org/1.3.12/docs" + }, + { + "raw": "v1.3.11", + "major": 1, + "minor": 3, + "patch": 11, + "prerelease": [], + "build": [], + "version": "1.3.11", + "docsUrl": "http://code.angularjs.org/1.3.11/docs" + }, + { + "raw": "v1.3.10", + "major": 1, + "minor": 3, + "patch": 10, + "prerelease": [], + "build": [], + "version": "1.3.10", + "docsUrl": "http://code.angularjs.org/1.3.10/docs" + }, + { + "raw": "v1.3.9", + "major": 1, + "minor": 3, + "patch": 9, + "prerelease": [], + "build": [], + "version": "1.3.9", + "docsUrl": "http://code.angularjs.org/1.3.9/docs" + }, + { + "raw": "v1.3.8", + "major": 1, + "minor": 3, + "patch": 8, + "prerelease": [], + "build": [], + "version": "1.3.8", + "docsUrl": "http://code.angularjs.org/1.3.8/docs" + }, + { + "raw": "v1.3.7", + "major": 1, + "minor": 3, + "patch": 7, + "prerelease": [], + "build": [], + "version": "1.3.7", + "docsUrl": "http://code.angularjs.org/1.3.7/docs" + }, + { + "raw": "v1.3.6", + "major": 1, + "minor": 3, + "patch": 6, + "prerelease": [], + "build": [], + "version": "1.3.6", + "docsUrl": "http://code.angularjs.org/1.3.6/docs" + }, + { + "raw": "v1.3.5", + "major": 1, + "minor": 3, + "patch": 5, + "prerelease": [], + "build": [], + "version": "1.3.5", + "docsUrl": "http://code.angularjs.org/1.3.5/docs" + }, + { + "raw": "v1.3.4", + "major": 1, + "minor": 3, + "patch": 4, + "prerelease": [], + "build": [], + "version": "1.3.4", + "docsUrl": "http://code.angularjs.org/1.3.4/docs" + }, + { + "raw": "v1.3.3", + "major": 1, + "minor": 3, + "patch": 3, + "prerelease": [], + "build": [], + "version": "1.3.3", + "docsUrl": "http://code.angularjs.org/1.3.3/docs" + }, + { + "raw": "v1.3.2", + "major": 1, + "minor": 3, + "patch": 2, + "prerelease": [], + "build": [], + "version": "1.3.2", + "docsUrl": "http://code.angularjs.org/1.3.2/docs" + }, + { + "raw": "v1.3.1", + "major": 1, + "minor": 3, + "patch": 1, + "prerelease": [], + "build": [], + "version": "1.3.1", + "docsUrl": "http://code.angularjs.org/1.3.1/docs" + }, + { + "raw": "v1.3.0", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [], + "build": [], + "version": "1.3.0", + "docsUrl": "http://code.angularjs.org/1.3.0/docs" + }, + { + "raw": "v1.3.0-rc.5", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "rc", + 5 + ], + "build": [], + "version": "1.3.0-rc.5", + "docsUrl": "http://code.angularjs.org/1.3.0-rc.5/docs" + }, + { + "raw": "v1.3.0-rc.4", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "rc", + 4 + ], + "build": [], + "version": "1.3.0-rc.4", + "docsUrl": "http://code.angularjs.org/1.3.0-rc.4/docs" + }, + { + "raw": "v1.3.0-rc.3", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "rc", + 3 + ], + "build": [], + "version": "1.3.0-rc.3", + "docsUrl": "http://code.angularjs.org/1.3.0-rc.3/docs" + }, + { + "raw": "v1.3.0-rc.2", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "rc", + 2 + ], + "build": [], + "version": "1.3.0-rc.2", + "docsUrl": "http://code.angularjs.org/1.3.0-rc.2/docs" + }, + { + "raw": "v1.3.0-rc.1", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "rc", + 1 + ], + "build": [], + "version": "1.3.0-rc.1", + "docsUrl": "http://code.angularjs.org/1.3.0-rc.1/docs" + }, + { + "raw": "v1.3.0-rc.0", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "rc", + 0 + ], + "build": [], + "version": "1.3.0-rc.0", + "docsUrl": "http://code.angularjs.org/1.3.0-rc.0/docs" + }, + { + "raw": "v1.3.0-beta.19", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 19 + ], + "build": [], + "version": "1.3.0-beta.19", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.19/docs" + }, + { + "raw": "v1.3.0-beta.18", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 18 + ], + "build": [], + "version": "1.3.0-beta.18", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.18/docs" + }, + { + "raw": "v1.3.0-beta.17", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 17 + ], + "build": [], + "version": "1.3.0-beta.17", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.17/docs" + }, + { + "raw": "v1.3.0-beta.16", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 16 + ], + "build": [], + "version": "1.3.0-beta.16", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.16/docs" + }, + { + "raw": "v1.3.0-beta.15", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 15 + ], + "build": [], + "version": "1.3.0-beta.15", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.15/docs" + }, + { + "raw": "v1.3.0-beta.14", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 14 + ], + "build": [], + "version": "1.3.0-beta.14", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.14/docs" + }, + { + "raw": "v1.3.0-beta.13", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 13 + ], + "build": [], + "version": "1.3.0-beta.13", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.13/docs" + }, + { + "raw": "v1.3.0-beta.12", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 12 + ], + "build": [], + "version": "1.3.0-beta.12", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.12/docs" + }, + { + "raw": "v1.3.0-beta.11", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 11 + ], + "build": [], + "version": "1.3.0-beta.11", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.11/docs" + }, + { + "raw": "v1.3.0-beta.10", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 10 + ], + "build": [], + "version": "1.3.0-beta.10", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.10/docs" + }, + { + "raw": "v1.3.0-beta.9", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 9 + ], + "build": [], + "version": "1.3.0-beta.9", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.9/docs" + }, + { + "raw": "v1.3.0-beta.8", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 8 + ], + "build": [], + "version": "1.3.0-beta.8", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.8/docs" + }, + { + "raw": "v1.3.0-beta.7", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 7 + ], + "build": [], + "version": "1.3.0-beta.7", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.7/docs" + }, + { + "raw": "v1.3.0-beta.6", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 6 + ], + "build": [], + "version": "1.3.0-beta.6", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.6/docs" + }, + { + "raw": "v1.3.0-beta.5", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 5 + ], + "build": [], + "version": "1.3.0-beta.5", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.5/docs" + }, + { + "raw": "v1.3.0-beta.4", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 4 + ], + "build": [], + "version": "1.3.0-beta.4", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.4/docs" + }, + { + "raw": "v1.3.0-beta.3", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 3 + ], + "build": [], + "version": "1.3.0-beta.3", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.3/docs" + }, + { + "raw": "v1.3.0-beta.2", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 2 + ], + "build": [], + "version": "1.3.0-beta.2", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.2/docs" + }, + { + "raw": "v1.3.0-beta.1", + "major": 1, + "minor": 3, + "patch": 0, + "prerelease": [ + "beta", + 1 + ], + "build": [], + "version": "1.3.0-beta.1", + "docsUrl": "http://code.angularjs.org/1.3.0-beta.1/docs" + }, + { + "raw": "v1.2.29", + "major": 1, + "minor": 2, + "patch": 29, + "prerelease": [], + "build": [], + "version": "1.2.29", + "docsUrl": "http://code.angularjs.org/1.2.29/docs" + }, + { + "raw": "v1.2.28", + "major": 1, + "minor": 2, + "patch": 28, + "prerelease": [], + "build": [], + "version": "1.2.28", + "docsUrl": "http://code.angularjs.org/1.2.28/docs" + }, + { + "raw": "v1.2.27", + "major": 1, + "minor": 2, + "patch": 27, + "prerelease": [], + "build": [], + "version": "1.2.27", + "docsUrl": "http://code.angularjs.org/1.2.27/docs" + }, + { + "raw": "v1.2.26", + "major": 1, + "minor": 2, + "patch": 26, + "prerelease": [], + "build": [], + "version": "1.2.26", + "docsUrl": "http://code.angularjs.org/1.2.26/docs" + }, + { + "raw": "v1.2.25", + "major": 1, + "minor": 2, + "patch": 25, + "prerelease": [], + "build": [], + "version": "1.2.25", + "docsUrl": "http://code.angularjs.org/1.2.25/docs" + }, + { + "raw": "v1.2.24", + "major": 1, + "minor": 2, + "patch": 24, + "prerelease": [], + "build": [], + "version": "1.2.24", + "docsUrl": "http://code.angularjs.org/1.2.24/docs" + }, + { + "raw": "v1.2.23", + "major": 1, + "minor": 2, + "patch": 23, + "prerelease": [], + "build": [], + "version": "1.2.23", + "docsUrl": "http://code.angularjs.org/1.2.23/docs" + }, + { + "raw": "v1.2.22", + "major": 1, + "minor": 2, + "patch": 22, + "prerelease": [], + "build": [], + "version": "1.2.22", + "docsUrl": "http://code.angularjs.org/1.2.22/docs" + }, + { + "raw": "v1.2.21", + "major": 1, + "minor": 2, + "patch": 21, + "prerelease": [], + "build": [], + "version": "1.2.21", + "docsUrl": "http://code.angularjs.org/1.2.21/docs" + }, + { + "raw": "v1.2.20", + "major": 1, + "minor": 2, + "patch": 20, + "prerelease": [], + "build": [], + "version": "1.2.20", + "docsUrl": "http://code.angularjs.org/1.2.20/docs" + }, + { + "raw": "v1.2.19", + "major": 1, + "minor": 2, + "patch": 19, + "prerelease": [], + "build": [], + "version": "1.2.19", + "docsUrl": "http://code.angularjs.org/1.2.19/docs" + }, + { + "raw": "v1.2.18", + "major": 1, + "minor": 2, + "patch": 18, + "prerelease": [], + "build": [], + "version": "1.2.18", + "docsUrl": "http://code.angularjs.org/1.2.18/docs" + }, + { + "raw": "v1.2.17", + "major": 1, + "minor": 2, + "patch": 17, + "prerelease": [], + "build": [], + "version": "1.2.17", + "docsUrl": "http://code.angularjs.org/1.2.17/docs" + }, + { + "raw": "v1.2.16", + "major": 1, + "minor": 2, + "patch": 16, + "prerelease": [], + "build": [], + "version": "1.2.16", + "docsUrl": "http://code.angularjs.org/1.2.16/docs" + }, + { + "raw": "v1.2.15", + "major": 1, + "minor": 2, + "patch": 15, + "prerelease": [], + "build": [], + "version": "1.2.15", + "docsUrl": "http://code.angularjs.org/1.2.15/docs" + }, + { + "raw": "v1.2.14", + "major": 1, + "minor": 2, + "patch": 14, + "prerelease": [], + "build": [], + "version": "1.2.14", + "docsUrl": "http://code.angularjs.org/1.2.14/docs" + }, + { + "raw": "v1.2.13", + "major": 1, + "minor": 2, + "patch": 13, + "prerelease": [], + "build": [], + "version": "1.2.13", + "docsUrl": "http://code.angularjs.org/1.2.13/docs" + }, + { + "raw": "v1.2.12", + "major": 1, + "minor": 2, + "patch": 12, + "prerelease": [], + "build": [], + "version": "1.2.12", + "docsUrl": "http://code.angularjs.org/1.2.12/docs" + }, + { + "raw": "v1.2.11", + "major": 1, + "minor": 2, + "patch": 11, + "prerelease": [], + "build": [], + "version": "1.2.11", + "docsUrl": "http://code.angularjs.org/1.2.11/docs" + }, + { + "raw": "v1.2.10", + "major": 1, + "minor": 2, + "patch": 10, + "prerelease": [], + "build": [], + "version": "1.2.10", + "docsUrl": "http://code.angularjs.org/1.2.10/docs" + }, + { + "raw": "v1.2.9", + "major": 1, + "minor": 2, + "patch": 9, + "prerelease": [], + "build": [], + "version": "1.2.9", + "docsUrl": "http://code.angularjs.org/1.2.9/docs" + }, + { + "raw": "v1.2.8", + "major": 1, + "minor": 2, + "patch": 8, + "prerelease": [], + "build": [], + "version": "1.2.8", + "docsUrl": "http://code.angularjs.org/1.2.8/docs" + }, + { + "raw": "v1.2.7", + "major": 1, + "minor": 2, + "patch": 7, + "prerelease": [], + "build": [], + "version": "1.2.7", + "docsUrl": "http://code.angularjs.org/1.2.7/docs" + }, + { + "raw": "v1.2.6", + "major": 1, + "minor": 2, + "patch": 6, + "prerelease": [], + "build": [], + "version": "1.2.6", + "docsUrl": "http://code.angularjs.org/1.2.6/docs" + }, + { + "raw": "v1.2.5", + "major": 1, + "minor": 2, + "patch": 5, + "prerelease": [], + "build": [], + "version": "1.2.5", + "docsUrl": "http://code.angularjs.org/1.2.5/docs" + }, + { + "raw": "v1.2.4", + "major": 1, + "minor": 2, + "patch": 4, + "prerelease": [], + "build": [], + "version": "1.2.4", + "docsUrl": "http://code.angularjs.org/1.2.4/docs" + }, + { + "raw": "v1.2.3", + "major": 1, + "minor": 2, + "patch": 3, + "prerelease": [], + "build": [], + "version": "1.2.3", + "docsUrl": "http://code.angularjs.org/1.2.3/docs" + }, + { + "raw": "v1.2.2", + "major": 1, + "minor": 2, + "patch": 2, + "prerelease": [], + "build": [], + "version": "1.2.2", + "docsUrl": "http://code.angularjs.org/1.2.2/docs" + }, + { + "raw": "v1.2.1", + "major": 1, + "minor": 2, + "patch": 1, + "prerelease": [], + "build": [], + "version": "1.2.1", + "docsUrl": "http://code.angularjs.org/1.2.1/docs" + }, + { + "raw": "v1.2.0", + "major": 1, + "minor": 2, + "patch": 0, + "prerelease": [], + "build": [], + "version": "1.2.0", + "docsUrl": "http://code.angularjs.org/1.2.0/docs" + }, + { + "raw": "v1.2.0-rc.3", + "major": 1, + "minor": 2, + "patch": 0, + "prerelease": [ + "rc", + 3 + ], + "build": [], + "version": "1.2.0-rc.3", + "docsUrl": "http://code.angularjs.org/1.2.0-rc.3/docs" + }, + { + "raw": "v1.2.0-rc.2", + "major": 1, + "minor": 2, + "patch": 0, + "prerelease": [ + "rc", + 2 + ], + "build": [], + "version": "1.2.0-rc.2", + "docsUrl": "http://code.angularjs.org/1.2.0-rc.2/docs" + }, + { + "raw": "v1.1.5", + "major": 1, + "minor": 1, + "patch": 5, + "prerelease": [], + "build": [], + "version": "1.1.5", + "docsUrl": "http://code.angularjs.org/1.1.5/docs" + }, + { + "raw": "v1.1.4", + "major": 1, + "minor": 1, + "patch": 4, + "prerelease": [], + "build": [], + "version": "1.1.4", + "docsUrl": "http://code.angularjs.org/1.1.4/docs" + }, + { + "raw": "v1.1.3", + "major": 1, + "minor": 1, + "patch": 3, + "prerelease": [], + "build": [], + "version": "1.1.3", + "docsUrl": "http://code.angularjs.org/1.1.3/docs" + }, + { + "raw": "v1.1.2", + "major": 1, + "minor": 1, + "patch": 2, + "prerelease": [], + "build": [], + "version": "1.1.2", + "docsUrl": "http://code.angularjs.org/1.1.2/docs" + }, + { + "raw": "v1.1.1", + "major": 1, + "minor": 1, + "patch": 1, + "prerelease": [], + "build": [], + "version": "1.1.1", + "docsUrl": "http://code.angularjs.org/1.1.1/docs" + }, + { + "raw": "v1.1.0", + "major": 1, + "minor": 1, + "patch": 0, + "prerelease": [], + "build": [], + "version": "1.1.0", + "docsUrl": "http://code.angularjs.org/1.1.0/docs" + }, + { + "raw": "v1.0.8", + "major": 1, + "minor": 0, + "patch": 8, + "prerelease": [], + "build": [], + "version": "1.0.8", + "docsUrl": "http://code.angularjs.org/1.0.8/docs" + }, + { + "raw": "v1.0.7", + "major": 1, + "minor": 0, + "patch": 7, + "prerelease": [], + "build": [], + "version": "1.0.7", + "docsUrl": "http://code.angularjs.org/1.0.7/docs" + }, + { + "raw": "v1.0.6", + "major": 1, + "minor": 0, + "patch": 6, + "prerelease": [], + "build": [], + "version": "1.0.6", + "docsUrl": "http://code.angularjs.org/1.0.6/docs" + }, + { + "raw": "v1.0.5", + "major": 1, + "minor": 0, + "patch": 5, + "prerelease": [], + "build": [], + "version": "1.0.5", + "docsUrl": "http://code.angularjs.org/1.0.5/docs" + }, + { + "raw": "v1.0.4", + "major": 1, + "minor": 0, + "patch": 4, + "prerelease": [], + "build": [], + "version": "1.0.4", + "docsUrl": "http://code.angularjs.org/1.0.4/docs" + }, + { + "raw": "v1.0.3", + "major": 1, + "minor": 0, + "patch": 3, + "prerelease": [], + "build": [], + "version": "1.0.3", + "docsUrl": "http://code.angularjs.org/1.0.3/docs" + }, + { + "raw": "v1.0.2", + "major": 1, + "minor": 0, + "patch": 2, + "prerelease": [], + "build": [], + "version": "1.0.2", + "docsUrl": "http://code.angularjs.org/1.0.2/docs" + }, + { + "raw": "v1.0.1", + "major": 1, + "minor": 0, + "patch": 1, + "prerelease": [], + "build": [], + "version": "1.0.1", + "docsUrl": "http://code.angularjs.org/1.0.1/docs" + }, + { + "raw": "v1.0.0", + "major": 1, + "minor": 0, + "patch": 0, + "prerelease": [], + "build": [], + "version": "1.0.0", + "docsUrl": "http://code.angularjs.org/1.0.0/docs" + }, + { + "raw": "v1.0.0-rc2", + "major": 1, + "minor": 0, + "patch": 0, + "prerelease": [ + "rc2" + ], + "build": [], + "version": "1.0.0-rc2", + "docsUrl": "http://code.angularjs.org/1.0.0-rc2/docs" + } +]); diff --git a/1.2.30/docs/partials/api.html b/1.2.30/docs/partials/api.html new file mode 100644 index 0000000000..848ca3b1ed --- /dev/null +++ b/1.2.30/docs/partials/api.html @@ -0,0 +1,278 @@ + Improve this Doc + + +

      AngularJS API Docs

      +

      Welcome to the AngularJS API docs page. These pages contain the AngularJS reference materials for version .

      +

      The documentation is organized into modules which contain various components of an AngularJS application. +These components are directives, services, filters, providers, templates, global APIs, and testing mocks.

      +
      +Angular Namespaces $ and $$ + +To prevent accidental name collisions with your code, +Angular prefixes names of public objects with $ and names of private objects with $$. +Please do not use the $ or $$ prefix in your code. +
      + +

      Angular Namespace

      + +

      This module is provided by default and contains the core components of AngularJS.

      + + + + + + + + + + + + + + + + + +
      Directives +

      + This is the core collection of directives you would use in your template code to build an AngularJS application. +

      + +

      + Some examples include: + ngClick, + ngInclude, + ngRepeat, + etc…
      +

      +
      + Services / Factories + +

      + This is the core collection of services which are used within the DI of your application. +

      +

      + Some examples include: + $compile, + $http, + $location, + etc… +

      +

      + Filters + +

      + The core filters available in the ng module are used to transform template data before it is rendered within directives and expressions. +

      +

      + Some examples include: + filter, + date, + currency, + lowercase, + uppercase, + etc... +

      +
      + Global APIs + +

      + The core global API functions are attached to the angular object. These core functions are useful for low level JavaScript operations within your application. +

      +

      + Some examples include: + angular.copy(), + angular.equals(), + angular.element(), + etc... +

      +
      + + + +

      Use ngRoute to enable URL routing to your application. The ngRoute module supports URL management via both hashbang and HTML5 pushState.

      +
      Include the angular-route.js file and set ngRoute as a dependency for this to work in your application.
      + + + + + + + + + + +
      + Services / Factories + + The following services are used for route management: +
        +
      • $routeParams is used to access the querystring values present in the URL.
      • +
      • $route is used to access the details of the route that is currently being accessed.
      • +
      • $routeProvider is used to register routes for the application.
      • +
      +
      + Directives + + The ngView directive will display the template of the current route within the page. +
      + + + +

      Use ngAnimate to enable animation features within your application. Various core ng directives will provide +animation hooks into your application when ngAnimate is included. Animations are defined by using CSS transitions/animations +or JavaScript callbacks.

      +
      Include the angular-animate.js file and set ngAnimate as a dependency for this to work in your application.
      + + + + + + + + + + + + + + +
      + Services / Factories + + Use $animate to trigger animation operations within your directive code. +
      + CSS-based animations + + Follow ngAnimate’s CSS naming structure to reference CSS transitions / keyframe animations in AngularJS. Once defined, the animation can be triggered by referencing the CSS class within the HTML template code. +
      + JS-based animations + + Use module.animation() to register a JavaScript animation. Once registered, the animation can be triggered by referencing the CSS class within the HTML template code. +
      + + + +

      Use the ngResource module when querying and posting data to a REST API.

      +
      Include the angular-resource.js file and set ngResource as a dependency for this to work in your application.
      + + + + + + +
      + Services / Factories + + The $resource service is used to define RESTful objects which communicate with a REST API. +
      + + +

      Use the ngCookies module to handle cookie management within your application.

      +
      Include the angular-cookies.js file and set ngCookies as a dependency for this to work in your application.
      + + + + + + +
      + Services / Factories + + The following services are used for cookie management: +
        +
      • The $cookie service is a convenient wrapper to store simple data within browser cookies.
      • +
      • $cookieStore is used to store more complex data using serialization.
      • +
      +
      + + +

      Use ngTouch when developing for mobile browsers/devices.

      +
      Include the angular-touch.js file and set ngTouch as a dependency for this to work in your application.
      + + + + + + + + + + +
      + Services / Factories + + The $swipe service is used to register and manage mobile DOM events. +
      + Directives + + Various directives are available in ngTouch to emulate mobile DOM events. +
      + + +

      Use ngSanitize to securely parse and manipulate HTML data in your application.

      +
      Include the angular-sanitize.js file and set ngSanitize as a dependency for this to work in your application.
      + + + + + + + + + + +
      + Services / Factories + + The $sanitize service is used to clean up dangerous HTML code in a quick and convenient way. +
      + Filters + + The linky filter is used to turn URLs into HTML links within the provided string. +
      + + +

      Use ngMock to inject and mock modules, factories, services and providers within your unit tests

      +
      Include the angular-mocks.js file into your test runner for this to work.
      + + + + + + + + + + +
      + Services / Factories + +

      + ngMock will extend the behavior of various core services to become testing aware and manageable in a synchronous manner. +

      + +

      + Some examples include: + $timeout, + $interval, + $log, + $httpBackend, + etc... +

      +

      + Global APIs + +

      + Various helper functions are available to inject and mock modules within unit test code. +

      + +

      + Some examples + inject(), + module(), + dump(), + etc... +

      +

      + diff --git a/1.2.30/docs/partials/api/auto.html b/1.2.30/docs/partials/api/auto.html new file mode 100644 index 0000000000..986117a2cf --- /dev/null +++ b/1.2.30/docs/partials/api/auto.html @@ -0,0 +1,47 @@ + Improve this Doc + + +

      + auto +

      + +

      Implicit module which gets automatically added to each $injector.

      + + + + +
      +

      Module Components

      + +
      +

      Service

      + + + + + + + + + + + + + + + + +
      NameDescription
      $injector

      $injector is used to retrieve object instances as defined by +provider, instantiate types, invoke methods, +and load modules.

      +
      $provide

      The $provide service has a number of methods for registering components +with the $injector. Many of these functions are also exposed on +angular.Module.

      +
      +
      + +
      + + + + diff --git a/1.2.30/docs/partials/api/auto/service.html b/1.2.30/docs/partials/api/auto/service.html new file mode 100644 index 0000000000..adb0886e99 --- /dev/null +++ b/1.2.30/docs/partials/api/auto/service.html @@ -0,0 +1,33 @@ + +

      Service components in auto

      + + + +
      +
      + + + + + + + + + + + + + + + + +
      NameDescription
      $injector

      $injector is used to retrieve object instances as defined by +provider, instantiate types, invoke methods, +and load modules.

      +
      $provide

      The $provide service has a number of methods for registering components +with the $injector. Many of these functions are also exposed on +angular.Module.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/auto/service/$injector.html b/1.2.30/docs/partials/api/auto/service/$injector.html new file mode 100644 index 0000000000..7dcaabba63 --- /dev/null +++ b/1.2.30/docs/partials/api/auto/service/$injector.html @@ -0,0 +1,471 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $injector

      +
        + + + +
      1. + - service in module auto +
      2. +
      +
      + + + +
      +

      $injector is used to retrieve object instances as defined by +provider, instantiate types, invoke methods, +and load modules.

      +

      The following always holds true:

      +
      var $injector = angular.injector();
      +expect($injector.get('$injector')).toBe($injector);
      +expect($injector.invoke(function($injector){
      +  return $injector;
      +})).toBe($injector);
      +
      +

      Injection Function Annotation

      +

      JavaScript does not have annotations, and annotations are needed for dependency injection. The +following are all valid ways of annotating function with injection arguments and are equivalent.

      +
      // inferred (only works if code not minified/obfuscated)
      +$injector.invoke(function(serviceA){});
      +
      +// annotated
      +function explicit(serviceA) {};
      +explicit.$inject = ['serviceA'];
      +$injector.invoke(explicit);
      +
      +// inline
      +$injector.invoke(['serviceA', function(serviceA){}]);
      +
      +

      Inference

      +

      In JavaScript calling toString() on a function returns the function definition. The definition +can then be parsed and the function arguments can be extracted. NOTE: This does not work with +minification, and obfuscation tools since these tools change the argument names.

      +

      $inject Annotation

      +

      By adding an $inject property onto a function the injection parameters can be specified.

      +

      Inline

      +

      As an array of injection names, where the last item in the array is the function to call.

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        get(name);

        + +

        +

        Return an instance of the service.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        The name of the instance to retrieve.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        The instance.

        +
        + + +
      • + +
      • +

        invoke(fn, [self], [locals]);

        + +

        +

        Invoke the method and supply the method arguments from the $injector.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + fn + + + + !Function + +

        The function to invoke. Function parameters are injected according to the + $inject Annotation rules.

        + + +
        + self + +
        (optional)
        +
        + Object + +

        The this for the invoked method.

        + + +
        + locals + +
        (optional)
        +
        + Object + +

        Optional object. If preset then any argument names are read from this + object first, before the $injector is consulted.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        the value returned by the invoked fn function.

        +
        + + +
      • + +
      • +

        has(name);

        + +

        +

        Allows the user to query if the particular service exists.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        Name of the service to query.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        boolean

        true if injector has given service.

        +
        + + +
      • + +
      • +

        instantiate(Type, [locals]);

        + +

        +

        Create a new instance of JS type. The method takes a constructor function, invokes the new +operator, and supplies all of the arguments to the constructor function as specified by the +constructor annotation.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + Type + + + + Function + +

        Annotated constructor function.

        + + +
        + locals + +
        (optional)
        +
        + Object + +

        Optional object. If preset then any argument names are read from this +object first, before the $injector is consulted.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        Object

        new instance of Type.

        +
        + + +
      • + +
      • +

        annotate(fn);

        + +

        +

        Returns an array of service names which the function is requesting for injection. This API is +used by the injector to determine which services need to be injected into the function when the +function is invoked. There are three ways in which the function can be annotated with the needed +dependencies.

        +

        Argument names

        +

        The simplest form is to extract the dependencies from the arguments of the function. This is done +by converting the function into a string using toString() method and extracting the argument +names.

        +
        // Given
        +function MyController($scope, $route) {
        +  // ...
        +}
        +
        +// Then
        +expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);
        +
        +

        This method does not work with code minification / obfuscation. For this reason the following +annotation strategies are supported.

        +

        The $inject property

        +

        If a function has an $inject property and its value is an array of strings, then the strings +represent names of services to be injected into the function.

        +
        // Given
        +var MyController = function(obfuscatedScope, obfuscatedRoute) {
        +  // ...
        +}
        +// Define function dependencies
        +MyController['$inject'] = ['$scope', '$route'];
        +
        +// Then
        +expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);
        +
        +

        The array notation

        +

        It is often desirable to inline Injected functions and that's when setting the $inject property +is very inconvenient. In these situations using the array notation to specify the dependencies in +a way that survives minification is a better choice:

        +
        // We wish to write this (not minification / obfuscation safe)
        +injector.invoke(function($compile, $rootScope) {
        +  // ...
        +});
        +
        +// We are forced to write break inlining
        +var tmpFn = function(obfuscatedCompile, obfuscatedRootScope) {
        +  // ...
        +};
        +tmpFn.$inject = ['$compile', '$rootScope'];
        +injector.invoke(tmpFn);
        +
        +// To better support inline function the inline annotation is supported
        +injector.invoke(['$compile', '$rootScope', function(obfCompile, obfRootScope) {
        +  // ...
        +}]);
        +
        +// Therefore
        +expect(injector.annotate(
        +   ['$compile', '$rootScope', function(obfus_$compile, obfus_$rootScope) {}])
        + ).toEqual(['$compile', '$rootScope']);
        +
        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + fn + + + + function()Array.<(string|function())> + +

        Function for which dependent service names need to +be retrieved as described above.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        Array.<string>

        The names of the services which the function requires.

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/auto/service/$provide.html b/1.2.30/docs/partials/api/auto/service/$provide.html new file mode 100644 index 0000000000..d89d217e9d --- /dev/null +++ b/1.2.30/docs/partials/api/auto/service/$provide.html @@ -0,0 +1,549 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $provide

      +
        + + + +
      1. + - service in module auto +
      2. +
      +
      + + + +
      +

      The $provide service has a number of methods for registering components +with the $injector. Many of these functions are also exposed on +angular.Module.

      +

      An Angular service is a singleton object created by a service factory. These service +factories are functions which, in turn, are created by a service provider. +The service providers are constructor functions. When instantiated they must contain a +property called $get, which holds the service factory function.

      +

      When you request a service, the $injector is responsible for finding the +correct service provider, instantiating it and then calling its $get service factory +function to get the instance of the service.

      +

      Often services have no configuration options and there is no need to add methods to the service +provider. The provider will be no more than a constructor function with a $get property. For +these cases the $provide service has additional helper methods to register +services without specifying a provider.

      +
        +
      • provider(provider) - registers a service provider with the + $injector
      • +
      • constant(obj) - registers a value/object that can be accessed by + providers and services.
      • +
      • value(obj) - registers a value/object that can only be accessed by + services, not providers.
      • +
      • factory(fn) - registers a service factory function, fn, + that will be wrapped in a service provider object, whose $get property will contain the + given factory function.
      • +
      • service(class) - registers a constructor function, class + that will be wrapped in a service provider object, whose $get property will instantiate + a new object using the given constructor function.
      • +
      +

      See the individual methods for more information and examples.

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        provider(name, provider);

        + +

        +

        Register a provider function with the $injector. Provider functions +are constructor functions, whose instances are responsible for "providing" a factory for a +service.

        +

        Service provider names start with the name of the service they provide followed by Provider. +For example, the $log service has a provider called +$logProvider.

        +

        Service provider objects can have additional methods which allow configuration of the provider +and its service. Importantly, you can configure what kind of service is created by the $get +method, or how that service will act. For example, the $logProvider has a +method debugEnabled +which lets you specify whether the $log service will log debug messages to the +console or not.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        The name of the instance. NOTE: the provider will be available under name + + 'Provider' key.

        + + +
        + provider + + + + Objectfunction() + +

        If the provider is:

        +
          +
        • Object: then it should have a $get method. The $get method will be invoked using +$injector.invoke() when an instance needs to be created.
        • +
        • Constructor: a new instance of the provider will be created using +$injector.instantiate(), then treated as object.
        • +
        + + +
        + + + + + + +

        Returns

        + + + + + +
        Object

        registered provider instance

        +
        + + +
      • + +
      • +

        factory(name, $getFn);

        + +

        +

        Register a service factory, which will be called to return the service instance. +This is short for registering a service where its provider consists of only a $get property, +which is the given service factory function. +You should use $provide.factory(getFn) if you do not need to +configure your service in a provider.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        The name of the instance.

        + + +
        + $getFn + + + + function() + +

        The $getFn for the instance creation. Internally this is a short hand + for $provide.provider(name, {$get: $getFn}).

        + + +
        + + + + + + +

        Returns

        + + + + + +
        Object

        registered provider instance

        +
        + + +
      • + +
      • +

        service(name, constructor);

        + +

        +

        Register a service constructor, which will be invoked with new to create the service +instance. +This is short for registering a service where its provider's $get property is the service +constructor function that will be used to instantiate the service instance.

        +

        You should use $provide.service(class) if you define your service +as a type/class.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        The name of the instance.

        + + +
        + constructor + + + + Function + +

        A class (constructor function) that will be instantiated.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        Object

        registered provider instance

        +
        + + +
      • + +
      • +

        value(name, value);

        + +

        +

        Register a value service with the $injector, such as a string, a +number, an array, an object or a function. This is short for registering a service where its +provider's $get property is a factory function that takes no arguments and returns the value +service.

        +

        Value services are similar to constant services, except that they cannot be injected into a +module configuration function (see angular.Module) but they can be overridden by +an Angular +decorator.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        The name of the instance.

        + + +
        + value + + + + * + +

        The value.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        Object

        registered provider instance

        +
        + + +
      • + +
      • +

        constant(name, value);

        + +

        +

        Register a constant service, such as a string, a number, an array, an object or a function, +with the $injector. Unlike value it can be +injected into a module configuration function (see angular.Module) and it cannot +be overridden by an Angular decorator.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        The name of the constant.

        + + +
        + value + + + + * + +

        The constant value.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        Object

        registered instance

        +
        + + +
      • + +
      • +

        decorator(name, decorator);

        + +

        +

        Register a service decorator with the $injector. A service decorator +intercepts the creation of a service, allowing it to override or modify the behaviour of the +service. The object returned by the decorator may be the original service, or a new service +object which replaces or wraps and delegates to the original service.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        The name of the service to decorate.

        + + +
        + decorator + + + + function() + +

        This function will be invoked when the service needs to be + instantiated and should return the decorated service instance. The function is called using + the injector.invoke method and is therefore fully injectable. + Local injection arguments:

        +
          +
        • $delegate - The original service instance, which can be monkey patched, configured, +decorated or delegated to.
        • +
        + + +
        + + + + + + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng.html b/1.2.30/docs/partials/api/ng.html new file mode 100644 index 0000000000..6602fa8caf --- /dev/null +++ b/1.2.30/docs/partials/api/ng.html @@ -0,0 +1,1141 @@ + Improve this Doc + + +

      + ng +

      + +

      ng (core module)

      +

      The ng module is loaded by default when an AngularJS application is started. The module itself +contains the essential components for an AngularJS application to function. The table below +lists a high level breakdown of each of the services/factories, filters, directives and testing +components available within this core module.

      +
      + + + +
      +

      Module Components

      + +
      +

      Function

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      angular.lowercase

      Converts the specified string to lowercase.

      +
      angular.uppercase

      Converts the specified string to uppercase.

      +
      angular.forEach

      Invokes the iterator function once for each item in obj collection, which can be either an +object or an array. The iterator function is invoked with iterator(value, key), where value +is the value of an object property or an array element and key is the object property key or +array element index. Specifying a context for the function is optional.

      +
      angular.extend

      Extends the destination object dst by copying own enumerable properties from the src object(s) +to dst. You can specify multiple src objects.

      +
      angular.noop

      A function that performs no operations. This function can be useful when writing code in the +functional style.

      +
      function foo(callback) {
      +  var result = calculateResult();
      +  (callback || angular.noop)(result);
      +}
      +
      +
      angular.identity

      A function that returns its first argument. This function is useful when writing code in the +functional style.

      +
      angular.isUndefined

      Determines if a reference is undefined.

      +
      angular.isDefined

      Determines if a reference is defined.

      +
      angular.isObject

      Determines if a reference is an Object. Unlike typeof in JavaScript, nulls are not +considered to be objects. Note that JavaScript arrays are objects.

      +
      angular.isString

      Determines if a reference is a String.

      +
      angular.isNumber

      Determines if a reference is a Number.

      +
      angular.isDate

      Determines if a value is a date.

      +
      angular.isArray

      Determines if a reference is an Array.

      +
      angular.isFunction

      Determines if a reference is a Function.

      +
      angular.isElement

      Determines if a reference is a DOM element (or wrapped jQuery element).

      +
      angular.copy

      Creates a deep copy of source, which should be an object or an array.

      +
      angular.equals

      Determines if two objects or two values are equivalent. Supports value types, regular +expressions, arrays and objects.

      +
      angular.bind

      Returns a function which calls function fn bound to self (self becomes the this for +fn). You can supply optional args that are prebound to the function. This feature is also +known as partial application, as +distinguished from function currying.

      +
      angular.toJson

      Serializes input into a JSON-formatted string. Properties with leading $ characters will be +stripped since angular uses this notation internally.

      +
      angular.fromJson

      Deserializes a JSON string.

      +
      angular.bootstrap

      Use this function to manually start up angular application.

      +
      angular.injector

      Creates an injector object that can be used for retrieving services as well as for +dependency injection (see dependency injection).

      +
      angular.element

      Wraps a raw DOM element or HTML string as a jQuery element.

      +
      angular.module

      The angular.module is a global place for creating, registering and retrieving Angular +modules. +All modules (angular core or 3rd party) that should be available to an application must be +registered using this mechanism.

      +
      +
      + +
      +

      Directive

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      ngApp

      Use this directive to auto-bootstrap an AngularJS application. The ngApp directive +designates the root element of the application and is typically placed near the root element +of the page - e.g. on the <body> or <html> tags.

      +
      a

      Modifies the default behavior of the html A tag so that the default action is prevented when +the href attribute is empty.

      +
      ngHref

      Using Angular markup like {{hash}} in an href attribute will +make the link go to the wrong URL if the user clicks it before +Angular has a chance to replace the {{hash}} markup with its +value. Until Angular replaces the markup the link will be broken +and will most likely return a 404 error. The ngHref directive +solves this problem.

      +
      ngSrc

      Using Angular markup like {{hash}} in a src attribute doesn't +work right: The browser will fetch from the URL with the literal +text {{hash}} until Angular replaces the expression inside +{{hash}}. The ngSrc directive solves this problem.

      +
      ngSrcset

      Using Angular markup like {{hash}} in a srcset attribute doesn't +work right: The browser will fetch from the URL with the literal +text {{hash}} until Angular replaces the expression inside +{{hash}}. The ngSrcset directive solves this problem.

      +
      ngDisabled

      We shouldn't do this, because it will make the button enabled on Chrome/Firefox but not on IE8 and older IEs:

      +
      <div ng-init="scope = { isDisabled: false }">
      +<button disabled="{{scope.isDisabled}}">Disabled</button>
      +</div>
      +
      +
      ngChecked

      The HTML specification does not require browsers to preserve the values of boolean attributes +such as checked. (Their presence means true and their absence means false.) +If we put an Angular interpolation expression into such an attribute then the +binding information would be lost when the browser removes the attribute. +The ngChecked directive solves this problem for the checked attribute. +This complementary directive is not removed by the browser and so provides +a permanent reliable place to store the binding information.

      +
      ngReadonly

      The HTML specification does not require browsers to preserve the values of boolean attributes +such as readonly. (Their presence means true and their absence means false.) +If we put an Angular interpolation expression into such an attribute then the +binding information would be lost when the browser removes the attribute. +The ngReadonly directive solves this problem for the readonly attribute. +This complementary directive is not removed by the browser and so provides +a permanent reliable place to store the binding information.

      +
      ngSelected

      The HTML specification does not require browsers to preserve the values of boolean attributes +such as selected. (Their presence means true and their absence means false.) +If we put an Angular interpolation expression into such an attribute then the +binding information would be lost when the browser removes the attribute. +The ngSelected directive solves this problem for the selected attribute. +This complementary directive is not removed by the browser and so provides +a permanent reliable place to store the binding information.

      +
      ngOpen

      The HTML specification does not require browsers to preserve the values of boolean attributes +such as open. (Their presence means true and their absence means false.) +If we put an Angular interpolation expression into such an attribute then the +binding information would be lost when the browser removes the attribute. +The ngOpen directive solves this problem for the open attribute. +This complementary directive is not removed by the browser and so provides +a permanent reliable place to store the binding information.

      +
      ngForm

      Nestable alias of form directive. HTML +does not allow nesting of form elements. It is useful to nest forms, for example if the validity of a +sub-group of controls needs to be determined.

      +
      form

      Directive that instantiates +FormController.

      +
      textarea

      HTML textarea element control with angular data-binding. The data-binding and validation +properties of this element are exactly the same as those of the +input element.

      +
      input

      HTML input element control with angular data-binding. Input control follows HTML5 input types +and polyfills the HTML5 validation behavior for older browsers.

      +
      ngModel

      The ngModel directive binds an input,select, textarea (or custom form control) to a +property on the scope using NgModelController, +which is created and exposed by this directive.

      +
      ngChange

      Evaluate the given expression when the user changes the input. +The expression is evaluated immediately, unlike the JavaScript onchange event +which only triggers at the end of a change (usually, when the user leaves the +form element or presses the return key). +The expression is not evaluated when the value change is coming from the model.

      +
      ngList

      Text input that converts between a delimited string and an array of strings. The delimiter +can be a fixed string (by default a comma) or a regular expression.

      +
      ngValue

      Binds the given expression to the value of input[select] or input[radio], so +that when the element is selected, the ngModel of that element is set to the +bound value.

      +
      ngBind

      The ngBind attribute tells Angular to replace the text content of the specified HTML element +with the value of a given expression, and to update the text content when the value of that +expression changes.

      +
      ngBindTemplate

      The ngBindTemplate directive specifies that the element +text content should be replaced with the interpolation of the template +in the ngBindTemplate attribute. +Unlike ngBind, the ngBindTemplate can contain multiple {{ }} +expressions. This directive is needed since some HTML elements +(such as TITLE and OPTION) cannot contain SPAN elements.

      +
      ngBindHtml

      Creates a binding that will innerHTML the result of evaluating the expression into the current +element in a secure way. By default, the innerHTML-ed content will be sanitized using the $sanitize service. To utilize this functionality, ensure that $sanitize +is available, for example, by including ngSanitize in your module's dependencies (not in +core Angular). In order to use ngSanitize in your module's dependencies, you need to +include "angular-sanitize.js" in your application.

      +
      ngClass

      The ngClass directive allows you to dynamically set CSS classes on an HTML element by databinding +an expression that represents all classes to be added.

      +
      ngClassOdd

      The ngClassOdd and ngClassEven directives work exactly as +ngClass, except they work in +conjunction with ngRepeat and take effect only on odd (even) rows.

      +
      ngClassEven

      The ngClassOdd and ngClassEven directives work exactly as +ngClass, except they work in +conjunction with ngRepeat and take effect only on odd (even) rows.

      +
      ngCloak

      The ngCloak directive is used to prevent the Angular html template from being briefly +displayed by the browser in its raw (uncompiled) form while your application is loading. Use this +directive to avoid the undesirable flicker effect caused by the html template display.

      +
      ngController

      The ngController directive attaches a controller class to the view. This is a key aspect of how angular +supports the principles behind the Model-View-Controller design pattern.

      +
      ngCsp

      Enables CSP (Content Security Policy) support.

      +
      ngClick

      The ngClick directive allows you to specify custom behavior when +an element is clicked.

      +
      ngDblclick

      The ngDblclick directive allows you to specify custom behavior on a dblclick event.

      +
      ngMousedown

      The ngMousedown directive allows you to specify custom behavior on mousedown event.

      +
      ngMouseup

      Specify custom behavior on mouseup event.

      +
      ngMouseover

      Specify custom behavior on mouseover event.

      +
      ngMouseenter

      Specify custom behavior on mouseenter event.

      +
      ngMouseleave

      Specify custom behavior on mouseleave event.

      +
      ngMousemove

      Specify custom behavior on mousemove event.

      +
      ngKeydown

      Specify custom behavior on keydown event.

      +
      ngKeyup

      Specify custom behavior on keyup event.

      +
      ngKeypress

      Specify custom behavior on keypress event.

      +
      ngSubmit

      Enables binding angular expressions to onsubmit events.

      +
      ngFocus

      Specify custom behavior on focus event.

      +
      ngBlur

      Specify custom behavior on blur event.

      +
      ngCopy

      Specify custom behavior on copy event.

      +
      ngCut

      Specify custom behavior on cut event.

      +
      ngPaste

      Specify custom behavior on paste event.

      +
      ngIf

      The ngIf directive removes or recreates a portion of the DOM tree based on an +{expression}. If the expression assigned to ngIf evaluates to a false +value then the element is removed from the DOM, otherwise a clone of the +element is reinserted into the DOM.

      +
      ngInclude

      Fetches, compiles and includes an external HTML fragment.

      +
      ngInit

      The ngInit directive allows you to evaluate an expression in the +current scope.

      +
      ngNonBindable

      The ngNonBindable directive tells Angular not to compile or bind the contents of the current +DOM element. This is useful if the element contains what appears to be Angular directives and +bindings but which should be ignored by Angular. This could be the case if you have a site that +displays snippets of code, for instance.

      +
      ngPluralize

      ngPluralize is a directive that displays messages according to en-US localization rules. +These rules are bundled with angular.js, but can be overridden +(see Angular i18n dev guide). You configure ngPluralize directive +by specifying the mappings between +plural categories +and the strings to be displayed.

      +
      ngRepeat

      The ngRepeat directive instantiates a template once per item from a collection. Each template +instance gets its own scope, where the given loop variable is set to the current collection item, +and $index is set to the item index or key.

      +
      ngShow

      The ngShow directive shows or hides the given HTML element based on the expression +provided to the ngShow attribute. The element is shown or hidden by removing or adding +the .ng-hide CSS class onto the element. The .ng-hide CSS class is predefined +in AngularJS and sets the display style to none (using an !important flag). +For CSP mode please add angular-csp.css to your html file (see ngCsp).

      +
      ngHide

      The ngHide directive shows or hides the given HTML element based on the expression +provided to the ngHide attribute. The element is shown or hidden by removing or adding +the ng-hide CSS class onto the element. The .ng-hide CSS class is predefined +in AngularJS and sets the display style to none (using an !important flag). +For CSP mode please add angular-csp.css to your html file (see ngCsp).

      +
      ngStyle

      The ngStyle directive allows you to set CSS style on an HTML element conditionally.

      +
      ngSwitch

      The ngSwitch directive is used to conditionally swap DOM structure on your template based on a scope expression. +Elements within ngSwitch but without ngSwitchWhen or ngSwitchDefault directives will be preserved at the location +as specified in the template.

      +
      ngTransclude

      Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion.

      +
      script

      Load the content of a <script> element into $templateCache, so that the +template can be used by ngInclude, +ngView, or directives. The type of the +<script> element must be specified as text/ng-template, and a cache name for the template must be +assigned through the element's id, which can then be used as a directive's templateUrl.

      +
      select

      HTML SELECT element with angular data-binding.

      +
      +
      + +
      +

      Object

      + + + + + + + + + + + +
      NameDescription
      angular.version

      An object that contains information about the current AngularJS version. This object has the +following properties:

      +
      +
      + +
      +

      Type

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      angular.Module

      Interface for configuring angular modules.

      +
      $cacheFactory.Cache

      A cache object used to store and retrieve data, primarily used by +$http and the script directive to cache +templates and other data.

      +
      $compile.directive.Attributes

      A shared object between directive compile / linking functions which contains normalized DOM +element attributes. The values reflect current binding state {{ }}. The normalization is +needed since all of these are treated as equivalent in Angular:

      +
      form.FormController

      FormController keeps track of all its controls and nested forms as well as the state of them, +such as being valid/invalid or dirty/pristine.

      +
      ngModel.NgModelController

      NgModelController provides API for the ng-model directive. The controller contains +services for data-binding, validation, CSS updates, and value formatting and parsing. It +purposefully does not contain any logic which deals with DOM rendering or listening to +DOM events. Such DOM related logic should be provided by other directives which make use of +NgModelController for data-binding.

      +
      $rootScope.Scope

      A root scope can be retrieved using the $rootScope key from the +$injector. Child scopes are created using the +$new() method. (Most scopes are created automatically when +compiled HTML template is executed.)

      +
      +
      + +
      +

      Service

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      $anchorScroll

      When called, it checks current value of $location.hash() and scrolls to the related element, +according to rules specified in +Html5 spec.

      +
      $animate

      The $animate service provides rudimentary DOM manipulation functions to +insert, remove and move elements within the DOM, as well as adding and removing classes. +This service is the core service used by the ngAnimate $animator service which provides +high-level animation hooks for CSS and JavaScript.

      +
      $cacheFactory

      Factory that constructs Cache objects and gives access to +them.

      +
      $templateCache

      The first time a template is used, it is loaded in the template cache for quick retrieval. You +can load templates directly into the cache in a script tag, or by consuming the +$templateCache service directly.

      +
      $compile

      Compiles an HTML string or DOM into a template and produces a template function, which +can then be used to link scope and the template together.

      +
      $controller

      $controller service is responsible for instantiating controllers.

      +
      $document

      A jQuery or jqLite wrapper for the browser's window.document object.

      +
      $exceptionHandler

      Any uncaught exception in angular expressions is delegated to this service. +The default implementation simply delegates to $log.error which logs it into +the browser console.

      +
      $filter

      Filters are used for formatting data displayed to the user.

      +
      $http

      The $http service is a core Angular service that facilitates communication with the remote +HTTP servers via the browser's XMLHttpRequest +object or via JSONP.

      +
      $httpBackend

      HTTP backend used by the service that delegates to +XMLHttpRequest object or JSONP and deals with browser incompatibilities.

      +
      $interpolate

      Compiles a string with markup into an interpolation function. This service is used by the +HTML $compile service for data binding. See +$interpolateProvider for configuring the +interpolation markup.

      +
      $interval

      Angular's wrapper for window.setInterval. The fn function is executed every delay +milliseconds.

      +
      $locale

      $locale service provides localization rules for various Angular components. As of right now the +only public api is:

      +
      $location

      The $location service parses the URL in the browser address bar (based on the +window.location) and makes the URL +available to your application. Changes to the URL in the address bar are reflected into +$location service and changes to $location are reflected into the browser address bar.

      +
      $log

      Simple service for logging. Default implementation safely writes the message +into the browser's console (if present).

      +
      $parse

      Converts Angular expression into a function.

      +
      $q

      A service that helps you run functions asynchronously, and use their return values (or exceptions) +when they are done processing.

      +
      $rootElement

      The root element of Angular application. This is either the element where ngApp was declared or the element passed into +angular.bootstrap. The element represent the root element of application. It is also the +location where the applications $injector service gets +published, it can be retrieved using $rootElement.injector().

      +
      $rootScope

      Every application has a single root scope. +All other scopes are descendant scopes of the root scope. Scopes provide separation +between the model and the view, via a mechanism for watching the model for changes. +They also provide an event emission/broadcast and subscription facility. See the +developer guide on scopes.

      +
      $sceDelegate

      $sceDelegate is a service that is used by the $sce service to provide Strict +Contextual Escaping (SCE) services to AngularJS.

      +
      $sce

      $sce is a service that provides Strict Contextual Escaping services to AngularJS.

      +
      $timeout

      Angular's wrapper for window.setTimeout. The fn function is wrapped into a try/catch +block and delegates any exceptions to +$exceptionHandler service.

      +
      $window

      A reference to the browser's window object. While window +is globally available in JavaScript, it causes testability problems, because +it is a global variable. In angular we always refer to it through the +$window service, so it may be overridden, removed or mocked for testing.

      +
      +
      + +
      +

      Provider

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      $animateProvider

      Default implementation of $animate that doesn't perform any animations, instead just +synchronously performs DOM +updates and calls done() callbacks.

      +
      $compileProvider
      $controllerProvider

      The $controller service is used by Angular to create new +controllers.

      +
      $filterProvider

      Filters are just functions which transform input to an output. However filters need to be +Dependency Injected. To achieve this a filter definition consists of a factory function which is +annotated with dependencies and is responsible for creating a filter function.

      +
      $httpProvider

      Use $httpProvider to change the default behavior of the $http service.

      +
      $interpolateProvider

      Used for configuring the interpolation markup. Defaults to {{ and }}.

      +
      $locationProvider

      Use the $locationProvider to configure how the application deep linking paths are stored.

      +
      $logProvider

      Use the $logProvider to configure how the application logs messages

      +
      $parseProvider

      $parseProvider can be used for configuring the default behavior of the $parse + service.

      +
      $rootScopeProvider

      Provider for the $rootScope service.

      +
      $sceDelegateProvider

      The $sceDelegateProvider provider allows developers to configure the $sceDelegate service. This allows one to get/set the whitelists and blacklists used to ensure +that the URLs used for sourcing Angular templates are safe. Refer $sceDelegateProvider.resourceUrlWhitelist and +$sceDelegateProvider.resourceUrlBlacklist

      +
      $sceProvider

      The $sceProvider provider allows developers to configure the $sce service.

      +
        +
      • enable/disable Strict Contextual Escaping (SCE) in a module
      • +
      • override the default implementation with a custom delegate
      • +
      +
      +
      + +
      +

      Input

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      input[text]

      Standard HTML text input with angular data binding, inherited by most of the input elements.

      +
      input[number]

      Text input with number validation and transformation. Sets the number validation +error if not a valid number.

      +
      input[url]

      Text input with URL validation. Sets the url validation error key if the content is not a +valid URL.

      +
      input[email]

      Text input with email validation. Sets the email validation error key if not a valid email +address.

      +
      input[radio]

      HTML radio button.

      +
      input[checkbox]

      HTML checkbox.

      +
      +
      + +
      +

      Filter

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      filter

      Selects a subset of items from array and returns it as a new array.

      +
      currency

      Formats a number as a currency (ie $1,234.56). When no currency symbol is provided, default +symbol for current locale is used.

      +
      number

      Formats a number as text.

      +
      date

      Formats date to a string based on the requested format.

      +
      json

      Allows you to convert a JavaScript object into JSON string.

      +
      lowercase

      Converts string to lowercase.

      +
      uppercase

      Converts string to uppercase.

      +
      limitTo

      Creates a new array or string containing only a specified number of elements. The elements +are taken from either the beginning or the end of the source array or string, as specified by +the value and sign (positive or negative) of limit.

      +
      orderBy

      Orders a specified array by the expression predicate. It is ordered alphabetically +for strings and numerically for numbers. Note: if you notice numbers are not being sorted +correctly, make sure they are actually being saved as numbers and not strings.

      +
      +
      + +
      + + + + diff --git a/1.2.30/docs/partials/api/ng/directive.html b/1.2.30/docs/partials/api/ng/directive.html new file mode 100644 index 0000000000..32c34265ca --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive.html @@ -0,0 +1,464 @@ + +

      Directive components in ng

      + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      ngApp

      Use this directive to auto-bootstrap an AngularJS application. The ngApp directive +designates the root element of the application and is typically placed near the root element +of the page - e.g. on the <body> or <html> tags.

      +
      a

      Modifies the default behavior of the html A tag so that the default action is prevented when +the href attribute is empty.

      +
      ngHref

      Using Angular markup like {{hash}} in an href attribute will +make the link go to the wrong URL if the user clicks it before +Angular has a chance to replace the {{hash}} markup with its +value. Until Angular replaces the markup the link will be broken +and will most likely return a 404 error. The ngHref directive +solves this problem.

      +
      ngSrc

      Using Angular markup like {{hash}} in a src attribute doesn't +work right: The browser will fetch from the URL with the literal +text {{hash}} until Angular replaces the expression inside +{{hash}}. The ngSrc directive solves this problem.

      +
      ngSrcset

      Using Angular markup like {{hash}} in a srcset attribute doesn't +work right: The browser will fetch from the URL with the literal +text {{hash}} until Angular replaces the expression inside +{{hash}}. The ngSrcset directive solves this problem.

      +
      ngDisabled

      We shouldn't do this, because it will make the button enabled on Chrome/Firefox but not on IE8 and older IEs:

      +
      <div ng-init="scope = { isDisabled: false }">
      +<button disabled="{{scope.isDisabled}}">Disabled</button>
      +</div>
      +
      +
      ngChecked

      The HTML specification does not require browsers to preserve the values of boolean attributes +such as checked. (Their presence means true and their absence means false.) +If we put an Angular interpolation expression into such an attribute then the +binding information would be lost when the browser removes the attribute. +The ngChecked directive solves this problem for the checked attribute. +This complementary directive is not removed by the browser and so provides +a permanent reliable place to store the binding information.

      +
      ngReadonly

      The HTML specification does not require browsers to preserve the values of boolean attributes +such as readonly. (Their presence means true and their absence means false.) +If we put an Angular interpolation expression into such an attribute then the +binding information would be lost when the browser removes the attribute. +The ngReadonly directive solves this problem for the readonly attribute. +This complementary directive is not removed by the browser and so provides +a permanent reliable place to store the binding information.

      +
      ngSelected

      The HTML specification does not require browsers to preserve the values of boolean attributes +such as selected. (Their presence means true and their absence means false.) +If we put an Angular interpolation expression into such an attribute then the +binding information would be lost when the browser removes the attribute. +The ngSelected directive solves this problem for the selected attribute. +This complementary directive is not removed by the browser and so provides +a permanent reliable place to store the binding information.

      +
      ngOpen

      The HTML specification does not require browsers to preserve the values of boolean attributes +such as open. (Their presence means true and their absence means false.) +If we put an Angular interpolation expression into such an attribute then the +binding information would be lost when the browser removes the attribute. +The ngOpen directive solves this problem for the open attribute. +This complementary directive is not removed by the browser and so provides +a permanent reliable place to store the binding information.

      +
      ngForm

      Nestable alias of form directive. HTML +does not allow nesting of form elements. It is useful to nest forms, for example if the validity of a +sub-group of controls needs to be determined.

      +
      form

      Directive that instantiates +FormController.

      +
      textarea

      HTML textarea element control with angular data-binding. The data-binding and validation +properties of this element are exactly the same as those of the +input element.

      +
      input

      HTML input element control with angular data-binding. Input control follows HTML5 input types +and polyfills the HTML5 validation behavior for older browsers.

      +
      ngModel

      The ngModel directive binds an input,select, textarea (or custom form control) to a +property on the scope using NgModelController, +which is created and exposed by this directive.

      +
      ngChange

      Evaluate the given expression when the user changes the input. +The expression is evaluated immediately, unlike the JavaScript onchange event +which only triggers at the end of a change (usually, when the user leaves the +form element or presses the return key). +The expression is not evaluated when the value change is coming from the model.

      +
      ngList

      Text input that converts between a delimited string and an array of strings. The delimiter +can be a fixed string (by default a comma) or a regular expression.

      +
      ngValue

      Binds the given expression to the value of input[select] or input[radio], so +that when the element is selected, the ngModel of that element is set to the +bound value.

      +
      ngBind

      The ngBind attribute tells Angular to replace the text content of the specified HTML element +with the value of a given expression, and to update the text content when the value of that +expression changes.

      +
      ngBindTemplate

      The ngBindTemplate directive specifies that the element +text content should be replaced with the interpolation of the template +in the ngBindTemplate attribute. +Unlike ngBind, the ngBindTemplate can contain multiple {{ }} +expressions. This directive is needed since some HTML elements +(such as TITLE and OPTION) cannot contain SPAN elements.

      +
      ngBindHtml

      Creates a binding that will innerHTML the result of evaluating the expression into the current +element in a secure way. By default, the innerHTML-ed content will be sanitized using the $sanitize service. To utilize this functionality, ensure that $sanitize +is available, for example, by including ngSanitize in your module's dependencies (not in +core Angular). In order to use ngSanitize in your module's dependencies, you need to +include "angular-sanitize.js" in your application.

      +
      ngClass

      The ngClass directive allows you to dynamically set CSS classes on an HTML element by databinding +an expression that represents all classes to be added.

      +
      ngClassOdd

      The ngClassOdd and ngClassEven directives work exactly as +ngClass, except they work in +conjunction with ngRepeat and take effect only on odd (even) rows.

      +
      ngClassEven

      The ngClassOdd and ngClassEven directives work exactly as +ngClass, except they work in +conjunction with ngRepeat and take effect only on odd (even) rows.

      +
      ngCloak

      The ngCloak directive is used to prevent the Angular html template from being briefly +displayed by the browser in its raw (uncompiled) form while your application is loading. Use this +directive to avoid the undesirable flicker effect caused by the html template display.

      +
      ngController

      The ngController directive attaches a controller class to the view. This is a key aspect of how angular +supports the principles behind the Model-View-Controller design pattern.

      +
      ngCsp

      Enables CSP (Content Security Policy) support.

      +
      ngClick

      The ngClick directive allows you to specify custom behavior when +an element is clicked.

      +
      ngDblclick

      The ngDblclick directive allows you to specify custom behavior on a dblclick event.

      +
      ngMousedown

      The ngMousedown directive allows you to specify custom behavior on mousedown event.

      +
      ngMouseup

      Specify custom behavior on mouseup event.

      +
      ngMouseover

      Specify custom behavior on mouseover event.

      +
      ngMouseenter

      Specify custom behavior on mouseenter event.

      +
      ngMouseleave

      Specify custom behavior on mouseleave event.

      +
      ngMousemove

      Specify custom behavior on mousemove event.

      +
      ngKeydown

      Specify custom behavior on keydown event.

      +
      ngKeyup

      Specify custom behavior on keyup event.

      +
      ngKeypress

      Specify custom behavior on keypress event.

      +
      ngSubmit

      Enables binding angular expressions to onsubmit events.

      +
      ngFocus

      Specify custom behavior on focus event.

      +
      ngBlur

      Specify custom behavior on blur event.

      +
      ngCopy

      Specify custom behavior on copy event.

      +
      ngCut

      Specify custom behavior on cut event.

      +
      ngPaste

      Specify custom behavior on paste event.

      +
      ngIf

      The ngIf directive removes or recreates a portion of the DOM tree based on an +{expression}. If the expression assigned to ngIf evaluates to a false +value then the element is removed from the DOM, otherwise a clone of the +element is reinserted into the DOM.

      +
      ngInclude

      Fetches, compiles and includes an external HTML fragment.

      +
      ngInit

      The ngInit directive allows you to evaluate an expression in the +current scope.

      +
      ngNonBindable

      The ngNonBindable directive tells Angular not to compile or bind the contents of the current +DOM element. This is useful if the element contains what appears to be Angular directives and +bindings but which should be ignored by Angular. This could be the case if you have a site that +displays snippets of code, for instance.

      +
      ngPluralize

      ngPluralize is a directive that displays messages according to en-US localization rules. +These rules are bundled with angular.js, but can be overridden +(see Angular i18n dev guide). You configure ngPluralize directive +by specifying the mappings between +plural categories +and the strings to be displayed.

      +
      ngRepeat

      The ngRepeat directive instantiates a template once per item from a collection. Each template +instance gets its own scope, where the given loop variable is set to the current collection item, +and $index is set to the item index or key.

      +
      ngShow

      The ngShow directive shows or hides the given HTML element based on the expression +provided to the ngShow attribute. The element is shown or hidden by removing or adding +the .ng-hide CSS class onto the element. The .ng-hide CSS class is predefined +in AngularJS and sets the display style to none (using an !important flag). +For CSP mode please add angular-csp.css to your html file (see ngCsp).

      +
      ngHide

      The ngHide directive shows or hides the given HTML element based on the expression +provided to the ngHide attribute. The element is shown or hidden by removing or adding +the ng-hide CSS class onto the element. The .ng-hide CSS class is predefined +in AngularJS and sets the display style to none (using an !important flag). +For CSP mode please add angular-csp.css to your html file (see ngCsp).

      +
      ngStyle

      The ngStyle directive allows you to set CSS style on an HTML element conditionally.

      +
      ngSwitch

      The ngSwitch directive is used to conditionally swap DOM structure on your template based on a scope expression. +Elements within ngSwitch but without ngSwitchWhen or ngSwitchDefault directives will be preserved at the location +as specified in the template.

      +
      ngTransclude

      Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion.

      +
      script

      Load the content of a <script> element into $templateCache, so that the +template can be used by ngInclude, +ngView, or directives. The type of the +<script> element must be specified as text/ng-template, and a cache name for the template must be +assigned through the element's id, which can then be used as a directive's templateUrl.

      +
      select

      HTML SELECT element with angular data-binding.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ng/directive/a.html b/1.2.30/docs/partials/api/ng/directive/a.html new file mode 100644 index 0000000000..b39e61e109 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/a.html @@ -0,0 +1,63 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      a

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Modifies the default behavior of the html A tag so that the default action is prevented when +the href attribute is empty.

      +

      This change permits the easy creation of action links with the ngClick directive +without changing the location or causing page reloads, e.g.: +<a href="" ng-click="list.addItem()">Add Item</a>

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        + +
      • as element: + +
        <a>
        ...
        </a>
        +
      • + +
      + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/form.html b/1.2.30/docs/partials/api/ng/directive/form.html new file mode 100644 index 0000000000..dee4b2c610 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/form.html @@ -0,0 +1,195 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      form

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Directive that instantiates +FormController.

      +

      If the name attribute is specified, the form controller is published onto the current scope under +this name.

      +

      Alias: ngForm

      +

      In Angular forms can be nested. This means that the outer form is valid when all of the child +forms are valid as well. However, browsers do not allow nesting of <form> elements, so +Angular provides the ngForm directive which behaves identically to +<form> but can be nested. This allows you to have nested forms, which is very useful when +using Angular validation directives in forms that are dynamically generated using the +ngRepeat directive. Since you cannot dynamically generate the name +attribute of input elements using interpolation, you have to wrap each set of repeated inputs in an +ngForm directive and nest these in an outer form element.

      +

      CSS classes

      +
        +
      • ng-valid is set if the form is valid.
      • +
      • ng-invalid is set if the form is invalid.
      • +
      • ng-pristine is set if the form is pristine.
      • +
      • ng-dirty is set if the form is dirty.
      • +
      +

      Keep in mind that ngAnimate can detect each of these classes when added and removed.

      +

      Submitting a form and preventing the default action

      +

      Since the role of forms in client-side Angular applications is different than in classical +roundtrip apps, it is desirable for the browser not to translate the form submission into a full +page reload that sends the data to the server. Instead some javascript logic should be triggered +to handle the form submission in an application-specific way.

      +

      For this reason, Angular prevents the default action (form submission to the server) unless the +<form> element has an action attribute specified.

      +

      You can use one of the following two ways to specify what javascript method should be called when +a form is submitted:

      +
        +
      • ngSubmit directive on the form element
      • +
      • ngClick directive on the first +button or input field of type submit (input[type=submit])
      • +
      +

      To prevent double execution of the handler, use only one of the ngSubmit +or ngClick directives. +This is because of the following form submission rules in the HTML specification:

      +
        +
      • If a form has only one input field then hitting enter in this field triggers form submit +(ngSubmit)
      • +
      • if a form has 2+ input fields and no buttons or input[type=submit] then hitting enter +doesn't trigger submit
      • +
      • if a form has one or more input fields and one or more buttons or input[type=submit] then +hitting enter in any of the input fields will trigger the click handler on the first button or +input[type=submit] (ngClick) and a submit handler on the enclosing form (ngSubmit)
      • +
      +

      Animation Hooks

      +

      Animations in ngForm are triggered when any of the associated CSS classes are added and removed. +These classes are: .ng-pristine, .ng-dirty, .ng-invalid and .ng-valid as well as any +other validations that are performed within the form. Animations in ngForm are similar to how +they work in ngClass and animations can be hooked into using CSS transitions, keyframes as well +as JS animations.

      +

      The following example shows a simple way to utilize CSS transitions to style a form element +that has been rendered as invalid after it has been validated:

      +
      +//be sure to include ngAnimate as a module to hook into more
      +//advanced animations
      +.my-form {
      +  transition:0.5s linear all;
      +  background: white;
      +}
      +.my-form.ng-invalid {
      +  background: red;
      +  color:white;
      +}
      +
      +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        + +
      • as element: + +
        <form
          [name=""]>
        ...
        </form>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + name + +
      (optional)
      +
      + string + +

      Name of the form. If specified, the form controller will be published into + related scope, under this name.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('formExample', [])
          .controller('FormController', ['$scope', function($scope) {
            $scope.userType = 'guest';
          }]);
      </script>
      <style>
       .my-form {
         -webkit-transition:all linear 0.5s;
         transition:all linear 0.5s;
         background: transparent;
       }
       .my-form.ng-invalid {
         background: red;
       }
      </style>
      <form name="myForm" ng-controller="FormController" class="my-form">
        userType: <input name="input" ng-model="userType" required>
        <span class="error" ng-show="myForm.input.$error.required">Required!</span><br>
        <tt>userType = {{userType}}</tt><br>
        <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br>
        <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br>
        <tt>myForm.$valid = {{myForm.$valid}}</tt><br>
        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br>
       </form>
      +
      + +
      +
      it('should initialize to model', function() {
        var userType = element(by.binding('userType'));
        var valid = element(by.binding('myForm.input.$valid'));
      
        expect(userType.getText()).toContain('guest');
        expect(valid.getText()).toContain('true');
      });
      
      it('should be invalid if empty', function() {
        var userType = element(by.binding('userType'));
        var valid = element(by.binding('myForm.input.$valid'));
        var userInput = element(by.model('userType'));
      
        userInput.clear();
        userInput.sendKeys('');
      
        expect(userType.getText()).toEqual('userType =');
        expect(valid.getText()).toContain('false');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/input.html b/1.2.30/docs/partials/api/ng/directive/input.html new file mode 100644 index 0000000000..12a50f4191 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/input.html @@ -0,0 +1,264 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      input

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      HTML input element control with angular data-binding. Input control follows HTML5 input types +and polyfills the HTML5 validation behavior for older browsers.

      +

      NOTE Not every feature offered is available for all input types.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        + +
      • as element: + +
        <input
          ng-model=""
          [name=""]
          [required=""]
          [ng-required=""]
          [ng-minlength=""]
          [ng-maxlength=""]
          [ng-pattern=""]
          [ng-change=""]
          [ng-trim=""]>
        ...
        </input>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngModel + + + + string + +

      Assignable angular expression to data-bind to.

      + + +
      + name + +
      (optional)
      +
      + string + +

      Property name of the form under which the control is published.

      + + +
      + required + +
      (optional)
      +
      + string + +

      Sets required validation error key if the value is not entered.

      + + +
      + ngRequired + +
      (optional)
      +
      + boolean + +

      Sets required attribute if set to true

      + + +
      + ngMinlength + +
      (optional)
      +
      + number + +

      Sets minlength validation error key if the value is shorter than + minlength.

      + + +
      + ngMaxlength + +
      (optional)
      +
      + number + +

      Sets maxlength validation error key if the value is longer than + maxlength.

      + + +
      + ngPattern + +
      (optional)
      +
      + string + +

      Sets pattern validation error key if the value does not match the + RegExp pattern expression. Expected value is /regexp/ for inline patterns or regexp for + patterns defined as scope expressions.

      + + +
      + ngChange + +
      (optional)
      +
      + string + +

      Angular expression to be executed when input changes due to user + interaction with the input element.

      + + +
      + ngTrim + +
      (optional)
      +
      + boolean + +

      If set to false Angular will not automatically trim the input. + This parameter is ignored for input[type=password] controls, which will never trim the + input.

      + +

      (default: true)

      +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
         angular.module('inputExample', [])
           .controller('ExampleController', ['$scope', function($scope) {
             $scope.user = {name: 'guest', last: 'visitor'};
           }]);
      </script>
      <div ng-controller="ExampleController">
        <form name="myForm">
          User name: <input type="text" name="userName" ng-model="user.name" required>
          <span class="error" ng-show="myForm.userName.$error.required">
            Required!</span><br>
          Last name: <input type="text" name="lastName" ng-model="user.last"
            ng-minlength="3" ng-maxlength="10">
          <span class="error" ng-show="myForm.lastName.$error.minlength">
            Too short!</span>
          <span class="error" ng-show="myForm.lastName.$error.maxlength">
            Too long!</span><br>
        </form>
        <hr>
        <tt>user = {{user}}</tt><br/>
        <tt>myForm.userName.$valid = {{myForm.userName.$valid}}</tt><br>
        <tt>myForm.userName.$error = {{myForm.userName.$error}}</tt><br>
        <tt>myForm.lastName.$valid = {{myForm.lastName.$valid}}</tt><br>
        <tt>myForm.lastName.$error = {{myForm.lastName.$error}}</tt><br>
        <tt>myForm.$valid = {{myForm.$valid}}</tt><br>
        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br>
        <tt>myForm.$error.minlength = {{!!myForm.$error.minlength}}</tt><br>
        <tt>myForm.$error.maxlength = {{!!myForm.$error.maxlength}}</tt><br>
      </div>
      +
      + +
      +
      var user = element(by.binding('{{user}}'));
      var userNameValid = element(by.binding('myForm.userName.$valid'));
      var lastNameValid = element(by.binding('myForm.lastName.$valid'));
      var lastNameError = element(by.binding('myForm.lastName.$error'));
      var formValid = element(by.binding('myForm.$valid'));
      var userNameInput = element(by.model('user.name'));
      var userLastInput = element(by.model('user.last'));
      
      it('should initialize to model', function() {
        expect(user.getText()).toContain('{"name":"guest","last":"visitor"}');
        expect(userNameValid.getText()).toContain('true');
        expect(formValid.getText()).toContain('true');
      });
      
      it('should be invalid if empty when required', function() {
        userNameInput.clear();
        userNameInput.sendKeys('');
      
        expect(user.getText()).toContain('{"last":"visitor"}');
        expect(userNameValid.getText()).toContain('false');
        expect(formValid.getText()).toContain('false');
      });
      
      it('should be valid if empty when min length is set', function() {
        userLastInput.clear();
        userLastInput.sendKeys('');
      
        expect(user.getText()).toContain('{"name":"guest","last":""}');
        expect(lastNameValid.getText()).toContain('true');
        expect(formValid.getText()).toContain('true');
      });
      
      it('should be invalid if less than required min length', function() {
        userLastInput.clear();
        userLastInput.sendKeys('xx');
      
        expect(user.getText()).toContain('{"name":"guest"}');
        expect(lastNameValid.getText()).toContain('false');
        expect(lastNameError.getText()).toContain('minlength');
        expect(formValid.getText()).toContain('false');
      });
      
      it('should be invalid if longer than max length', function() {
        userLastInput.clear();
        userLastInput.sendKeys('some ridiculously long name');
      
        expect(user.getText()).toContain('{"name":"guest"}');
        expect(lastNameValid.getText()).toContain('false');
        expect(lastNameError.getText()).toContain('maxlength');
        expect(formValid.getText()).toContain('false');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngApp.html b/1.2.30/docs/partials/api/ng/directive/ngApp.html new file mode 100644 index 0000000000..e8b109a0cf --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngApp.html @@ -0,0 +1,138 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngApp

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Use this directive to auto-bootstrap an AngularJS application. The ngApp directive +designates the root element of the application and is typically placed near the root element +of the page - e.g. on the <body> or <html> tags.

      +

      Only one AngularJS application can be auto-bootstrapped per HTML document. The first ngApp +found in the document will be used to define the root element to auto-bootstrap as an +application. To run multiple applications in an HTML document you must manually bootstrap them using +angular.bootstrap instead. AngularJS applications cannot be nested within each other.

      +

      You can specify an AngularJS module to be used as the root module for the application. This +module will be loaded into the $injector when the application is bootstrapped and +should contain the application code needed or have dependencies on other modules that will +contain the code. See angular.module for more information.

      +

      In the example below if the ngApp directive were not placed on the html element then the +document would not be compiled, the AppController would not be instantiated and the {{ a+b }} +would not be resolved to 3.

      +

      ngApp is the easiest, and most common, way to bootstrap an application.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="ngAppDemoController">
      I can add: {{a}} + {{b}} =  {{ a+b }}
      </div>
      +
      + +
      +
      angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {
      $scope.a = 1;
      $scope.b = 2;
      });
      +
      + + + +
      +
      + + +

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-app="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngApp + + + + angular.Module + +

      an optional application + module name to load.

      + + +
      + +
      + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngBind.html b/1.2.30/docs/partials/api/ng/directive/ngBind.html new file mode 100644 index 0000000000..33fba772d6 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngBind.html @@ -0,0 +1,137 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngBind

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngBind attribute tells Angular to replace the text content of the specified HTML element +with the value of a given expression, and to update the text content when the value of that +expression changes.

      +

      Typically, you don't use ngBind directly, but instead you use the double curly markup like +{{ expression }} which is similar but less verbose.

      +

      It is preferable to use ngBind instead of {{ expression }} if a template is momentarily +displayed by the browser in its raw state before Angular compiles it. Since ngBind is an +element attribute, it makes the bindings invisible to the user while the page is loading.

      +

      An alternative solution to this problem would be using the +ngCloak directive.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-bind="">
        ...
        </ANY>
        +
      • +
      • as CSS class: +
        <ANY class="ng-bind: ;"> ... </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngBind + + + + expression + +

      Expression to evaluate.

      + + +
      + +
      + + + + +

      Example

      Enter a name in the Live Preview text box; the greeting below the text box changes instantly. + + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('bindExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.name = 'Whirled';
          }]);
      </script>
      <div ng-controller="ExampleController">
        Enter name: <input type="text" ng-model="name"><br>
        Hello <span ng-bind="name"></span>!
      </div>
      +
      + +
      +
      it('should check ng-bind', function() {
        var nameInput = element(by.model('name'));
      
        expect(element(by.binding('name')).getText()).toBe('Whirled');
        nameInput.clear();
        nameInput.sendKeys('world');
        expect(element(by.binding('name')).getText()).toBe('world');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngBindHtml.html b/1.2.30/docs/partials/api/ng/directive/ngBindHtml.html new file mode 100644 index 0000000000..6d7e42d891 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngBindHtml.html @@ -0,0 +1,141 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngBindHtml

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Creates a binding that will innerHTML the result of evaluating the expression into the current +element in a secure way. By default, the innerHTML-ed content will be sanitized using the $sanitize service. To utilize this functionality, ensure that $sanitize +is available, for example, by including ngSanitize in your module's dependencies (not in +core Angular). In order to use ngSanitize in your module's dependencies, you need to +include "angular-sanitize.js" in your application.

      +

      You may also bypass sanitization for values you know are safe. To do so, bind to +an explicitly trusted value via $sce.trustAsHtml. See the example +under Strict Contextual Escaping (SCE).

      +

      Note: If a $sanitize service is unavailable and the bound value isn't explicitly trusted, you +will have an exception (instead of an exploit.)

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-bind-html="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngBindHtml + + + + expression + +

      Expression to evaluate.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="ExampleController">
       <p ng-bind-html="myHTML"></p>
      </div>
      +
      + +
      +
      angular.module('bindHtmlExample', ['ngSanitize'])
        .controller('ExampleController', ['$scope', function($scope) {
          $scope.myHTML =
             'I am an <code>HTML</code>string with ' +
             '<a href="#">links!</a> and other <em>stuff</em>';
        }]);
      +
      + +
      +
      it('should check ng-bind-html', function() {
        expect(element(by.binding('myHTML')).getText()).toBe(
            'I am an HTMLstring with links! and other stuff');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngBindTemplate.html b/1.2.30/docs/partials/api/ng/directive/ngBindTemplate.html new file mode 100644 index 0000000000..8af9584f6d --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngBindTemplate.html @@ -0,0 +1,131 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngBindTemplate

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngBindTemplate directive specifies that the element +text content should be replaced with the interpolation of the template +in the ngBindTemplate attribute. +Unlike ngBind, the ngBindTemplate can contain multiple {{ }} +expressions. This directive is needed since some HTML elements +(such as TITLE and OPTION) cannot contain SPAN elements.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-bind-template="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngBindTemplate + + + + string + +

      template of form + {{ expression }} to eval.

      + + +
      + +
      + + + + +

      Example

      Try it here: enter text in text box and watch the greeting change. + + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('bindExample', [])
          .controller('ExampleController', ['$scope', function ($scope) {
            $scope.salutation = 'Hello';
            $scope.name = 'World';
          }]);
      </script>
      <div ng-controller="ExampleController">
       Salutation: <input type="text" ng-model="salutation"><br>
       Name: <input type="text" ng-model="name"><br>
       <pre ng-bind-template="{{salutation}} {{name}}!"></pre>
      </div>
      +
      + +
      +
      it('should check ng-bind', function() {
        var salutationElem = element(by.binding('salutation'));
        var salutationInput = element(by.model('salutation'));
        var nameInput = element(by.model('name'));
      
        expect(salutationElem.getText()).toBe('Hello World!');
      
        salutationInput.clear();
        salutationInput.sendKeys('Greetings');
        nameInput.clear();
        nameInput.sendKeys('user');
      
        expect(salutationElem.getText()).toBe('Greetings user!');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngBlur.html b/1.2.30/docs/partials/api/ng/directive/ngBlur.html new file mode 100644 index 0000000000..44fd5fccef --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngBlur.html @@ -0,0 +1,99 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngBlur

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Specify custom behavior on blur event.

      +

      A blur event fires when +an element has lost focus.

      +

      Note: As the blur event is executed synchronously also during DOM manipulations +(e.g. removing a focussed input), +AngularJS executes the expression using scope.$evalAsync if the event is fired +during an $apply to ensure a consistent state.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <window, input, select, textarea, a
          ng-blur="">
        ...
        </window, input, select, textarea, a>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngBlur + + + + expression + +

      Expression to evaluate upon +blur. (Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      See ngClick

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngChange.html b/1.2.30/docs/partials/api/ng/directive/ngChange.html new file mode 100644 index 0000000000..9bcb0ee4e6 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngChange.html @@ -0,0 +1,131 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngChange

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Evaluate the given expression when the user changes the input. +The expression is evaluated immediately, unlike the JavaScript onchange event +which only triggers at the end of a change (usually, when the user leaves the +form element or presses the return key). +The expression is not evaluated when the value change is coming from the model.

      +

      Note, this directive requires ngModel to be present.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <input
          ng-change="">
        ...
        </input>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngChange + + + + expression + +

      Expression to evaluate upon change +in input value.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('changeExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.counter = 0;
            $scope.change = function() {
              $scope.counter++;
            };
          }]);
      </script>
      <div ng-controller="ExampleController">
        <input type="checkbox" ng-model="confirmed" ng-change="change()" id="ng-change-example1" />
        <input type="checkbox" ng-model="confirmed" id="ng-change-example2" />
        <label for="ng-change-example2">Confirmed</label><br />
        <tt>debug = {{confirmed}}</tt><br/>
        <tt>counter = {{counter}}</tt><br/>
      </div>
      +
      + +
      +
      var counter = element(by.binding('counter'));
      var debug = element(by.binding('confirmed'));
      
      it('should evaluate the expression if changing from view', function() {
        expect(counter.getText()).toContain('0');
      
        element(by.id('ng-change-example1')).click();
      
        expect(counter.getText()).toContain('1');
        expect(debug.getText()).toContain('true');
      });
      
      it('should not evaluate the expression if changing from model', function() {
        element(by.id('ng-change-example2')).click();
      
        expect(counter.getText()).toContain('0');
        expect(debug.getText()).toContain('true');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngChecked.html b/1.2.30/docs/partials/api/ng/directive/ngChecked.html new file mode 100644 index 0000000000..c2cc957bd8 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngChecked.html @@ -0,0 +1,130 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngChecked

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The HTML specification does not require browsers to preserve the values of boolean attributes +such as checked. (Their presence means true and their absence means false.) +If we put an Angular interpolation expression into such an attribute then the +binding information would be lost when the browser removes the attribute. +The ngChecked directive solves this problem for the checked attribute. +This complementary directive is not removed by the browser and so provides +a permanent reliable place to store the binding information.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 100.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <INPUT
          ng-checked="">
        ...
        </INPUT>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngChecked + + + + expression + +

      If the expression is truthy, + then special attribute "checked" will be set on the element

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      Check me to check both: <input type="checkbox" ng-model="master"><br/>
      <input id="checkSlave" type="checkbox" ng-checked="master">
      +
      + +
      +
      it('should check both checkBoxes', function() {
        expect(element(by.id('checkSlave')).getAttribute('checked')).toBeFalsy();
        element(by.model('master')).click();
        expect(element(by.id('checkSlave')).getAttribute('checked')).toBeTruthy();
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngClass.html b/1.2.30/docs/partials/api/ng/directive/ngClass.html new file mode 100644 index 0000000000..c886031a8c --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngClass.html @@ -0,0 +1,210 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngClass

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngClass directive allows you to dynamically set CSS classes on an HTML element by databinding +an expression that represents all classes to be added.

      +

      The directive operates in three different ways, depending on which of three types the expression +evaluates to:

      +
        +
      1. If the expression evaluates to a string, the string should be one or more space-delimited class +names.

        +
      2. +
      3. If the expression evaluates to an array, each element of the array should be a string that is +one or more space-delimited class names.

        +
      4. +
      5. If the expression evaluates to an object, then for each key-value pair of the +object with a truthy value the corresponding key is used as a class name.

        +
      6. +
      +

      The directive won't add duplicate classes if a particular class was already set.

      +

      When the expression changes, the previously added classes are removed and only then the +new classes are added.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-class="">
        ...
        </ANY>
        +
      • +
      • as CSS class: +
        <ANY class="ng-class: ;"> ... </ANY>
        +
      • + +
      + +

      Animations

      +

      add - happens just before the class is applied to the element +remove - happens just before the class is removed from the element

      + + Click here to learn more about the steps involved in the animation. +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngClass + + + + expression + +

      Expression to eval. The result + of the evaluation can be a string representing space delimited class + names, an array, or a map of class names to boolean values. In the case of a map, the + names of the properties whose values are truthy will be added as css classes to the + element.

      + + +
      + +
      + + + + +

      Example

      Example that demonstrates basic bindings via ngClass directive. + + +

      + +   + Edit in Plunker + +
      + + +
      +
      <p ng-class="{strike: deleted, bold: important, red: error}">Map Syntax Example</p>
      <input type="checkbox" ng-model="deleted"> deleted (apply "strike" class)<br>
      <input type="checkbox" ng-model="important"> important (apply "bold" class)<br>
      <input type="checkbox" ng-model="error"> error (apply "red" class)
      <hr>
      <p ng-class="style">Using String Syntax</p>
      <input type="text" ng-model="style" placeholder="Type: bold strike red">
      <hr>
      <p ng-class="[style1, style2, style3]">Using Array Syntax</p>
      <input ng-model="style1" placeholder="Type: bold, strike or red"><br>
      <input ng-model="style2" placeholder="Type: bold, strike or red"><br>
      <input ng-model="style3" placeholder="Type: bold, strike or red"><br>
      +
      + +
      +
      .strike {
        text-decoration: line-through;
      }
      .bold {
          font-weight: bold;
      }
      .red {
          color: red;
      }
      +
      + +
      +
      var ps = element.all(by.css('p'));
      
      it('should let you toggle the class', function() {
      
        expect(ps.first().getAttribute('class')).not.toMatch(/bold/);
        expect(ps.first().getAttribute('class')).not.toMatch(/red/);
      
        element(by.model('important')).click();
        expect(ps.first().getAttribute('class')).toMatch(/bold/);
      
        element(by.model('error')).click();
        expect(ps.first().getAttribute('class')).toMatch(/red/);
      });
      
      it('should let you toggle string example', function() {
        expect(ps.get(1).getAttribute('class')).toBe('');
        element(by.model('style')).clear();
        element(by.model('style')).sendKeys('red');
        expect(ps.get(1).getAttribute('class')).toBe('red');
      });
      
      it('array example should have 3 classes', function() {
        expect(ps.last().getAttribute('class')).toBe('');
        element(by.model('style1')).sendKeys('bold');
        element(by.model('style2')).sendKeys('strike');
        element(by.model('style3')).sendKeys('red');
        expect(ps.last().getAttribute('class')).toBe('bold strike red');
      });
      +
      + + + +
      +
      + + +

      +

      Animations

      +

      The example below demonstrates how to perform animations using ngClass.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <input id="setbtn" type="button" value="set" ng-click="myVar='my-class'">
      <input id="clearbtn" type="button" value="clear" ng-click="myVar=''">
      <br>
      <span class="base-class" ng-class="myVar">Sample Text</span>
      +
      + +
      +
      .base-class {
        -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
        transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
      }
      
      .base-class.my-class {
        color: red;
        font-size:3em;
      }
      +
      + +
      +
      it('should check ng-class', function() {
        expect(element(by.css('.base-class')).getAttribute('class')).not.
          toMatch(/my-class/);
      
        element(by.id('setbtn')).click();
      
        expect(element(by.css('.base-class')).getAttribute('class')).
          toMatch(/my-class/);
      
        element(by.id('clearbtn')).click();
      
        expect(element(by.css('.base-class')).getAttribute('class')).not.
          toMatch(/my-class/);
      });
      +
      + + + +
      +
      + + +

      +

      ngClass and pre-existing CSS3 Transitions/Animations

      +

      The ngClass directive still supports CSS3 Transitions/Animations even if they do not follow the ngAnimate CSS naming structure. + Upon animation ngAnimate will apply supplementary CSS classes to track the start and end of an animation, but this will not hinder + any pre-existing CSS transitions already on the element. To get an idea of what happens during a class-based animation, be sure + to view the step by step details of $animate.addClass and + $animate.removeClass.

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngClassEven.html b/1.2.30/docs/partials/api/ng/directive/ngClassEven.html new file mode 100644 index 0000000000..cdb6c04bf4 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngClassEven.html @@ -0,0 +1,138 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngClassEven

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngClassOdd and ngClassEven directives work exactly as +ngClass, except they work in +conjunction with ngRepeat and take effect only on odd (even) rows.

      +

      This directive can be applied only within the scope of an +ngRepeat.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-class-even="">
        ...
        </ANY>
        +
      • +
      • as CSS class: +
        <ANY class="ng-class-even: ;"> ... </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngClassEven + + + + expression + +

      Expression to eval. The + result of the evaluation can be a string representing space delimited class names or an array.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <ol ng-init="names=['John', 'Mary', 'Cate', 'Suz']">
        <li ng-repeat="name in names">
         <span ng-class-odd="'odd'" ng-class-even="'even'">
           {{name}} &nbsp; &nbsp; &nbsp;
         </span>
        </li>
      </ol>
      +
      + +
      +
      .odd {
        color: red;
      }
      .even {
        color: blue;
      }
      +
      + +
      +
      it('should check ng-class-odd and ng-class-even', function() {
        expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).
          toMatch(/odd/);
        expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).
          toMatch(/even/);
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngClassOdd.html b/1.2.30/docs/partials/api/ng/directive/ngClassOdd.html new file mode 100644 index 0000000000..ecf8ecf905 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngClassOdd.html @@ -0,0 +1,138 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngClassOdd

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngClassOdd and ngClassEven directives work exactly as +ngClass, except they work in +conjunction with ngRepeat and take effect only on odd (even) rows.

      +

      This directive can be applied only within the scope of an +ngRepeat.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-class-odd="">
        ...
        </ANY>
        +
      • +
      • as CSS class: +
        <ANY class="ng-class-odd: ;"> ... </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngClassOdd + + + + expression + +

      Expression to eval. The result + of the evaluation can be a string representing space delimited class names or an array.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <ol ng-init="names=['John', 'Mary', 'Cate', 'Suz']">
        <li ng-repeat="name in names">
         <span ng-class-odd="'odd'" ng-class-even="'even'">
           {{name}}
         </span>
        </li>
      </ol>
      +
      + +
      +
      .odd {
        color: red;
      }
      .even {
        color: blue;
      }
      +
      + +
      +
      it('should check ng-class-odd and ng-class-even', function() {
        expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')).
          toMatch(/odd/);
        expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')).
          toMatch(/even/);
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngClick.html b/1.2.30/docs/partials/api/ng/directive/ngClick.html new file mode 100644 index 0000000000..c75e1eeb9d --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngClick.html @@ -0,0 +1,125 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngClick

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngClick directive allows you to specify custom behavior when +an element is clicked.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-click="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngClick + + + + expression + +

      Expression to evaluate upon +click. (Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <button ng-click="count = count + 1" ng-init="count=0">
        Increment
      </button>
      <span>
        count: {{count}}
      <span>
      +
      + +
      +
      it('should check ng-click', function() {
        expect(element(by.binding('count')).getText()).toMatch('0');
        element(by.css('button')).click();
        expect(element(by.binding('count')).getText()).toMatch('1');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngCloak.html b/1.2.30/docs/partials/api/ng/directive/ngCloak.html new file mode 100644 index 0000000000..89fda252a9 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngCloak.html @@ -0,0 +1,115 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngCloak

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngCloak directive is used to prevent the Angular html template from being briefly +displayed by the browser in its raw (uncompiled) form while your application is loading. Use this +directive to avoid the undesirable flicker effect caused by the html template display.

      +

      The directive can be applied to the <body> element, but the preferred usage is to apply +multiple ngCloak directives to small portions of the page to permit progressive rendering +of the browser view.

      +

      ngCloak works in cooperation with the following css rule embedded within angular.js and +angular.min.js. +For CSP mode please add angular-csp.css to your html file (see ngCsp).

      +
      [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
      +display: none !important;
      +}
      +
      +

      When this css rule is loaded by the browser, all html elements (including their children) that +are tagged with the ngCloak directive are hidden. When Angular encounters this directive +during the compilation of the template it deletes the ngCloak element attribute, making +the compiled element visible.

      +

      For the best result, the angular.js script must be loaded in the head section of the html +document; alternatively, the css rule above must be included in the external stylesheet of the +application.

      +

      Legacy browsers, like IE7, do not provide attribute selector support (added in CSS 2.1) so they +cannot match the [ng\:cloak] selector. To work around this limitation, you must add the css +class ng-cloak in addition to the ngCloak directive as shown in the example below.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY>
        ...
        </ANY>
        +
      • +
      • as CSS class: +
        <ANY class=""> ... </ANY>
        +
      • + +
      + + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div id="template1" ng-cloak>{{ 'hello' }}</div>
      <div id="template2" ng-cloak class="ng-cloak">{{ 'hello IE7' }}</div>
      +
      + +
      +
      it('should remove the template directive and css class', function() {
        expect($('#template1').getAttribute('ng-cloak')).
          toBeNull();
        expect($('#template2').getAttribute('ng-cloak')).
          toBeNull();
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngController.html b/1.2.30/docs/partials/api/ng/directive/ngController.html new file mode 100644 index 0000000000..49d4d26bd7 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngController.html @@ -0,0 +1,213 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngController

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngController directive attaches a controller class to the view. This is a key aspect of how angular +supports the principles behind the Model-View-Controller design pattern.

      +

      MVC components in angular:

      +
        +
      • Model — Models are the properties of a scope; scopes are attached to the DOM where scope properties +are accessed through bindings.
      • +
      • View — The template (HTML with data bindings) that is rendered into the View.
      • +
      • Controller — The ngController directive specifies a Controller class; the class contains business +logic behind the application to decorate the scope with functions and values
      • +
      +

      Note that you can also attach controllers to the DOM by declaring it in a route definition +via the $route service. A common mistake is to declare the controller +again using ng-controller in the template itself. This will cause the controller to be attached +and executed twice.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        +
      • This directive creates new scope.
      • +
      • This directive executes at priority level 500.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-controller="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngController + + + + expression + +

      Name of a globally accessible constructor function or an + expression that on the current scope evaluates to a + constructor function. The controller instance can be published into a scope property + by specifying as propertyName.

      + + +
      + +
      + + + + +

      Example

      Here is a simple form for editing user contact information. Adding, removing, clearing, and +greeting are methods declared on the controller (see source tab). These methods can +easily be called from the angular markup. Any changes to the data are automatically reflected +in the View without the need for a manual update.

      +

      Two different declaration styles are included below:

      +
        +
      • one binds methods and properties directly onto the controller using this: +ng-controller="SettingsController1 as settings"
      • +
      • one injects $scope into the controller: +ng-controller="SettingsController2"
      • +
      +

      The second option is more common in the Angular community, and is generally used in boilerplates +and in this guide. However, there are advantages to binding properties directly to the controller +and avoiding scope.

      +
        +
      • Using controller as makes it obvious which controller you are accessing in the template when +multiple controllers apply to an element.
      • +
      • If you are writing your controllers as classes you have easier access to the properties and +methods, which will appear on the scope, from inside the controller code.
      • +
      • Since there is always a . in the bindings, you don't have to worry about prototypal +inheritance masking primitives.
      • +
      +

      This example demonstrates the controller as syntax.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div id="ctrl-as-exmpl" ng-controller="SettingsController1 as settings">
        Name: <input type="text" ng-model="settings.name"/>
        [ <a href="" ng-click="settings.greet()">greet</a> ]<br/>
        Contact:
        <ul>
          <li ng-repeat="contact in settings.contacts">
            <select ng-model="contact.type">
               <option>phone</option>
               <option>email</option>
            </select>
            <input type="text" ng-model="contact.value"/>
            [ <a href="" ng-click="settings.clearContact(contact)">clear</a>
            | <a href="" ng-click="settings.removeContact(contact)">X</a> ]
          </li>
          <li>[ <a href="" ng-click="settings.addContact()">add</a> ]</li>
       </ul>
      </div>
      +
      + +
      +
      angular.module('controllerAsExample', [])
        .controller('SettingsController1', SettingsController1);
      
      function SettingsController1() {
        this.name = "John Smith";
        this.contacts = [
          {type: 'phone', value: '408 555 1212'},
          {type: 'email', value: 'john.smith@example.org'} ];
      }
      
      SettingsController1.prototype.greet = function() {
        alert(this.name);
      };
      
      SettingsController1.prototype.addContact = function() {
        this.contacts.push({type: 'email', value: 'yourname@example.org'});
      };
      
      SettingsController1.prototype.removeContact = function(contactToRemove) {
       var index = this.contacts.indexOf(contactToRemove);
        this.contacts.splice(index, 1);
      };
      
      SettingsController1.prototype.clearContact = function(contact) {
        contact.type = 'phone';
        contact.value = '';
      };
      +
      + +
      +
      it('should check controller as', function() {
        var container = element(by.id('ctrl-as-exmpl'));
          expect(container.element(by.model('settings.name'))
            .getAttribute('value')).toBe('John Smith');
      
        var firstRepeat =
            container.element(by.repeater('contact in settings.contacts').row(0));
        var secondRepeat =
            container.element(by.repeater('contact in settings.contacts').row(1));
      
        expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
            .toBe('408 555 1212');
      
        expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))
            .toBe('john.smith@example.org');
      
        firstRepeat.element(by.linkText('clear')).click();
      
        expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
            .toBe('');
      
        container.element(by.linkText('add')).click();
      
        expect(container.element(by.repeater('contact in settings.contacts').row(2))
            .element(by.model('contact.value'))
            .getAttribute('value'))
            .toBe('yourname@example.org');
      });
      +
      + + + +
      +
      + + +

      +

      This example demonstrates the "attach to $scope" style of controller.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div id="ctrl-exmpl" ng-controller="SettingsController2">
        Name: <input type="text" ng-model="name"/>
        [ <a href="" ng-click="greet()">greet</a> ]<br/>
        Contact:
        <ul>
          <li ng-repeat="contact in contacts">
            <select ng-model="contact.type">
               <option>phone</option>
               <option>email</option>
            </select>
            <input type="text" ng-model="contact.value"/>
            [ <a href="" ng-click="clearContact(contact)">clear</a>
            | <a href="" ng-click="removeContact(contact)">X</a> ]
          </li>
          <li>[ <a href="" ng-click="addContact()">add</a> ]</li>
       </ul>
      </div>
      +
      + +
      +
      angular.module('controllerExample', [])
        .controller('SettingsController2', ['$scope', SettingsController2]);
      
      function SettingsController2($scope) {
        $scope.name = "John Smith";
        $scope.contacts = [
          {type:'phone', value:'408 555 1212'},
          {type:'email', value:'john.smith@example.org'} ];
      
        $scope.greet = function() {
          alert($scope.name);
        };
      
        $scope.addContact = function() {
          $scope.contacts.push({type:'email', value:'yourname@example.org'});
        };
      
        $scope.removeContact = function(contactToRemove) {
          var index = $scope.contacts.indexOf(contactToRemove);
          $scope.contacts.splice(index, 1);
        };
      
        $scope.clearContact = function(contact) {
          contact.type = 'phone';
          contact.value = '';
        };
      }
      +
      + +
      +
      it('should check controller', function() {
        var container = element(by.id('ctrl-exmpl'));
      
        expect(container.element(by.model('name'))
            .getAttribute('value')).toBe('John Smith');
      
        var firstRepeat =
            container.element(by.repeater('contact in contacts').row(0));
        var secondRepeat =
            container.element(by.repeater('contact in contacts').row(1));
      
        expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
            .toBe('408 555 1212');
        expect(secondRepeat.element(by.model('contact.value')).getAttribute('value'))
            .toBe('john.smith@example.org');
      
        firstRepeat.element(by.linkText('clear')).click();
      
        expect(firstRepeat.element(by.model('contact.value')).getAttribute('value'))
            .toBe('');
      
        container.element(by.linkText('add')).click();
      
        expect(container.element(by.repeater('contact in contacts').row(2))
            .element(by.model('contact.value'))
            .getAttribute('value'))
            .toBe('yourname@example.org');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngCopy.html b/1.2.30/docs/partials/api/ng/directive/ngCopy.html new file mode 100644 index 0000000000..418877ea76 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngCopy.html @@ -0,0 +1,117 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngCopy

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Specify custom behavior on copy event.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <window, input, select, textarea, a
          ng-copy="">
        ...
        </window, input, select, textarea, a>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngCopy + + + + expression + +

      Expression to evaluate upon +copy. (Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <input ng-copy="copied=true" ng-init="copied=false; value='copy me'" ng-model="value">
      copied: {{copied}}
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngCsp.html b/1.2.30/docs/partials/api/ng/directive/ngCsp.html new file mode 100644 index 0000000000..66472db6e9 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngCsp.html @@ -0,0 +1,89 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngCsp

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Enables CSP (Content Security Policy) support.

      +

      This is necessary when developing things like Google Chrome Extensions.

      +

      CSP forbids apps to use eval or Function(string) generated functions (among other things). +For Angular to be CSP compatible there are only two things that we need to do differently:

      +
        +
      • don't use Function constructor to generate optimized value getters
      • +
      • don't inject custom stylesheet into the document
      • +
      +

      AngularJS uses Function(string) generated functions as a speed optimization. Applying the ngCsp +directive will cause Angular to use CSP compatibility mode. When this mode is on AngularJS will +evaluate all expressions up to 30% slower than in non-CSP mode, but no security violations will +be raised.

      +

      CSP forbids JavaScript to inline stylesheet rules. In non CSP mode Angular automatically +includes some CSS rules (e.g. ngCloak). +To make those directives work in CSP mode, include the angular-csp.css manually.

      +

      Angular tries to autodetect if CSP is active and automatically turn on the CSP-safe mode. This +autodetection however triggers a CSP error to be logged in the console:

      +
      Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of
      +script in the following Content Security Policy directive: "default-src 'self'". Note that
      +'script-src' was not explicitly set, so 'default-src' is used as a fallback.
      +
      +

      This error is harmless but annoying. To prevent the error from showing up, put the ngCsp +directive on the root element of the application or on the angular.js script tag, whichever +appears first in the html document.

      +

      Note: This directive is only available in the ng-csp and data-ng-csp attribute form.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <html>
        ...
        </html>
        +
      • + +
      + + + + + +

      Example

      This example shows how to apply the ngCsp directive to the html tag.

      +
      <!doctype html>
      +<html ng-app ng-csp>
      +...
      +...
      +</html>
      +
      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngCut.html b/1.2.30/docs/partials/api/ng/directive/ngCut.html new file mode 100644 index 0000000000..24e5399ce9 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngCut.html @@ -0,0 +1,117 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngCut

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Specify custom behavior on cut event.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <window, input, select, textarea, a
          ng-cut="">
        ...
        </window, input, select, textarea, a>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngCut + + + + expression + +

      Expression to evaluate upon +cut. (Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <input ng-cut="cut=true" ng-init="cut=false; value='cut me'" ng-model="value">
      cut: {{cut}}
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngDblclick.html b/1.2.30/docs/partials/api/ng/directive/ngDblclick.html new file mode 100644 index 0000000000..078cf56530 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngDblclick.html @@ -0,0 +1,117 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngDblclick

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngDblclick directive allows you to specify custom behavior on a dblclick event.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-dblclick="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngDblclick + + + + expression + +

      Expression to evaluate upon +a dblclick. (The Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <button ng-dblclick="count = count + 1" ng-init="count=0">
        Increment (on double click)
      </button>
      count: {{count}}
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngDisabled.html b/1.2.30/docs/partials/api/ng/directive/ngDisabled.html new file mode 100644 index 0000000000..c47c06100a --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngDisabled.html @@ -0,0 +1,135 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngDisabled

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      We shouldn't do this, because it will make the button enabled on Chrome/Firefox but not on IE8 and older IEs:

      +
      <div ng-init="scope = { isDisabled: false }">
      +<button disabled="{{scope.isDisabled}}">Disabled</button>
      +</div>
      +
      +

      The HTML specification does not require browsers to preserve the values of boolean attributes +such as disabled. (Their presence means true and their absence means false.) +If we put an Angular interpolation expression into such an attribute then the +binding information would be lost when the browser removes the attribute. +The ngDisabled directive solves this problem for the disabled attribute. +This complementary directive is not removed by the browser and so provides +a permanent reliable place to store the binding information.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 100.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <INPUT
          ng-disabled="">
        ...
        </INPUT>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngDisabled + + + + expression + +

      If the expression is truthy, + then special attribute "disabled" will be set on the element

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      Click me to toggle: <input type="checkbox" ng-model="checked"><br/>
      <button ng-model="button" ng-disabled="checked">Button</button>
      +
      + +
      +
      it('should toggle button', function() {
        expect(element(by.css('button')).getAttribute('disabled')).toBeFalsy();
        element(by.model('checked')).click();
        expect(element(by.css('button')).getAttribute('disabled')).toBeTruthy();
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngFocus.html b/1.2.30/docs/partials/api/ng/directive/ngFocus.html new file mode 100644 index 0000000000..073410ed27 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngFocus.html @@ -0,0 +1,96 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngFocus

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Specify custom behavior on focus event.

      +

      Note: As the focus event is executed synchronously when calling input.focus() +AngularJS executes the expression using scope.$evalAsync if the event is fired +during an $apply to ensure a consistent state.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <window, input, select, textarea, a
          ng-focus="">
        ...
        </window, input, select, textarea, a>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngFocus + + + + expression + +

      Expression to evaluate upon +focus. (Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      See ngClick

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngForm.html b/1.2.30/docs/partials/api/ng/directive/ngForm.html new file mode 100644 index 0000000000..f13639d1b2 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngForm.html @@ -0,0 +1,104 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngForm

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Nestable alias of form directive. HTML +does not allow nesting of form elements. It is useful to nest forms, for example if the validity of a +sub-group of controls needs to be determined.

      +

      Note: the purpose of ngForm is to group controls, +but not to be a replacement for the <form> tag with all of its capabilities +(e.g. posting to the server, ...).

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        + +
      • as element: + (This directive can be used as custom element, but be aware of IE restrictions). +
        <ng-form
          [name=""]>
        ...
        </ng-form>
        +
      • +
      • as attribute: +
        <ANY
          [ng-form=""]>
        ...
        </ANY>
        +
      • +
      • as CSS class: +
        <ANY class="[ng-form: ;]"> ... </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngForm + | name +
      (optional)
      +
      + string + +

      Name of the form. If specified, the form controller will be published into + related scope, under this name.

      + + +
      + +
      + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngHide.html b/1.2.30/docs/partials/api/ng/directive/ngHide.html new file mode 100644 index 0000000000..99ec323834 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngHide.html @@ -0,0 +1,203 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngHide

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngHide directive shows or hides the given HTML element based on the expression +provided to the ngHide attribute. The element is shown or hidden by removing or adding +the ng-hide CSS class onto the element. The .ng-hide CSS class is predefined +in AngularJS and sets the display style to none (using an !important flag). +For CSP mode please add angular-csp.css to your html file (see ngCsp).

      +
      <!-- when $scope.myValue is truthy (element is hidden) -->
      +<div ng-hide="myValue" class="ng-hide"></div>
      +
      +<!-- when $scope.myValue is falsy (element is visible) -->
      +<div ng-hide="myValue"></div>
      +
      +

      When the .ngHide expression evaluates to true then the .ng-hide CSS class is added to the class attribute +on the element causing it to become hidden. When false, the .ng-hide CSS class is removed +from the element causing the element not to appear hidden.

      +
      +Note: Here is a list of values that ngHide will consider as a falsy value (case insensitive):
      +"f" / "0" / "false" / "no" / "n" / "[]" +
      + +

      Why is !important used?

      +

      You may be wondering why !important is used for the .ng-hide CSS class. This is because the .ng-hide selector +can be easily overridden by heavier selectors. For example, something as simple +as changing the display style on a HTML list item would make hidden elements appear visible. +This also becomes a bigger issue when dealing with CSS frameworks.

      +

      By using !important, the show and hide behavior will work as expected despite any clash between CSS selector +specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the +styling to change how to hide an element then it is just a matter of using !important in their own CSS code.

      +

      Overriding .ng-hide

      +

      By default, the .ng-hide class will style the element with display:none!important. If you wish to change +the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the .ng-hide +class in CSS:

      +
      .ng-hide {
      +//this is just another form of hiding an element
      +display:block!important;
      +position:absolute;
      +top:-9999px;
      +left:-9999px;
      +}
      +
      +

      By default you don't need to override in CSS anything and the animations will work around the display style.

      +

      A note about animations with ngHide

      +

      Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression +is true and false. This system works like the animation system present with ngClass, except that the .ng-hide +CSS class is added and removed for you instead of your own CSS class.

      +
      //
      +//a working example can be found at the bottom of this page
      +//
      +.my-element.ng-hide-add, .my-element.ng-hide-remove {
      +  transition:0.5s linear all;
      +}
      +
      +.my-element.ng-hide-add { ... }
      +.my-element.ng-hide-add.ng-hide-add-active { ... }
      +.my-element.ng-hide-remove { ... }
      +.my-element.ng-hide-remove.ng-hide-remove-active { ... }
      +
      +

      Keep in mind that, as of AngularJS version 1.2.17 (and 1.3.0-beta.11), there is no need to change the display +property to block during animation states--ngAnimate will handle the style toggling automatically for you.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-hide="">
        ...
        </ANY>
        +
      • + +
      + +

      Animations

      +

      removeClass: .ng-hide - happens after the ngHide expression evaluates to a truthy value and just before the contents are set to hidden +addClass: .ng-hide - happens after the ngHide expression evaluates to a non truthy value and just before the contents are set to visible

      + + Click here to learn more about the steps involved in the animation. +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngHide + + + + expression + +

      If the expression is truthy then + the element is shown or hidden respectively.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      Click me: <input type="checkbox" ng-model="checked"><br/>
      <div>
        Show:
        <div class="check-element animate-hide" ng-show="checked">
          <span class="glyphicon glyphicon-thumbs-up"></span> I show up when your checkbox is checked.
        </div>
      </div>
      <div>
        Hide:
        <div class="check-element animate-hide" ng-hide="checked">
          <span class="glyphicon glyphicon-thumbs-down"></span> I hide when your checkbox is checked.
        </div>
      </div>
      +
      + +
      +
      @import url(//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css);
      +
      + +
      +
      .animate-hide {
        -webkit-transition:all linear 0.5s;
        transition:all linear 0.5s;
        line-height:20px;
        opacity:1;
        padding:10px;
        border:1px solid black;
        background:white;
      }
      
      .animate-hide.ng-hide {
        line-height:0;
        opacity:0;
        padding:0 10px;
      }
      
      .check-element {
        padding:10px;
        border:1px solid black;
        background:white;
      }
      +
      + +
      +
      var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));
      var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));
      
      it('should check ng-show / ng-hide', function() {
        expect(thumbsUp.isDisplayed()).toBeFalsy();
        expect(thumbsDown.isDisplayed()).toBeTruthy();
      
        element(by.model('checked')).click();
      
        expect(thumbsUp.isDisplayed()).toBeTruthy();
        expect(thumbsDown.isDisplayed()).toBeFalsy();
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngHref.html b/1.2.30/docs/partials/api/ng/directive/ngHref.html new file mode 100644 index 0000000000..b82d227d3a --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngHref.html @@ -0,0 +1,136 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngHref

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Using Angular markup like {{hash}} in an href attribute will +make the link go to the wrong URL if the user clicks it before +Angular has a chance to replace the {{hash}} markup with its +value. Until Angular replaces the markup the link will be broken +and will most likely return a 404 error. The ngHref directive +solves this problem.

      +

      The wrong way to write it:

      +
      <a href="http://www.gravatar.com/avatar/{{hash}}"/>
      +
      +

      The correct way to write it:

      +
      <a ng-href="http://www.gravatar.com/avatar/{{hash}}"/>
      +
      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 99.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <A
          ng-href="">
        ...
        </A>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngHref + + + + template + +

      any string which can contain {{}} markup.

      + + +
      + +
      + + + + +

      Example

      This example shows various combinations of href, ng-href and ng-click attributes +in links and their different behaviors: + + +

      + +   + Edit in Plunker + +
      + + +
      +
      <input ng-model="value" /><br />
      <a id="link-1" href ng-click="value = 1">link 1</a> (link, don't reload)<br />
      <a id="link-2" href="" ng-click="value = 2">link 2</a> (link, don't reload)<br />
      <a id="link-3" ng-href="/{{'123'}}">link 3</a> (link, reload!)<br />
      <a id="link-4" href="" name="xx" ng-click="value = 4">anchor</a> (link, don't reload)<br />
      <a id="link-5" name="xxx" ng-click="value = 5">anchor</a> (no link)<br />
      <a id="link-6" ng-href="{{value}}">link</a> (link, change location)
      +
      + +
      +
      it('should execute ng-click but not reload when href without value', function() {
        element(by.id('link-1')).click();
        expect(element(by.model('value')).getAttribute('value')).toEqual('1');
        expect(element(by.id('link-1')).getAttribute('href')).toBe('');
      });
      
      it('should execute ng-click but not reload when href empty string', function() {
        element(by.id('link-2')).click();
        expect(element(by.model('value')).getAttribute('value')).toEqual('2');
        expect(element(by.id('link-2')).getAttribute('href')).toBe('');
      });
      
      it('should execute ng-click and change url when ng-href specified', function() {
        expect(element(by.id('link-3')).getAttribute('href')).toMatch(/\/123$/);
      
        element(by.id('link-3')).click();
      
        // At this point, we navigate away from an Angular page, so we need
        // to use browser.driver to get the base webdriver.
      
        browser.wait(function() {
          return browser.driver.getCurrentUrl().then(function(url) {
            return url.match(/\/123$/);
          });
        }, 5000, 'page should navigate to /123');
      });
      
      xit('should execute ng-click but not reload when href empty string and name specified', function() {
        element(by.id('link-4')).click();
        expect(element(by.model('value')).getAttribute('value')).toEqual('4');
        expect(element(by.id('link-4')).getAttribute('href')).toBe('');
      });
      
      it('should execute ng-click but not reload when no href but name specified', function() {
        element(by.id('link-5')).click();
        expect(element(by.model('value')).getAttribute('value')).toEqual('5');
        expect(element(by.id('link-5')).getAttribute('href')).toBe(null);
      });
      
      it('should only change url when only ng-href', function() {
        element(by.model('value')).clear();
        element(by.model('value')).sendKeys('6');
        expect(element(by.id('link-6')).getAttribute('href')).toMatch(/\/6$/);
      
        element(by.id('link-6')).click();
      
        // At this point, we navigate away from an Angular page, so we need
        // to use browser.driver to get the base webdriver.
        browser.wait(function() {
          return browser.driver.getCurrentUrl().then(function(url) {
            return url.match(/\/6$/);
          });
        }, 5000, 'page should navigate to /6');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngIf.html b/1.2.30/docs/partials/api/ng/directive/ngIf.html new file mode 100644 index 0000000000..d17a64ea9b --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngIf.html @@ -0,0 +1,153 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngIf

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngIf directive removes or recreates a portion of the DOM tree based on an +{expression}. If the expression assigned to ngIf evaluates to a false +value then the element is removed from the DOM, otherwise a clone of the +element is reinserted into the DOM.

      +

      ngIf differs from ngShow and ngHide in that ngIf completely removes and recreates the +element in the DOM rather than changing its visibility via the display css property. A common +case when this difference is significant is when using css selectors that rely on an element's +position within the DOM, such as the :first-child or :last-child pseudo-classes.

      +

      Note that when an element is removed using ngIf its scope is destroyed and a new scope +is created when the element is restored. The scope created within ngIf inherits from +its parent scope using +prototypal inheritance. +An important implication of this is if ngModel is used within ngIf to bind to +a javascript primitive defined in the parent scope. In this case any modifications made to the +variable within the child scope will override (hide) the value in the parent scope.

      +

      Also, ngIf recreates elements using their compiled state. An example of this behavior +is if an element's class attribute is directly modified after it's compiled, using something like +jQuery's .addClass() method, and the element is later removed. When ngIf recreates the element +the added class will be lost because the original compiled state is used to regenerate the element.

      +

      Additionally, you can provide animations via the ngAnimate module to animate the enter +and leave effects.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        +
      • This directive creates new scope.
      • +
      • This directive executes at priority level 600.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-if="">
        ...
        </ANY>
        +
      • + +
      + +

      Animations

      +

      enter - happens just after the ngIf contents change and a new DOM element is created and injected into the ngIf container +leave - happens just before the ngIf contents are removed from the DOM

      + + Click here to learn more about the steps involved in the animation. +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngIf + + + + expression + +

      If the expression is falsy then + the element is removed from the DOM tree. If it is truthy a copy of the compiled + element is added to the DOM tree.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      Click me: <input type="checkbox" ng-model="checked" ng-init="checked=true" /><br/>
      Show when checked:
      <span ng-if="checked" class="animate-if">
        I'm removed when the checkbox is unchecked.
      </span>
      +
      + +
      +
      .animate-if {
        background:white;
        border:1px solid black;
        padding:10px;
      }
      
      .animate-if.ng-enter, .animate-if.ng-leave {
        -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
        transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
      }
      
      .animate-if.ng-enter,
      .animate-if.ng-leave.ng-leave-active {
        opacity:0;
      }
      
      .animate-if.ng-leave,
      .animate-if.ng-enter.ng-enter-active {
        opacity:1;
      }
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngInclude.html b/1.2.30/docs/partials/api/ng/directive/ngInclude.html new file mode 100644 index 0000000000..c2c35d81b5 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngInclude.html @@ -0,0 +1,246 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngInclude

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Fetches, compiles and includes an external HTML fragment.

      +

      By default, the template URL is restricted to the same domain and protocol as the +application document. This is done by calling $sce.getTrustedResourceUrl on it. To load templates from other domains or protocols +you may either whitelist them or +wrap them as trusted values. Refer to Angular's Strict Contextual Escaping.

      +

      In addition, the browser's +Same Origin Policy +and Cross-Origin Resource Sharing (CORS) +policy may further restrict whether the template is successfully loaded. +For example, ngInclude won't work for cross-domain requests on all browsers and for file:// +access on some browsers.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        +
      • This directive creates new scope.
      • +
      • This directive executes at priority level 400.
      • +
      + + +

      Usage

      +
      + +
        + +
      • as element: + (This directive can be used as custom element, but be aware of IE restrictions). +
        <ng-include
          src=""
          [onload=""]
          [autoscroll=""]>
        ...
        </ng-include>
        +
      • +
      • as attribute: +
        <ANY
          ng-include=""
          [onload=""]
          [autoscroll=""]>
        ...
        </ANY>
        +
      • +
      • as CSS class: +
        <ANY class="ng-include: ; [onload: ;] [autoscroll: ;]"> ... </ANY>
        +
      • + +
      + +

      Animations

      +

      enter - animation is used to bring new content into the browser. +leave - animation is used to animate existing content away.

      +

      The enter and leave animation occur concurrently.

      + + Click here to learn more about the steps involved in the animation. +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngInclude + | src + + + string + +

      angular expression evaluating to URL. If the source is a string constant, + make sure you wrap it in single quotes, e.g. src="'myPartialTemplate.html'".

      + + +
      + onload + +
      (optional)
      +
      + string + +

      Expression to evaluate when a new partial is loaded.

      + + +
      + autoscroll + +
      (optional)
      +
      + string + +

      Whether ngInclude should call $anchorScroll to scroll the viewport after the content is loaded.

      +
      - If the attribute is not set, disable scrolling.
      +- If the attribute is set without value, enable scrolling.
      +- Otherwise enable scrolling only if the expression evaluates to truthy value.
      +
      + + +
      + +
      + +

      Events

      +
        +
      • +

        $includeContentRequested

        +

        Emitted every time the ngInclude content is requested.

        +
        +
        +

        Type:

        +
        emit
        +
        +
        +

        Target:

        +
        the scope ngInclude was declared in
        +
        +
      • + +
      • +

        $includeContentLoaded

        +

        Emitted every time the ngInclude content is reloaded.

        +
        +
        +

        Type:

        +
        emit
        +
        +
        +

        Target:

        +
        the current ngInclude scope
        +
        +
      • +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="ExampleController">
        <select ng-model="template" ng-options="t.name for t in templates">
         <option value="">(blank)</option>
        </select>
        url of the template: <code>{{template.url}}</code>
        <hr/>
        <div class="slide-animate-container">
          <div class="slide-animate" ng-include="template.url"></div>
        </div>
      </div>
      +
      + +
      +
      angular.module('includeExample', ['ngAnimate'])
        .controller('ExampleController', ['$scope', function($scope) {
          $scope.templates =
            [ { name: 'template1.html', url: 'template1.html'},
              { name: 'template2.html', url: 'template2.html'} ];
          $scope.template = $scope.templates[0];
        }]);
      +
      + +
      +
      Content of template1.html
      +
      + +
      +
      Content of template2.html
      +
      + +
      +
      .slide-animate-container {
        position:relative;
        background:white;
        border:1px solid black;
        height:40px;
        overflow:hidden;
      }
      
      .slide-animate {
        padding:10px;
      }
      
      .slide-animate.ng-enter, .slide-animate.ng-leave {
        -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
        transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
      
        position:absolute;
        top:0;
        left:0;
        right:0;
        bottom:0;
        display:block;
        padding:10px;
      }
      
      .slide-animate.ng-enter {
        top:-50px;
      }
      .slide-animate.ng-enter.ng-enter-active {
        top:0;
      }
      
      .slide-animate.ng-leave {
        top:0;
      }
      .slide-animate.ng-leave.ng-leave-active {
        top:50px;
      }
      +
      + +
      +
      var templateSelect = element(by.model('template'));
      var includeElem = element(by.css('[ng-include]'));
      
      it('should load template1.html', function() {
        expect(includeElem.getText()).toMatch(/Content of template1.html/);
      });
      
      it('should load template2.html', function() {
        if (browser.params.browser == 'firefox') {
          // Firefox can't handle using selects
          // See https://github.com/angular/protractor/issues/480
          return;
        }
        templateSelect.click();
        templateSelect.all(by.css('option')).get(2).click();
        expect(includeElem.getText()).toMatch(/Content of template2.html/);
      });
      
      it('should change to blank', function() {
        if (browser.params.browser == 'firefox') {
          // Firefox can't handle using selects
          return;
        }
        templateSelect.click();
        templateSelect.all(by.css('option')).get(0).click();
        expect(includeElem.isPresent()).toBe(false);
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngInit.html b/1.2.30/docs/partials/api/ng/directive/ngInit.html new file mode 100644 index 0000000000..8eb9050dd0 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngInit.html @@ -0,0 +1,140 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngInit

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngInit directive allows you to evaluate an expression in the +current scope.

      +
      +The only appropriate use of ngInit is for aliasing special properties of +ngRepeat, as seen in the demo below. Besides this case, you +should use controllers rather than ngInit +to initialize values on a scope. +
      +
      +Note: If you have assignment in ngInit along with $filter, make +sure you have parenthesis for correct precedence: +
      +  
      +
      +
      +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 450.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-init="">
        ...
        </ANY>
        +
      • +
      • as CSS class: +
        <ANY class="ng-init: ;"> ... </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngInit + + + + expression + +

      Expression to eval.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
      angular.module('initExample', [])
        .controller('ExampleController', ['$scope', function($scope) {
          $scope.list = [['a', 'b'], ['c', 'd']];
        }]);
      </script>
      <div ng-controller="ExampleController">
      <div ng-repeat="innerList in list" ng-init="outerIndex = $index">
        <div ng-repeat="value in innerList" ng-init="innerIndex = $index">
           <span class="example-init">list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}};</span>
        </div>
      </div>
      </div>
      +
      + +
      +
      it('should alias index positions', function() {
        var elements = element.all(by.css('.example-init'));
        expect(elements.get(0).getText()).toBe('list[ 0 ][ 0 ] = a;');
        expect(elements.get(1).getText()).toBe('list[ 0 ][ 1 ] = b;');
        expect(elements.get(2).getText()).toBe('list[ 1 ][ 0 ] = c;');
        expect(elements.get(3).getText()).toBe('list[ 1 ][ 1 ] = d;');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngKeydown.html b/1.2.30/docs/partials/api/ng/directive/ngKeydown.html new file mode 100644 index 0000000000..94b48d0d5f --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngKeydown.html @@ -0,0 +1,117 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngKeydown

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Specify custom behavior on keydown event.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-keydown="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngKeydown + + + + expression + +

      Expression to evaluate upon +keydown. (Event object is available as $event and can be interrogated for keyCode, altKey, etc.)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <input ng-keydown="count = count + 1" ng-init="count=0">
      key down count: {{count}}
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngKeypress.html b/1.2.30/docs/partials/api/ng/directive/ngKeypress.html new file mode 100644 index 0000000000..36bc5636ca --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngKeypress.html @@ -0,0 +1,118 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngKeypress

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Specify custom behavior on keypress event.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-keypress="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngKeypress + + + + expression + +

      Expression to evaluate upon +keypress. (Event object is available as $event +and can be interrogated for keyCode, altKey, etc.)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <input ng-keypress="count = count + 1" ng-init="count=0">
      key press count: {{count}}
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngKeyup.html b/1.2.30/docs/partials/api/ng/directive/ngKeyup.html new file mode 100644 index 0000000000..67e20494b4 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngKeyup.html @@ -0,0 +1,117 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngKeyup

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Specify custom behavior on keyup event.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-keyup="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngKeyup + + + + expression + +

      Expression to evaluate upon +keyup. (Event object is available as $event and can be interrogated for keyCode, altKey, etc.)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <p>Typing in the input box below updates the key count</p>
      <input ng-keyup="count = count + 1" ng-init="count=0"> key up count: {{count}}
      
      <p>Typing in the input box below updates the keycode</p>
      <input ng-keyup="event=$event">
      <p>event keyCode: {{ event.keyCode }}</p>
      <p>event altKey: {{ event.altKey }}</p>
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngList.html b/1.2.30/docs/partials/api/ng/directive/ngList.html new file mode 100644 index 0000000000..22a558078d --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngList.html @@ -0,0 +1,127 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngList

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Text input that converts between a delimited string and an array of strings. The delimiter +can be a fixed string (by default a comma) or a regular expression.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <input
          [ng-list=""]>
        ...
        </input>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngList + +
      (optional)
      +
      + string + +

      optional delimiter that should be used to split the value. If + specified in form /something/ then the value will be converted into a regular expression.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('listExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.names = ['igor', 'misko', 'vojta'];
          }]);
      </script>
      <form name="myForm" ng-controller="ExampleController">
        List: <input name="namesInput" ng-model="names" ng-list required>
        <span class="error" ng-show="myForm.namesInput.$error.required">
          Required!</span>
        <br>
        <tt>names = {{names}}</tt><br/>
        <tt>myForm.namesInput.$valid = {{myForm.namesInput.$valid}}</tt><br/>
        <tt>myForm.namesInput.$error = {{myForm.namesInput.$error}}</tt><br/>
        <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
       </form>
      +
      + +
      +
      var listInput = element(by.model('names'));
      var names = element(by.binding('{{names}}'));
      var valid = element(by.binding('myForm.namesInput.$valid'));
      var error = element(by.css('span.error'));
      
      it('should initialize to model', function() {
        expect(names.getText()).toContain('["igor","misko","vojta"]');
        expect(valid.getText()).toContain('true');
        expect(error.getCssValue('display')).toBe('none');
      });
      
      it('should be invalid if empty', function() {
        listInput.clear();
        listInput.sendKeys('');
      
        expect(names.getText()).toContain('');
        expect(valid.getText()).toContain('false');
        expect(error.getCssValue('display')).not.toBe('none');        });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngModel.html b/1.2.30/docs/partials/api/ng/directive/ngModel.html new file mode 100644 index 0000000000..68d35e7e39 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngModel.html @@ -0,0 +1,148 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngModel

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngModel directive binds an input,select, textarea (or custom form control) to a +property on the scope using NgModelController, +which is created and exposed by this directive.

      +

      ngModel is responsible for:

      +
        +
      • Binding the view into the model, which other directives such as input, textarea or select +require.
      • +
      • Providing validation behavior (i.e. required, number, email, url).
      • +
      • Keeping the state of the control (valid/invalid, dirty/pristine, validation errors).
      • +
      • Setting related css classes on the element (ng-valid, ng-invalid, ng-dirty, ng-pristine) including animations.
      • +
      • Registering the control with its parent form.
      • +
      +

      Note: ngModel will try to bind to the property given by evaluating the expression on the +current scope. If the property doesn't already exist on this scope, it will be created +implicitly and added to the scope.

      +

      For best practices on using ngModel, see:

      + +

      For basic examples, how to use ngModel, see:

      + +

      CSS classes

      +

      The following CSS classes are added and removed on the associated input/select/textarea element +depending on the validity of the model.

      +
        +
      • ng-valid is set if the model is valid.
      • +
      • ng-invalid is set if the model is invalid.
      • +
      • ng-pristine is set if the model is pristine.
      • +
      • ng-dirty is set if the model is dirty.
      • +
      +

      Keep in mind that ngAnimate can detect each of these classes when added and removed.

      +

      Animation Hooks

      +

      Animations within models are triggered when any of the associated CSS classes are added and removed +on the input element which is attached to the model. These classes are: .ng-pristine, .ng-dirty, +.ng-invalid and .ng-valid as well as any other validations that are performed on the model itself. +The animations that are triggered within ngModel are similar to how they work in ngClass and +animations can be hooked into using CSS transitions, keyframes as well as JS animations.

      +

      The following example shows a simple way to utilize CSS transitions to style an input element +that has been rendered as invalid after it has been validated:

      +
      +//be sure to include ngAnimate as a module to hook into more
      +//advanced animations
      +.my-input {
      +  transition:0.5s linear all;
      +  background: white;
      +}
      +.my-input.ng-invalid {
      +  background: red;
      +  color:white;
      +}
      +
      +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <input>
        ...
        </input>
        +
      • + +
      + + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
       angular.module('inputExample', [])
         .controller('ExampleController', ['$scope', function($scope) {
           $scope.val = '1';
         }]);
      </script>
      <style>
        .my-input {
          -webkit-transition:all linear 0.5s;
          transition:all linear 0.5s;
          background: transparent;
        }
        .my-input.ng-invalid {
          color:white;
          background: red;
        }
      </style>
      Update input to see transitions when valid/invalid.
      Integer is a valid value.
      <form name="testForm" ng-controller="ExampleController">
        <input ng-model="val" ng-pattern="/^\d+$/" name="anim" class="my-input" />
      </form>
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngMousedown.html b/1.2.30/docs/partials/api/ng/directive/ngMousedown.html new file mode 100644 index 0000000000..ab3a3d1ad2 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngMousedown.html @@ -0,0 +1,117 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngMousedown

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngMousedown directive allows you to specify custom behavior on mousedown event.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-mousedown="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngMousedown + + + + expression + +

      Expression to evaluate upon +mousedown. (Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <button ng-mousedown="count = count + 1" ng-init="count=0">
        Increment (on mouse down)
      </button>
      count: {{count}}
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngMouseenter.html b/1.2.30/docs/partials/api/ng/directive/ngMouseenter.html new file mode 100644 index 0000000000..4ca3228ee7 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngMouseenter.html @@ -0,0 +1,117 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngMouseenter

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Specify custom behavior on mouseenter event.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-mouseenter="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngMouseenter + + + + expression + +

      Expression to evaluate upon +mouseenter. (Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <button ng-mouseenter="count = count + 1" ng-init="count=0">
        Increment (when mouse enters)
      </button>
      count: {{count}}
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngMouseleave.html b/1.2.30/docs/partials/api/ng/directive/ngMouseleave.html new file mode 100644 index 0000000000..3622c3dba7 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngMouseleave.html @@ -0,0 +1,117 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngMouseleave

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Specify custom behavior on mouseleave event.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-mouseleave="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngMouseleave + + + + expression + +

      Expression to evaluate upon +mouseleave. (Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <button ng-mouseleave="count = count + 1" ng-init="count=0">
        Increment (when mouse leaves)
      </button>
      count: {{count}}
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngMousemove.html b/1.2.30/docs/partials/api/ng/directive/ngMousemove.html new file mode 100644 index 0000000000..4f1d4defd5 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngMousemove.html @@ -0,0 +1,117 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngMousemove

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Specify custom behavior on mousemove event.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-mousemove="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngMousemove + + + + expression + +

      Expression to evaluate upon +mousemove. (Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <button ng-mousemove="count = count + 1" ng-init="count=0">
        Increment (when mouse moves)
      </button>
      count: {{count}}
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngMouseover.html b/1.2.30/docs/partials/api/ng/directive/ngMouseover.html new file mode 100644 index 0000000000..cf99f9a7e8 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngMouseover.html @@ -0,0 +1,117 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngMouseover

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Specify custom behavior on mouseover event.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-mouseover="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngMouseover + + + + expression + +

      Expression to evaluate upon +mouseover. (Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <button ng-mouseover="count = count + 1" ng-init="count=0">
        Increment (when mouse is over)
      </button>
      count: {{count}}
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngMouseup.html b/1.2.30/docs/partials/api/ng/directive/ngMouseup.html new file mode 100644 index 0000000000..62bb3e266b --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngMouseup.html @@ -0,0 +1,117 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngMouseup

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Specify custom behavior on mouseup event.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-mouseup="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngMouseup + + + + expression + +

      Expression to evaluate upon +mouseup. (Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <button ng-mouseup="count = count + 1" ng-init="count=0">
        Increment (on mouse up)
      </button>
      count: {{count}}
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngNonBindable.html b/1.2.30/docs/partials/api/ng/directive/ngNonBindable.html new file mode 100644 index 0000000000..a89ae6357e --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngNonBindable.html @@ -0,0 +1,98 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngNonBindable

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngNonBindable directive tells Angular not to compile or bind the contents of the current +DOM element. This is useful if the element contains what appears to be Angular directives and +bindings but which should be ignored by Angular. This could be the case if you have a site that +displays snippets of code, for instance.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 1000.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY>
        ...
        </ANY>
        +
      • +
      • as CSS class: +
        <ANY class=""> ... </ANY>
        +
      • + +
      + + + + + +

      Example

      In this example there are two locations where a simple interpolation binding ({{}}) is present, +but the one wrapped in ngNonBindable is left alone.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div>Normal: {{1 + 2}}</div>
      <div ng-non-bindable>Ignored: {{1 + 2}}</div>
      +
      + +
      +
      it('should check ng-non-bindable', function() {
        expect(element(by.binding('1 + 2')).getText()).toContain('3');
        expect(element.all(by.css('div')).last().getText()).toMatch(/1 \+ 2/);
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngOpen.html b/1.2.30/docs/partials/api/ng/directive/ngOpen.html new file mode 100644 index 0000000000..63fc0be4e7 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngOpen.html @@ -0,0 +1,130 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngOpen

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The HTML specification does not require browsers to preserve the values of boolean attributes +such as open. (Their presence means true and their absence means false.) +If we put an Angular interpolation expression into such an attribute then the +binding information would be lost when the browser removes the attribute. +The ngOpen directive solves this problem for the open attribute. +This complementary directive is not removed by the browser and so provides +a permanent reliable place to store the binding information.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 100.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <DETAILS
          ng-open="">
        ...
        </DETAILS>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngOpen + + + + expression + +

      If the expression is truthy, + then special attribute "open" will be set on the element

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      Check me check multiple: <input type="checkbox" ng-model="open"><br/>
      <details id="details" ng-open="open">
         <summary>Show/Hide me</summary>
      </details>
      +
      + +
      +
      it('should toggle open', function() {
        expect(element(by.id('details')).getAttribute('open')).toBeFalsy();
        element(by.model('open')).click();
        expect(element(by.id('details')).getAttribute('open')).toBeTruthy();
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngPaste.html b/1.2.30/docs/partials/api/ng/directive/ngPaste.html new file mode 100644 index 0000000000..765ac6b6bc --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngPaste.html @@ -0,0 +1,117 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngPaste

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Specify custom behavior on paste event.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <window, input, select, textarea, a
          ng-paste="">
        ...
        </window, input, select, textarea, a>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngPaste + + + + expression + +

      Expression to evaluate upon +paste. (Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <input ng-paste="paste=true" ng-init="paste=false" placeholder='paste here'>
      pasted: {{paste}}
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngPluralize.html b/1.2.30/docs/partials/api/ng/directive/ngPluralize.html new file mode 100644 index 0000000000..54602eec27 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngPluralize.html @@ -0,0 +1,221 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngPluralize

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      ngPluralize is a directive that displays messages according to en-US localization rules. +These rules are bundled with angular.js, but can be overridden +(see Angular i18n dev guide). You configure ngPluralize directive +by specifying the mappings between +plural categories +and the strings to be displayed.

      +

      Plural categories and explicit number rules

      +

      There are two +plural categories +in Angular's default en-US locale: "one" and "other".

      +

      While a plural category may match many numbers (for example, in en-US locale, "other" can match +any number that is not 1), an explicit number rule can only match one number. For example, the +explicit number rule for "3" matches the number 3. There are examples of plural categories +and explicit number rules throughout the rest of this documentation.

      +

      Configuring ngPluralize

      +

      You configure ngPluralize by providing 2 attributes: count and when. +You can also provide an optional attribute, offset.

      +

      The value of the count attribute can be either a string or an Angular expression; these are evaluated on the current scope for its bound value.

      +

      The when attribute specifies the mappings between plural categories and the actual +string to be displayed. The value of the attribute should be a JSON object.

      +

      The following example shows how to configure ngPluralize:

      +
      <ng-pluralize count="personCount"
      +when="{'0': 'Nobody is viewing.',
      +    'one': '1 person is viewing.',
      +    'other': '{} people are viewing.'}">
      +</ng-pluralize>
      +
      +

      In the example, "0: Nobody is viewing." is an explicit number rule. If you did not +specify this rule, 0 would be matched to the "other" category and "0 people are viewing" +would be shown instead of "Nobody is viewing". You can specify an explicit number rule for +other numbers, for example 12, so that instead of showing "12 people are viewing", you can +show "a dozen people are viewing".

      +

      You can use a set of closed braces ({}) as a placeholder for the number that you want substituted +into pluralized strings. In the previous example, Angular will replace {} with +{{personCount}}. The closed braces {} is a placeholder +for {{numberExpression}}.

      +

      Configuring ngPluralize with offset

      +

      The offset attribute allows further customization of pluralized text, which can result in +a better user experience. For example, instead of the message "4 people are viewing this document", +you might display "John, Kate and 2 others are viewing this document". +The offset attribute allows you to offset a number by any desired value. +Let's take a look at an example:

      +
      <ng-pluralize count="personCount" offset=2
      +when="{'0': 'Nobody is viewing.',
      +       '1': '{{person1}} is viewing.',
      +       '2': '{{person1}} and {{person2}} are viewing.',
      +       'one': '{{person1}}, {{person2}} and one other person are viewing.',
      +       'other': '{{person1}}, {{person2}} and {} other people are viewing.'}">
      +</ng-pluralize>
      +
      +

      Notice that we are still using two plural categories(one, other), but we added +three explicit number rules 0, 1 and 2. +When one person, perhaps John, views the document, "John is viewing" will be shown. +When three people view the document, no explicit number rule is found, so +an offset of 2 is taken off 3, and Angular uses 1 to decide the plural category. +In this case, plural category 'one' is matched and "John, Mary and one other person are viewing" +is shown.

      +

      Note that when you specify offsets, you must provide explicit number rules for +numbers from 0 up to and including the offset. If you use an offset of 3, for example, +you must provide explicit number rules for 0, 1, 2 and 3. You must also provide plural strings for +plural categories "one" and "other".

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        + +
      • as element: + (This directive can be used as custom element, but be aware of IE restrictions). +
        <ng-pluralize
          count=""
          when=""
          [offset=""]>
        ...
        </ng-pluralize>
        +
      • +
      • as attribute: +
        <ANY
          count=""
          when=""
          [offset=""]>
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + count + + + + stringexpression + +

      The variable to be bound to.

      + + +
      + when + + + + string + +

      The mapping between plural category to its corresponding strings.

      + + +
      + offset + +
      (optional)
      +
      + number + +

      Offset to deduct from the total number.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('pluralizeExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.person1 = 'Igor';
            $scope.person2 = 'Misko';
            $scope.personCount = 1;
          }]);
      </script>
      <div ng-controller="ExampleController">
        Person 1:<input type="text" ng-model="person1" value="Igor" /><br/>
        Person 2:<input type="text" ng-model="person2" value="Misko" /><br/>
        Number of People:<input type="text" ng-model="personCount" value="1" /><br/>
      
        <!--- Example with simple pluralization rules for en locale --->
        Without Offset:
        <ng-pluralize count="personCount"
                      when="{'0': 'Nobody is viewing.',
                             'one': '1 person is viewing.',
                             'other': '{} people are viewing.'}">
        </ng-pluralize><br>
      
        <!--- Example with offset --->
        With Offset(2):
        <ng-pluralize count="personCount" offset=2
                      when="{'0': 'Nobody is viewing.',
                             '1': '{{person1}} is viewing.',
                             '2': '{{person1}} and {{person2}} are viewing.',
                             'one': '{{person1}}, {{person2}} and one other person are viewing.',
                             'other': '{{person1}}, {{person2}} and {} other people are viewing.'}">
        </ng-pluralize>
      </div>
      +
      + +
      +
      it('should show correct pluralized string', function() {
        var withoutOffset = element.all(by.css('ng-pluralize')).get(0);
        var withOffset = element.all(by.css('ng-pluralize')).get(1);
        var countInput = element(by.model('personCount'));
      
        expect(withoutOffset.getText()).toEqual('1 person is viewing.');
        expect(withOffset.getText()).toEqual('Igor is viewing.');
      
        countInput.clear();
        countInput.sendKeys('0');
      
        expect(withoutOffset.getText()).toEqual('Nobody is viewing.');
        expect(withOffset.getText()).toEqual('Nobody is viewing.');
      
        countInput.clear();
        countInput.sendKeys('2');
      
        expect(withoutOffset.getText()).toEqual('2 people are viewing.');
        expect(withOffset.getText()).toEqual('Igor and Misko are viewing.');
      
        countInput.clear();
        countInput.sendKeys('3');
      
        expect(withoutOffset.getText()).toEqual('3 people are viewing.');
        expect(withOffset.getText()).toEqual('Igor, Misko and one other person are viewing.');
      
        countInput.clear();
        countInput.sendKeys('4');
      
        expect(withoutOffset.getText()).toEqual('4 people are viewing.');
        expect(withOffset.getText()).toEqual('Igor, Misko and 2 other people are viewing.');
      });
      it('should show data-bound names', function() {
        var withOffset = element.all(by.css('ng-pluralize')).get(1);
        var personCount = element(by.model('personCount'));
        var person1 = element(by.model('person1'));
        var person2 = element(by.model('person2'));
        personCount.clear();
        personCount.sendKeys('4');
        person1.clear();
        person1.sendKeys('Di');
        person2.clear();
        person2.sendKeys('Vojta');
        expect(withOffset.getText()).toEqual('Di, Vojta and 2 other people are viewing.');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngReadonly.html b/1.2.30/docs/partials/api/ng/directive/ngReadonly.html new file mode 100644 index 0000000000..888760f60e --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngReadonly.html @@ -0,0 +1,130 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngReadonly

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The HTML specification does not require browsers to preserve the values of boolean attributes +such as readonly. (Their presence means true and their absence means false.) +If we put an Angular interpolation expression into such an attribute then the +binding information would be lost when the browser removes the attribute. +The ngReadonly directive solves this problem for the readonly attribute. +This complementary directive is not removed by the browser and so provides +a permanent reliable place to store the binding information.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 100.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <INPUT
          ng-readonly="">
        ...
        </INPUT>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngReadonly + + + + expression + +

      If the expression is truthy, + then special attribute "readonly" will be set on the element

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      Check me to make text readonly: <input type="checkbox" ng-model="checked"><br/>
      <input type="text" ng-readonly="checked" value="I'm Angular"/>
      +
      + +
      +
      it('should toggle readonly attr', function() {
        expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeFalsy();
        element(by.model('checked')).click();
        expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeTruthy();
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngRepeat.html b/1.2.30/docs/partials/api/ng/directive/ngRepeat.html new file mode 100644 index 0000000000..11560fe0ae --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngRepeat.html @@ -0,0 +1,254 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngRepeat

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngRepeat directive instantiates a template once per item from a collection. Each template +instance gets its own scope, where the given loop variable is set to the current collection item, +and $index is set to the item index or key.

      +

      Special properties are exposed on the local scope of each template instance, including:

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      VariableTypeDetails
      $indexnumberiterator offset of the repeated element (0..length-1)
      $firstbooleantrue if the repeated element is first in the iterator.
      $middlebooleantrue if the repeated element is between the first and last in the iterator.
      $lastbooleantrue if the repeated element is last in the iterator.
      $evenbooleantrue if the iterator position $index is even (otherwise false).
      $oddbooleantrue if the iterator position $index is odd (otherwise false).
      +

      Creating aliases for these properties is possible with ngInit. +This may be useful when, for instance, nesting ngRepeats.

      +

      Special repeat start and end points

      +

      To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending +the range of the repeater by defining explicit start and end points by using ng-repeat-start and ng-repeat-end respectively. +The ng-repeat-start directive works the same as ng-repeat, but will repeat all the HTML code (including the tag it's defined on) +up to and including the ending HTML tag where ng-repeat-end is placed.

      +

      The example below makes use of this feature:

      +
      <header ng-repeat-start="item in items">
      +  Header {{ item }}
      +</header>
      +<div class="body">
      +  Body {{ item }}
      +</div>
      +<footer ng-repeat-end>
      +  Footer {{ item }}
      +</footer>
      +
      +

      And with an input of ['A','B'] for the items variable in the example above, the output will evaluate to:

      +
      <header>
      +  Header A
      +</header>
      +<div class="body">
      +  Body A
      +</div>
      +<footer>
      +  Footer A
      +</footer>
      +<header>
      +  Header B
      +</header>
      +<div class="body">
      +  Body B
      +</div>
      +<footer>
      +  Footer B
      +</footer>
      +
      +

      The custom start and end points for ngRepeat also support all other HTML directive syntax flavors provided in AngularJS (such +as data-ng-repeat-start, x-ng-repeat-start and ng:repeat-start).

      + +
      + + + + +
      + + + +

      Directive Info

      +
        +
      • This directive creates new scope.
      • +
      • This directive executes at priority level 1000.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-repeat="">
        ...
        </ANY>
        +
      • + +
      + +

      Animations

      +

      .enter - when a new item is added to the list or when an item is revealed after a filter

      +

      .leave - when an item is removed from the list or when an item is filtered out

      +

      .move - when an adjacent item is filtered out causing a reorder or when the item contents are reordered

      + + Click here to learn more about the steps involved in the animation. +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngRepeat + + + + repeat_expression + +

      The expression indicating how to enumerate a collection. These + formats are currently supported:

      +
        +
      • variable in expression – where variable is the user defined loop variable and expression +is a scope expression giving the collection to enumerate.

        +

        For example: album in artist.albums.

        +
      • +
      • (key, value) in expression – where key and value can be any user defined identifiers, +and expression is the scope expression giving the collection to enumerate.

        +

        For example: (name, age) in {'adam':10, 'amalie':12}.

        +
      • +
      • variable in expression track by tracking_expression – You can also provide an optional tracking function +which can be used to associate the objects in the collection with the DOM elements. If no tracking function +is specified the ng-repeat associates elements by identity in the collection. It is an error to have +more than one tracking function to resolve to the same key. (This would mean that two distinct objects are +mapped to the same DOM element, which is not possible.) Filters should be applied to the expression, +before specifying a tracking expression.

        +

        For example: item in items is equivalent to item in items track by $id(item). This implies that the DOM elements +will be associated by item identity in the array.

        +

        For example: item in items track by $id(item). A built in $id() function can be used to assign a unique +$$hashKey property to each item in the array. This property is then used as a key to associated DOM elements +with the corresponding item in the array by identity. Moving the same object in array would move the DOM +element in the same way in the DOM.

        +

        For example: item in items track by item.id is a typical pattern when the items come from the database. In this +case the object identity does not matter. Two objects are considered equivalent as long as their id +property is same.

        +

        For example: item in items | filter:searchText track by item.id is a pattern that might be used to apply a filter +to items in conjunction with a tracking expression.

        +
      • +
      + + +
      + +
      + + + + +

      Example

      This example initializes the scope to a list of names and +then uses ngRepeat to display every person: + + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-init="friends = [
        {name:'John', age:25, gender:'boy'},
        {name:'Jessie', age:30, gender:'girl'},
        {name:'Johanna', age:28, gender:'girl'},
        {name:'Joy', age:15, gender:'girl'},
        {name:'Mary', age:28, gender:'girl'},
        {name:'Peter', age:95, gender:'boy'},
        {name:'Sebastian', age:50, gender:'boy'},
        {name:'Erika', age:27, gender:'girl'},
        {name:'Patrick', age:40, gender:'boy'},
        {name:'Samantha', age:60, gender:'girl'}
      ]">
        I have {{friends.length}} friends. They are:
        <input type="search" ng-model="q" placeholder="filter friends..." />
        <ul class="example-animate-container">
          <li class="animate-repeat" ng-repeat="friend in friends | filter:q">
            [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old.
          </li>
        </ul>
      </div>
      +
      + +
      +
      .example-animate-container {
        background:white;
        border:1px solid black;
        list-style:none;
        margin:0;
        padding:0 10px;
      }
      
      .animate-repeat {
        line-height:40px;
        list-style:none;
        box-sizing:border-box;
      }
      
      .animate-repeat.ng-move,
      .animate-repeat.ng-enter,
      .animate-repeat.ng-leave {
        -webkit-transition:all linear 0.5s;
        transition:all linear 0.5s;
      }
      
      .animate-repeat.ng-leave.ng-leave-active,
      .animate-repeat.ng-move,
      .animate-repeat.ng-enter {
        opacity:0;
        max-height:0;
      }
      
      .animate-repeat.ng-leave,
      .animate-repeat.ng-move.ng-move-active,
      .animate-repeat.ng-enter.ng-enter-active {
        opacity:1;
        max-height:40px;
      }
      +
      + +
      +
      var friends = element.all(by.repeater('friend in friends'));
      
      it('should render initial data set', function() {
        expect(friends.count()).toBe(10);
        expect(friends.get(0).getText()).toEqual('[1] John who is 25 years old.');
        expect(friends.get(1).getText()).toEqual('[2] Jessie who is 30 years old.');
        expect(friends.last().getText()).toEqual('[10] Samantha who is 60 years old.');
        expect(element(by.binding('friends.length')).getText())
            .toMatch("I have 10 friends. They are:");
      });
      
       it('should update repeater when filter predicate changes', function() {
         expect(friends.count()).toBe(10);
      
         element(by.model('q')).sendKeys('ma');
      
         expect(friends.count()).toBe(2);
         expect(friends.get(0).getText()).toEqual('[1] Mary who is 28 years old.');
         expect(friends.last().getText()).toEqual('[2] Samantha who is 60 years old.');
       });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngSelected.html b/1.2.30/docs/partials/api/ng/directive/ngSelected.html new file mode 100644 index 0000000000..8e49c1471e --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngSelected.html @@ -0,0 +1,130 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngSelected

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The HTML specification does not require browsers to preserve the values of boolean attributes +such as selected. (Their presence means true and their absence means false.) +If we put an Angular interpolation expression into such an attribute then the +binding information would be lost when the browser removes the attribute. +The ngSelected directive solves this problem for the selected attribute. +This complementary directive is not removed by the browser and so provides +a permanent reliable place to store the binding information.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 100.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <OPTION
          ng-selected="">
        ...
        </OPTION>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngSelected + + + + expression + +

      If the expression is truthy, + then special attribute "selected" will be set on the element

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      Check me to select: <input type="checkbox" ng-model="selected"><br/>
      <select>
        <option>Hello!</option>
        <option id="greet" ng-selected="selected">Greetings!</option>
      </select>
      +
      + +
      +
      it('should select Greetings!', function() {
        expect(element(by.id('greet')).getAttribute('selected')).toBeFalsy();
        element(by.model('selected')).click();
        expect(element(by.id('greet')).getAttribute('selected')).toBeTruthy();
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngShow.html b/1.2.30/docs/partials/api/ng/directive/ngShow.html new file mode 100644 index 0000000000..08f18326b5 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngShow.html @@ -0,0 +1,204 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngShow

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngShow directive shows or hides the given HTML element based on the expression +provided to the ngShow attribute. The element is shown or hidden by removing or adding +the .ng-hide CSS class onto the element. The .ng-hide CSS class is predefined +in AngularJS and sets the display style to none (using an !important flag). +For CSP mode please add angular-csp.css to your html file (see ngCsp).

      +
      <!-- when $scope.myValue is truthy (element is visible) -->
      +<div ng-show="myValue"></div>
      +
      +<!-- when $scope.myValue is falsy (element is hidden) -->
      +<div ng-show="myValue" class="ng-hide"></div>
      +
      +

      When the ngShow expression evaluates to false then the .ng-hide CSS class is added to the class attribute +on the element causing it to become hidden. When true, the .ng-hide CSS class is removed +from the element causing the element not to appear hidden.

      +
      +Note: Here is a list of values that ngShow will consider as a falsy value (case insensitive):
      +"f" / "0" / "false" / "no" / "n" / "[]" +
      + +

      Why is !important used?

      +

      You may be wondering why !important is used for the .ng-hide CSS class. This is because the .ng-hide selector +can be easily overridden by heavier selectors. For example, something as simple +as changing the display style on a HTML list item would make hidden elements appear visible. +This also becomes a bigger issue when dealing with CSS frameworks.

      +

      By using !important, the show and hide behavior will work as expected despite any clash between CSS selector +specificity (when !important isn't used with any conflicting styles). If a developer chooses to override the +styling to change how to hide an element then it is just a matter of using !important in their own CSS code.

      +

      Overriding .ng-hide

      +

      By default, the .ng-hide class will style the element with display:none!important. If you wish to change +the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the .ng-hide +class in CSS:

      +
      .ng-hide {
      +//this is just another form of hiding an element
      +display:block!important;
      +position:absolute;
      +top:-9999px;
      +left:-9999px;
      +}
      +
      +

      By default you don't need to override in CSS anything and the animations will work around the display style.

      +

      A note about animations with ngShow

      +

      Animations in ngShow/ngHide work with the show and hide events that are triggered when the directive expression +is true and false. This system works like the animation system present with ngClass except that +you must also include the !important flag to override the display property +so that you can perform an animation when the element is hidden during the time of the animation.

      +
      //
      +//a working example can be found at the bottom of this page
      +//
      +.my-element.ng-hide-add, .my-element.ng-hide-remove {
      +  transition:0.5s linear all;
      +}
      +
      +.my-element.ng-hide-add { ... }
      +.my-element.ng-hide-add.ng-hide-add-active { ... }
      +.my-element.ng-hide-remove { ... }
      +.my-element.ng-hide-remove.ng-hide-remove-active { ... }
      +
      +

      Keep in mind that, as of AngularJS version 1.2.17 (and 1.3.0-beta.11), there is no need to change the display +property to block during animation states--ngAnimate will handle the style toggling automatically for you.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-show="">
        ...
        </ANY>
        +
      • + +
      + +

      Animations

      +

      addClass: .ng-hide - happens after the ngShow expression evaluates to a truthy value and the just before contents are set to visible +removeClass: .ng-hide - happens after the ngShow expression evaluates to a non truthy value and just before the contents are set to hidden

      + + Click here to learn more about the steps involved in the animation. +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngShow + + + + expression + +

      If the expression is truthy + then the element is shown or hidden respectively.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      Click me: <input type="checkbox" ng-model="checked"><br/>
      <div>
        Show:
        <div class="check-element animate-show" ng-show="checked">
          <span class="glyphicon glyphicon-thumbs-up"></span> I show up when your checkbox is checked.
        </div>
      </div>
      <div>
        Hide:
        <div class="check-element animate-show" ng-hide="checked">
          <span class="glyphicon glyphicon-thumbs-down"></span> I hide when your checkbox is checked.
        </div>
      </div>
      +
      + +
      +
      @import url(//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css);
      +
      + +
      +
      .animate-show {
        -webkit-transition:all linear 0.5s;
        transition:all linear 0.5s;
        line-height:20px;
        opacity:1;
        padding:10px;
        border:1px solid black;
        background:white;
      }
      
      .animate-show.ng-hide {
        line-height:0;
        opacity:0;
        padding:0 10px;
      }
      
      .check-element {
        padding:10px;
        border:1px solid black;
        background:white;
      }
      +
      + +
      +
      var thumbsUp = element(by.css('span.glyphicon-thumbs-up'));
      var thumbsDown = element(by.css('span.glyphicon-thumbs-down'));
      
      it('should check ng-show / ng-hide', function() {
        expect(thumbsUp.isDisplayed()).toBeFalsy();
        expect(thumbsDown.isDisplayed()).toBeTruthy();
      
        element(by.model('checked')).click();
      
        expect(thumbsUp.isDisplayed()).toBeTruthy();
        expect(thumbsDown.isDisplayed()).toBeFalsy();
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngSrc.html b/1.2.30/docs/partials/api/ng/directive/ngSrc.html new file mode 100644 index 0000000000..39540a242d --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngSrc.html @@ -0,0 +1,99 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngSrc

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Using Angular markup like {{hash}} in a src attribute doesn't +work right: The browser will fetch from the URL with the literal +text {{hash}} until Angular replaces the expression inside +{{hash}}. The ngSrc directive solves this problem.

      +

      The buggy way to write it:

      +
      <img src="http://www.gravatar.com/avatar/{{hash}}"/>
      +
      +

      The correct way to write it:

      +
      <img ng-src="http://www.gravatar.com/avatar/{{hash}}"/>
      +
      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 99.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <IMG
          ng-src="">
        ...
        </IMG>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngSrc + + + + template + +

      any string which can contain {{}} markup.

      + + +
      + +
      + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngSrcset.html b/1.2.30/docs/partials/api/ng/directive/ngSrcset.html new file mode 100644 index 0000000000..600394dd42 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngSrcset.html @@ -0,0 +1,99 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngSrcset

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Using Angular markup like {{hash}} in a srcset attribute doesn't +work right: The browser will fetch from the URL with the literal +text {{hash}} until Angular replaces the expression inside +{{hash}}. The ngSrcset directive solves this problem.

      +

      The buggy way to write it:

      +
      <img srcset="http://www.gravatar.com/avatar/{{hash}} 2x"/>
      +
      +

      The correct way to write it:

      +
      <img ng-srcset="http://www.gravatar.com/avatar/{{hash}} 2x"/>
      +
      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 99.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <IMG
          ng-srcset="">
        ...
        </IMG>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngSrcset + + + + template + +

      any string which can contain {{}} markup.

      + + +
      + +
      + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngStyle.html b/1.2.30/docs/partials/api/ng/directive/ngStyle.html new file mode 100644 index 0000000000..895c450410 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngStyle.html @@ -0,0 +1,137 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngStyle

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngStyle directive allows you to set CSS style on an HTML element conditionally.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-style="">
        ...
        </ANY>
        +
      • +
      • as CSS class: +
        <ANY class="ng-style: ;"> ... </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngStyle + + + + expression + +

      Expression which evals to an +object whose keys are CSS style names and values are corresponding values for those CSS +keys.

      +

      Since some CSS style names are not valid keys for an object, they must be quoted. +See the 'background-color' style in the example below.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <input type="button" value="set color" ng-click="myStyle={color:'red'}">
      <input type="button" value="set background" ng-click="myStyle={'background-color':'blue'}">
      <input type="button" value="clear" ng-click="myStyle={}">
      <br/>
      <span ng-style="myStyle">Sample Text</span>
      <pre>myStyle={{myStyle}}</pre>
      +
      + +
      +
      span {
        color: black;
      }
      +
      + +
      +
      var colorSpan = element(by.css('span'));
      
      it('should check ng-style', function() {
        expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');
        element(by.css('input[value=\'set color\']')).click();
        expect(colorSpan.getCssValue('color')).toBe('rgba(255, 0, 0, 1)');
        element(by.css('input[value=clear]')).click();
        expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngSubmit.html b/1.2.30/docs/partials/api/ng/directive/ngSubmit.html new file mode 100644 index 0000000000..70021ec428 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngSubmit.html @@ -0,0 +1,133 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngSubmit

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Enables binding angular expressions to onsubmit events.

      +

      Additionally it prevents the default action (which for form means sending the request to the +server and reloading the current page), but only if the form does not contain action, +data-action, or x-action attributes.

      +
      +Warning: Be careful not to cause "double-submission" by using both the ngClick and +ngSubmit handlers together. See the +form directive documentation +for a detailed discussion of when ngSubmit may be triggered. +
      +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <form
          ng-submit="">
        ...
        </form>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngSubmit + + + + expression + +

      Expression to eval. +(Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('submitExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.list = [];
            $scope.text = 'hello';
            $scope.submit = function() {
              if ($scope.text) {
                $scope.list.push(this.text);
                $scope.text = '';
              }
            };
          }]);
      </script>
      <form ng-submit="submit()" ng-controller="ExampleController">
        Enter text and hit enter:
        <input type="text" ng-model="text" name="text" />
        <input type="submit" id="submit" value="Submit" />
        <pre>list={{list}}</pre>
      </form>
      +
      + +
      +
      it('should check ng-submit', function() {
        expect(element(by.binding('list')).getText()).toBe('list=[]');
        element(by.css('#submit')).click();
        expect(element(by.binding('list')).getText()).toContain('hello');
        expect(element(by.model('text')).getAttribute('value')).toBe('');
      });
      it('should ignore empty strings', function() {
        expect(element(by.binding('list')).getText()).toBe('list=[]');
        element(by.css('#submit')).click();
        element(by.css('#submit')).click();
        expect(element(by.binding('list')).getText()).toContain('hello');
       });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngSwitch.html b/1.2.30/docs/partials/api/ng/directive/ngSwitch.html new file mode 100644 index 0000000000..6c6a6461db --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngSwitch.html @@ -0,0 +1,172 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngSwitch

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      The ngSwitch directive is used to conditionally swap DOM structure on your template based on a scope expression. +Elements within ngSwitch but without ngSwitchWhen or ngSwitchDefault directives will be preserved at the location +as specified in the template.

      +

      The directive itself works similar to ngInclude, however, instead of downloading template code (or loading it +from the template cache), ngSwitch simply chooses one of the nested elements and makes it visible based on which element +matches the value obtained from the evaluated expression. In other words, you define a container element +(where you place the directive), place an expression on the on="..." attribute +(or the ng-switch="..." attribute), define any inner elements inside of the directive and place +a when attribute per element. The when attribute is used to inform ngSwitch which element to display when the on +expression is evaluated. If a matching expression is not found via a when attribute then an element with the default +attribute is displayed.

      +
      +Be aware that the attribute values to match against cannot be expressions. They are interpreted +as literal string values to match against. +For example, ng-switch-when="someVal" will match against the string "someVal" not against the +value of the expression $scope.someVal. +
      +
      + + + + +
      + + + +

      Directive Info

      +
        +
      • This directive creates new scope.
      • +
      • This directive executes at priority level 800.
      • +
      + + +

      Usage

      +
      + +
      <ANY ng-switch="expression">
      +<ANY ng-switch-when="matchValue1">...</ANY>
      +<ANY ng-switch-when="matchValue2">...</ANY>
      +<ANY ng-switch-default>...</ANY>
      +</ANY>
      +
      + + +
      + +

      Animations

      +

      enter - happens after the ngSwitch contents change and the matched child element is placed inside the container +leave - happens just after the ngSwitch contents change and just before the former contents are removed from the DOM

      + + Click here to learn more about the steps involved in the animation. +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngSwitch + | on + + + * + +

      expression to match against ng-switch-when. +On child elements add:

      +
        +
      • ngSwitchWhen: the case statement to match against. If match then this +case will be displayed. If the same match appears multiple times, all the +elements will be displayed.
      • +
      • ngSwitchDefault: the default case when no other case match. If there +are multiple default cases, all of them will be displayed when no other +case match.
      • +
      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="ExampleController">
        <select ng-model="selection" ng-options="item for item in items">
        </select>
        <tt>selection={{selection}}</tt>
        <hr/>
        <div class="animate-switch-container"
          ng-switch on="selection">
            <div class="animate-switch" ng-switch-when="settings">Settings Div</div>
            <div class="animate-switch" ng-switch-when="home">Home Span</div>
            <div class="animate-switch" ng-switch-default>default</div>
        </div>
      </div>
      +
      + +
      +
      angular.module('switchExample', ['ngAnimate'])
        .controller('ExampleController', ['$scope', function($scope) {
          $scope.items = ['settings', 'home', 'other'];
          $scope.selection = $scope.items[0];
        }]);
      +
      + +
      +
      .animate-switch-container {
        position:relative;
        background:white;
        border:1px solid black;
        height:40px;
        overflow:hidden;
      }
      
      .animate-switch {
        padding:10px;
      }
      
      .animate-switch.ng-animate {
        -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
        transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
      
        position:absolute;
        top:0;
        left:0;
        right:0;
        bottom:0;
      }
      
      .animate-switch.ng-leave.ng-leave-active,
      .animate-switch.ng-enter {
        top:-50px;
      }
      .animate-switch.ng-leave,
      .animate-switch.ng-enter.ng-enter-active {
        top:0;
      }
      +
      + +
      +
      var switchElem = element(by.css('[ng-switch]'));
      var select = element(by.model('selection'));
      
      it('should start in settings', function() {
        expect(switchElem.getText()).toMatch(/Settings Div/);
      });
      it('should change to home', function() {
        select.all(by.css('option')).get(1).click();
        expect(switchElem.getText()).toMatch(/Home Span/);
      });
      it('should select default', function() {
        select.all(by.css('option')).get(2).click();
        expect(switchElem.getText()).toMatch(/default/);
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngTransclude.html b/1.2.30/docs/partials/api/ng/directive/ngTransclude.html new file mode 100644 index 0000000000..407d5df7f7 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngTransclude.html @@ -0,0 +1,95 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngTransclude

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion.

      +

      Any existing content of the element that this directive is placed on will be removed before the transcluded content is inserted.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY>
        ...
        </ANY>
        +
      • +
      • as CSS class: +
        <ANY class=""> ... </ANY>
        +
      • + +
      + + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('transcludeExample', [])
         .directive('pane', function(){
            return {
              restrict: 'E',
              transclude: true,
              scope: { title:'@' },
              template: '<div style="border: 1px solid black;">' +
                          '<div style="background-color: gray">{{title}}</div>' +
                          '<div ng-transclude></div>' +
                        '</div>'
            };
        })
        .controller('ExampleController', ['$scope', function($scope) {
          $scope.title = 'Lorem Ipsum';
          $scope.text = 'Neque porro quisquam est qui dolorem ipsum quia dolor...';
        }]);
      </script>
      <div ng-controller="ExampleController">
        <input ng-model="title"><br>
        <textarea ng-model="text"></textarea> <br/>
        <pane title="{{title}}">{{text}}</pane>
      </div>
      +
      + +
      +
      it('should have transcluded', function() {
        var titleElement = element(by.model('title'));
        titleElement.clear();
        titleElement.sendKeys('TITLE');
        var textElement = element(by.model('text'));
        textElement.clear();
        textElement.sendKeys('TEXT');
        expect(element(by.binding('title')).getText()).toEqual('TITLE');
        expect(element(by.binding('text')).getText()).toEqual('TEXT');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/ngValue.html b/1.2.30/docs/partials/api/ng/directive/ngValue.html new file mode 100644 index 0000000000..747185396d --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/ngValue.html @@ -0,0 +1,130 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngValue

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Binds the given expression to the value of input[select] or input[radio], so +that when the element is selected, the ngModel of that element is set to the +bound value.

      +

      ngValue is useful when dynamically generating lists of radio buttons using ng-repeat, as +shown below.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <input
          [ng-value=""]>
        ...
        </input>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngValue + +
      (optional)
      +
      + string + +

      angular expression, whose value will be bound to the value attribute + of the input element

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
         angular.module('valueExample', [])
           .controller('ExampleController', ['$scope', function($scope) {
             $scope.names = ['pizza', 'unicorns', 'robots'];
             $scope.my = { favorite: 'unicorns' };
           }]);
      </script>
       <form ng-controller="ExampleController">
         <h2>Which is your favorite?</h2>
           <label ng-repeat="name in names" for="{{name}}">
             {{name}}
             <input type="radio"
                    ng-model="my.favorite"
                    ng-value="name"
                    id="{{name}}"
                    name="favorite">
           </label>
         <div>You chose {{my.favorite}}</div>
       </form>
      +
      + +
      +
      var favorite = element(by.binding('my.favorite'));
      
      it('should initialize to model', function() {
        expect(favorite.getText()).toContain('unicorns');
      });
      it('should bind the values to the inputs', function() {
        element.all(by.model('my.favorite')).get(0).click();
        expect(favorite.getText()).toContain('pizza');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/script.html b/1.2.30/docs/partials/api/ng/directive/script.html new file mode 100644 index 0000000000..298f2d0559 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/script.html @@ -0,0 +1,145 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      script

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      Load the content of a <script> element into $templateCache, so that the +template can be used by ngInclude, +ngView, or directives. The type of the +<script> element must be specified as text/ng-template, and a cache name for the template must be +assigned through the element's id, which can then be used as a directive's templateUrl.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        + +
      • as element: + +
        <script
          type=""
          id="">
        ...
        </script>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + type + + + + string + +

      Must be set to 'text/ng-template'.

      + + +
      + id + + + + string + +

      Cache name of the template.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script type="text/ng-template" id="/tpl.html">
        Content of the template.
      </script>
      
      <a ng-click="currentTpl='/tpl.html'" id="tpl-link">Load inlined template</a>
      <div id="tpl-content" ng-include src="currentTpl"></div>
      +
      + +
      +
      it('should load template defined inside script tag', function() {
        element(by.css('#tpl-link')).click();
        expect(element(by.css('#tpl-content')).getText()).toMatch(/Content of the template/);
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/select.html b/1.2.30/docs/partials/api/ng/directive/select.html new file mode 100644 index 0000000000..f152f83808 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/select.html @@ -0,0 +1,245 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      select

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      HTML SELECT element with angular data-binding.

      +

      ngOptions

      +

      The ngOptions attribute can be used to dynamically generate a list of <option> +elements for the <select> element using the array or object obtained by evaluating the +ngOptions comprehension_expression.

      +

      When an item in the <select> menu is selected, the array element or object property +represented by the selected option will be bound to the model identified by the ngModel +directive.

      +
      +Note: ngModel compares by reference, not value. This is important when binding to an +array of objects. See an example in this jsfiddle. +
      + +

      Optionally, a single hard-coded <option> element, with the value set to an empty string, can +be nested into the <select> element. This element will then represent the null or "not selected" +option. See example below for demonstration.

      +
      +Note: ngOptions provides an iterator facility for the <option> element which should be used instead +of ngRepeat when you want the +select model to be bound to a non-string value. This is because an option element can only +be bound to string values at present. +
      +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        + +
      • as element: + +
        <select
          ng-model=""
          [name=""]
          [required=""]
          [ng-required=""]
          [ng-options=""]>
        ...
        </select>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngModel + + + + string + +

      Assignable angular expression to data-bind to.

      + + +
      + name + +
      (optional)
      +
      + string + +

      Property name of the form under which the control is published.

      + + +
      + required + +
      (optional)
      +
      + string + +

      The control is considered valid only if value is entered.

      + + +
      + ngRequired + +
      (optional)
      +
      + string + +

      Adds required attribute and required validation constraint to + the element when the ngRequired expression evaluates to true. Use ngRequired instead of + required when you want to data-bind to the required attribute.

      + + +
      + ngOptions + +
      (optional)
      +
      + comprehension_expression + +

      in one of the following forms:

      +
        +
      • for array data sources:
          +
        • label for value in array
        • +
        • select as label for value in array
        • +
        • label group by group for value in array
        • +
        • select as label group by group for value in array track by trackexpr
        • +
        +
      • +
      • for object data sources:
          +
        • label for (key , value) in object
        • +
        • select as label for (key , value) in object
        • +
        • label group by group for (key, value) in object
        • +
        • select as label group by group + for (key, value) in object
        • +
        +
      • +
      +

      Where:

      +
        +
      • array / object: an expression which evaluates to an array / object to iterate over.
      • +
      • value: local variable which will refer to each item in the array or each property value + of object during iteration.
      • +
      • key: local variable which will refer to a property name in object during iteration.
      • +
      • label: The result of this expression will be the label for <option> element. The +expression will most likely refer to the value variable (e.g. value.propertyName).
      • +
      • select: The result of this expression will be bound to the model of the parent <select> + element. If not specified, select expression will default to value.
      • +
      • group: The result of this expression will be used to group options using the <optgroup> + DOM element.
      • +
      • trackexpr: Used when working with an array of objects. The result of this expression will be + used to identify the objects in the array. The trackexpr will most likely refer to the +value variable (e.g. value.propertyName).
      • +
      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
      angular.module('selectExample', [])
        .controller('ExampleController', ['$scope', function($scope) {
          $scope.colors = [
            {name:'black', shade:'dark'},
            {name:'white', shade:'light'},
            {name:'red', shade:'dark'},
            {name:'blue', shade:'dark'},
            {name:'yellow', shade:'light'}
          ];
          $scope.myColor = $scope.colors[2]; // red
        }]);
      </script>
      <div ng-controller="ExampleController">
        <ul>
          <li ng-repeat="color in colors">
            Name: <input ng-model="color.name">
            [<a href ng-click="colors.splice($index, 1)">X</a>]
          </li>
          <li>
            [<a href ng-click="colors.push({})">add</a>]
          </li>
        </ul>
        <hr/>
        Color (null not allowed):
        <select ng-model="myColor" ng-options="color.name for color in colors"></select><br>
      
        Color (null allowed):
        <span  class="nullable">
          <select ng-model="myColor" ng-options="color.name for color in colors">
            <option value="">-- choose color --</option>
          </select>
        </span><br/>
      
        Color grouped by shade:
        <select ng-model="myColor" ng-options="color.name group by color.shade for color in colors">
        </select><br/>
      
      
        Select <a href ng-click="myColor = { name:'not in list', shade: 'other' }">bogus</a>.<br>
        <hr/>
        Currently selected: {{ {selected_color:myColor}  }}
        <div style="border:solid 1px black; height:20px"
             ng-style="{'background-color':myColor.name}">
        </div>
      </div>
      +
      + +
      +
      it('should check ng-options', function() {
        expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red');
        element.all(by.model('myColor')).first().click();
        element.all(by.css('select[ng-model="myColor"] option')).first().click();
        expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black');
        element(by.css('.nullable select[ng-model="myColor"]')).click();
        element.all(by.css('.nullable select[ng-model="myColor"] option')).first().click();
        expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/directive/textarea.html b/1.2.30/docs/partials/api/ng/directive/textarea.html new file mode 100644 index 0000000000..b9aa02d2a4 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/directive/textarea.html @@ -0,0 +1,229 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      textarea

      +
        + +
      1. + - directive in module ng +
      2. +
      +
      + + + +
      +

      HTML textarea element control with angular data-binding. The data-binding and validation +properties of this element are exactly the same as those of the +input element.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        + +
      • as element: + +
        <textarea
          ng-model=""
          [name=""]
          [required=""]
          [ng-required=""]
          [ng-minlength=""]
          [ng-maxlength=""]
          [ng-pattern=""]
          [ng-change=""]
          [ng-trim=""]>
        ...
        </textarea>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngModel + + + + string + +

      Assignable angular expression to data-bind to.

      + + +
      + name + +
      (optional)
      +
      + string + +

      Property name of the form under which the control is published.

      + + +
      + required + +
      (optional)
      +
      + string + +

      Sets required validation error key if the value is not entered.

      + + +
      + ngRequired + +
      (optional)
      +
      + string + +

      Adds required attribute and required validation constraint to + the element when the ngRequired expression evaluates to true. Use ngRequired instead of + required when you want to data-bind to the required attribute.

      + + +
      + ngMinlength + +
      (optional)
      +
      + number + +

      Sets minlength validation error key if the value is shorter than + minlength.

      + + +
      + ngMaxlength + +
      (optional)
      +
      + number + +

      Sets maxlength validation error key if the value is longer than + maxlength.

      + + +
      + ngPattern + +
      (optional)
      +
      + string + +

      Sets pattern validation error key if the value does not match the + RegExp pattern expression. Expected value is /regexp/ for inline patterns or regexp for + patterns defined as scope expressions.

      + + +
      + ngChange + +
      (optional)
      +
      + string + +

      Angular expression to be executed when input changes due to user + interaction with the input element.

      + + +
      + ngTrim + +
      (optional)
      +
      + boolean + +

      If set to false Angular will not automatically trim the input.

      + +

      (default: true)

      +
      + +
      + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/filter.html b/1.2.30/docs/partials/api/ng/filter.html new file mode 100644 index 0000000000..aeca4c09da --- /dev/null +++ b/1.2.30/docs/partials/api/ng/filter.html @@ -0,0 +1,76 @@ + +

      Filter components in ng

      + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      filter

      Selects a subset of items from array and returns it as a new array.

      +
      currency

      Formats a number as a currency (ie $1,234.56). When no currency symbol is provided, default +symbol for current locale is used.

      +
      number

      Formats a number as text.

      +
      date

      Formats date to a string based on the requested format.

      +
      json

      Allows you to convert a JavaScript object into JSON string.

      +
      lowercase

      Converts string to lowercase.

      +
      uppercase

      Converts string to uppercase.

      +
      limitTo

      Creates a new array or string containing only a specified number of elements. The elements +are taken from either the beginning or the end of the source array or string, as specified by +the value and sign (positive or negative) of limit.

      +
      orderBy

      Orders a specified array by the expression predicate. It is ordered alphabetically +for strings and numerically for numbers. Note: if you notice numbers are not being sorted +correctly, make sure they are actually being saved as numbers and not strings.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ng/filter/currency.html b/1.2.30/docs/partials/api/ng/filter/currency.html new file mode 100644 index 0000000000..2c34e9c59f --- /dev/null +++ b/1.2.30/docs/partials/api/ng/filter/currency.html @@ -0,0 +1,142 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      currency

      +
        + +
      1. + - filter in module ng +
      2. +
      +
      + + + +
      +

      Formats a number as a currency (ie $1,234.56). When no currency symbol is provided, default +symbol for current locale is used.

      + +
      + + + + +
      + + + +

      Usage

      +

      In HTML Template Binding

      + +
      {{ currency_expression | currency : symbol}}
      + + +

      In JavaScript

      +
      $filter('currency')(amount, symbol)
      + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + amount + + + + number + +

      Input to filter.

      + + +
      + symbol + +
      (optional)
      +
      + string + +

      Currency symbol or identifier to be displayed.

      + + +
      + +
      + +

      Returns

      + + + + + +
      string

      Formatted number.

      +
      + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('currencyExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.amount = 1234.56;
          }]);
      </script>
      <div ng-controller="ExampleController">
        <input type="number" ng-model="amount"> <br>
        default currency symbol ($): <span id="currency-default">{{amount | currency}}</span><br>
        custom currency identifier (USD$): <span>{{amount | currency:"USD$"}}</span>
      </div>
      +
      + +
      +
      it('should init with 1234.56', function() {
        expect(element(by.id('currency-default')).getText()).toBe('$1,234.56');
        expect(element(by.binding('amount | currency:"USD$"')).getText()).toBe('USD$1,234.56');
      });
      it('should update', function() {
        if (browser.params.browser == 'safari') {
          // Safari does not understand the minus key. See
          // https://github.com/angular/protractor/issues/481
          return;
        }
        element(by.model('amount')).clear();
        element(by.model('amount')).sendKeys('-1234');
        expect(element(by.id('currency-default')).getText()).toBe('($1,234.00)');
        expect(element(by.binding('amount | currency:"USD$"')).getText()).toBe('(USD$1,234.00)');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/filter/date.html b/1.2.30/docs/partials/api/ng/filter/date.html new file mode 100644 index 0000000000..04824805da --- /dev/null +++ b/1.2.30/docs/partials/api/ng/filter/date.html @@ -0,0 +1,187 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      date

      +
        + +
      1. + - filter in module ng +
      2. +
      +
      + + + +
      +

      Formats date to a string based on the requested format.

      +

      format string can be composed of the following elements:

      +
        +
      • 'yyyy': 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010)
      • +
      • 'yy': 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)
      • +
      • 'y': 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199)
      • +
      • 'MMMM': Month in year (January-December)
      • +
      • 'MMM': Month in year (Jan-Dec)
      • +
      • 'MM': Month in year, padded (01-12)
      • +
      • 'M': Month in year (1-12)
      • +
      • 'dd': Day in month, padded (01-31)
      • +
      • 'd': Day in month (1-31)
      • +
      • 'EEEE': Day in Week,(Sunday-Saturday)
      • +
      • 'EEE': Day in Week, (Sun-Sat)
      • +
      • 'HH': Hour in day, padded (00-23)
      • +
      • 'H': Hour in day (0-23)
      • +
      • 'hh': Hour in am/pm, padded (01-12)
      • +
      • 'h': Hour in am/pm, (1-12)
      • +
      • 'mm': Minute in hour, padded (00-59)
      • +
      • 'm': Minute in hour (0-59)
      • +
      • 'ss': Second in minute, padded (00-59)
      • +
      • 's': Second in minute (0-59)
      • +
      • '.sss' or ',sss': Millisecond in second, padded (000-999)
      • +
      • 'a': am/pm marker
      • +
      • 'Z': 4 digit (+sign) representation of the timezone offset (-1200-+1200)

        +

        format string can also be one of the following predefined +localizable formats:

        +
      • +
      • 'medium': equivalent to 'MMM d, y h:mm:ss a' for en_US locale +(e.g. Sep 3, 2010 12:05:08 pm)

        +
      • +
      • 'short': equivalent to 'M/d/yy h:mm a' for en_US locale (e.g. 9/3/10 12:05 pm)
      • +
      • 'fullDate': equivalent to 'EEEE, MMMM d,y' for en_US locale +(e.g. Friday, September 3, 2010)
      • +
      • 'longDate': equivalent to 'MMMM d, y' for en_US locale (e.g. September 3, 2010)
      • +
      • 'mediumDate': equivalent to 'MMM d, y' for en_US locale (e.g. Sep 3, 2010)
      • +
      • 'shortDate': equivalent to 'M/d/yy' for en_US locale (e.g. 9/3/10)
      • +
      • 'mediumTime': equivalent to 'h:mm:ss a' for en_US locale (e.g. 12:05:08 pm)
      • +
      • 'shortTime': equivalent to 'h:mm a' for en_US locale (e.g. 12:05 pm)

        +

        format string can contain literal values. These need to be escaped by surrounding with single quotes (e.g. +"h 'in the morning'"). In order to output a single quote, escape it - i.e., two single quotes in a sequence +(e.g. "h 'o''clock'").

        +
      • +
      + +
      + + + + +
      + + + +

      Usage

      +

      In HTML Template Binding

      + +
      {{ date_expression | date : format}}
      + + +

      In JavaScript

      +
      $filter('date')(date, format)
      + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + date + + + + Datenumberstring + +

      Date to format either as Date object, milliseconds (string or + number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.sssZ and its + shorter versions like yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ). If no timezone is + specified in the string input, the time is considered to be in the local timezone.

      + + +
      + format + +
      (optional)
      +
      + string + +

      Formatting rules (see Description). If not specified, + mediumDate is used.

      + + +
      + +
      + +

      Returns

      + + + + + +
      string

      Formatted string or the input if input is not recognized as date/millis.

      +
      + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <span ng-non-bindable>{{1288323623006 | date:'medium'}}</span>:
          <span>{{1288323623006 | date:'medium'}}</span><br>
      <span ng-non-bindable>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span>:
         <span>{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}</span><br>
      <span ng-non-bindable>{{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}</span>:
         <span>{{'1288323623006' | date:'MM/dd/yyyy @ h:mma'}}</span><br>
      <span ng-non-bindable>{{1288323623006 | date:"MM/dd/yyyy 'at' h:mma"}}</span>:
         <span>{{'1288323623006' | date:"MM/dd/yyyy 'at' h:mma"}}</span><br>
      +
      + +
      +
      it('should format date', function() {
        expect(element(by.binding("1288323623006 | date:'medium'")).getText()).
           toMatch(/Oct 2\d, 2010 \d{1,2}:\d{2}:\d{2} (AM|PM)/);
        expect(element(by.binding("1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'")).getText()).
           toMatch(/2010\-10\-2\d \d{2}:\d{2}:\d{2} (\-|\+)?\d{4}/);
        expect(element(by.binding("'1288323623006' | date:'MM/dd/yyyy @ h:mma'")).getText()).
           toMatch(/10\/2\d\/2010 @ \d{1,2}:\d{2}(AM|PM)/);
        expect(element(by.binding("'1288323623006' | date:\"MM/dd/yyyy 'at' h:mma\"")).getText()).
           toMatch(/10\/2\d\/2010 at \d{1,2}:\d{2}(AM|PM)/);
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/filter/filter.html b/1.2.30/docs/partials/api/ng/filter/filter.html new file mode 100644 index 0000000000..dd3896695e --- /dev/null +++ b/1.2.30/docs/partials/api/ng/filter/filter.html @@ -0,0 +1,185 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      filter

      +
        + +
      1. + - filter in module ng +
      2. +
      +
      + + + +
      +

      Selects a subset of items from array and returns it as a new array.

      + +
      + + + + +
      + + + +

      Usage

      +

      In HTML Template Binding

      + +
      {{ filter_expression | filter : expression : comparator}}
      + + +

      In JavaScript

      +
      $filter('filter')(array, expression, comparator)
      + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + array + + + + Array + +

      The source array.

      + + +
      + expression + + + + stringObjectfunction() + +

      The predicate to be used for selecting items from + array.

      +

      Can be one of:

      +
        +
      • string: The string is evaluated as an expression and the resulting value is used for substring match against +the contents of the array. All strings or objects with string properties in array that contain this string +will be returned. The predicate can be negated by prefixing the string with !.

        +
      • +
      • Object: A pattern object can be used to filter specific properties on objects contained +by array. For example {name:"M", phone:"1"} predicate will return an array of items +which have property name containing "M" and property phone containing "1". A special +property name $ can be used (as in {$:"text"}) to accept a match against any +property of the object. That's equivalent to the simple substring match with a string +as described above. The predicate can be negated by prefixing the string with !. +For Example {name: "!M"} predicate will return an array of items which have property name +not containing "M".

        +
      • +
      • function(value): A predicate function can be used to write arbitrary filters. The function is +called for each element of array. The final result is an array of those elements that +the predicate returned true for.

        +
      • +
      + + +
      + comparator + + + + function(actual, expected)trueundefined + +

      Comparator which is used in + determining if the expected value (from the filter expression) and actual value (from + the object in the array) should be considered a match.

      +

      Can be one of:

      +
        +
      • function(actual, expected): +The function will be given the object value and the predicate value to compare and +should return true if the item should be included in filtered result.

        +
      • +
      • true: A shorthand for function(actual, expected) { return angular.equals(expected, actual)}. +this is essentially strict comparison of expected and actual.

        +
      • +
      • false|undefined: A short hand for a function which will look for a substring match in case +insensitive way.

        +
      • +
      + + +
      + +
      + + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-init="friends = [{name:'John', phone:'555-1276'},
                               {name:'Mary', phone:'800-BIG-MARY'},
                               {name:'Mike', phone:'555-4321'},
                               {name:'Adam', phone:'555-5678'},
                               {name:'Julie', phone:'555-8765'},
                               {name:'Juliette', phone:'555-5678'}]"></div>
      
      Search: <input ng-model="searchText">
      <table id="searchTextResults">
        <tr><th>Name</th><th>Phone</th></tr>
        <tr ng-repeat="friend in friends | filter:searchText">
          <td>{{friend.name}}</td>
          <td>{{friend.phone}}</td>
        </tr>
      </table>
      <hr>
      Any: <input ng-model="search.$"> <br>
      Name only <input ng-model="search.name"><br>
      Phone only <input ng-model="search.phone"><br>
      Equality <input type="checkbox" ng-model="strict"><br>
      <table id="searchObjResults">
        <tr><th>Name</th><th>Phone</th></tr>
        <tr ng-repeat="friendObj in friends | filter:search:strict">
          <td>{{friendObj.name}}</td>
          <td>{{friendObj.phone}}</td>
        </tr>
      </table>
      +
      + +
      +
      var expectFriendNames = function(expectedNames, key) {
        element.all(by.repeater(key + ' in friends').column(key + '.name')).then(function(arr) {
          arr.forEach(function(wd, i) {
            expect(wd.getText()).toMatch(expectedNames[i]);
          });
        });
      };
      
      it('should search across all fields when filtering with a string', function() {
        var searchText = element(by.model('searchText'));
        searchText.clear();
        searchText.sendKeys('m');
        expectFriendNames(['Mary', 'Mike', 'Adam'], 'friend');
      
        searchText.clear();
        searchText.sendKeys('76');
        expectFriendNames(['John', 'Julie'], 'friend');
      });
      
      it('should search in specific fields when filtering with a predicate object', function() {
        var searchAny = element(by.model('search.$'));
        searchAny.clear();
        searchAny.sendKeys('i');
        expectFriendNames(['Mary', 'Mike', 'Julie', 'Juliette'], 'friendObj');
      });
      it('should use a equal comparison when comparator is true', function() {
        var searchName = element(by.model('search.name'));
        var strict = element(by.model('strict'));
        searchName.clear();
        searchName.sendKeys('Julie');
        strict.click();
        expectFriendNames(['Julie'], 'friendObj');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/filter/json.html b/1.2.30/docs/partials/api/ng/filter/json.html new file mode 100644 index 0000000000..21096b4048 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/filter/json.html @@ -0,0 +1,126 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      json

      +
        + +
      1. + - filter in module ng +
      2. +
      +
      + + + +
      +

      Allows you to convert a JavaScript object into JSON string.

      +

      This filter is mostly useful for debugging. When using the double curly {{value}} notation + the binding is automatically converted to JSON.

      + +
      + + + + +
      + + + +

      Usage

      +

      In HTML Template Binding

      + +
      {{ json_expression | json}}
      + + +

      In JavaScript

      +
      $filter('json')(object)
      + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + object + + + + * + +

      Any JavaScript object (including arrays and primitive types) to filter.

      + + +
      + +
      + +

      Returns

      + + + + + +
      string

      JSON string.

      +
      + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <pre>{{ {'name':'value'} | json }}</pre>
      +
      + +
      +
      it('should jsonify filtered objects', function() {
        expect(element(by.binding("{'name':'value'}")).getText()).toMatch(/\{\n  "name": ?"value"\n}/);
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/filter/limitTo.html b/1.2.30/docs/partials/api/ng/filter/limitTo.html new file mode 100644 index 0000000000..206649f0ff --- /dev/null +++ b/1.2.30/docs/partials/api/ng/filter/limitTo.html @@ -0,0 +1,147 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      limitTo

      +
        + +
      1. + - filter in module ng +
      2. +
      +
      + + + +
      +

      Creates a new array or string containing only a specified number of elements. The elements +are taken from either the beginning or the end of the source array or string, as specified by +the value and sign (positive or negative) of limit.

      + +
      + + + + +
      + + + +

      Usage

      +

      In HTML Template Binding

      + +
      {{ limitTo_expression | limitTo : limit}}
      + + +

      In JavaScript

      +
      $filter('limitTo')(input, limit)
      + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + input + + + + Arraystring + +

      Source array or string to be limited.

      + + +
      + limit + + + + stringnumber + +

      The length of the returned array or string. If the limit number + is positive, limit number of items from the beginning of the source array/string are copied. + If the number is negative, limit number of items from the end of the source array/string + are copied. The limit will be trimmed if it exceeds array.length

      + + +
      + +
      + +

      Returns

      + + + + + +
      Arraystring

      A new sub-array or substring of length limit or less if input array + had less than limit elements.

      +
      + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('limitToExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.numbers = [1,2,3,4,5,6,7,8,9];
            $scope.letters = "abcdefghi";
            $scope.numLimit = 3;
            $scope.letterLimit = 3;
          }]);
      </script>
      <div ng-controller="ExampleController">
        Limit {{numbers}} to: <input type="number" step="1" ng-model="numLimit">
        <p>Output numbers: {{ numbers | limitTo:numLimit }}</p>
        Limit {{letters}} to: <input type="number" step="1" ng-model="letterLimit">
        <p>Output letters: {{ letters | limitTo:letterLimit }}</p>
      </div>
      +
      + +
      +
      var numLimitInput = element(by.model('numLimit'));
      var letterLimitInput = element(by.model('letterLimit'));
      var limitedNumbers = element(by.binding('numbers | limitTo:numLimit'));
      var limitedLetters = element(by.binding('letters | limitTo:letterLimit'));
      
      it('should limit the number array to first three items', function() {
        expect(numLimitInput.getAttribute('value')).toBe('3');
        expect(letterLimitInput.getAttribute('value')).toBe('3');
        expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3]');
        expect(limitedLetters.getText()).toEqual('Output letters: abc');
      });
      
      // There is a bug in safari and protractor that doesn't like the minus key
      // it('should update the output when -3 is entered', function() {
      //   numLimitInput.clear();
      //   numLimitInput.sendKeys('-3');
      //   letterLimitInput.clear();
      //   letterLimitInput.sendKeys('-3');
      //   expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]');
      //   expect(limitedLetters.getText()).toEqual('Output letters: ghi');
      // });
      
      it('should not exceed the maximum size of input array', function() {
        numLimitInput.clear();
        numLimitInput.sendKeys('100');
        letterLimitInput.clear();
        letterLimitInput.sendKeys('100');
        expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3,4,5,6,7,8,9]');
        expect(limitedLetters.getText()).toEqual('Output letters: abcdefghi');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/filter/lowercase.html b/1.2.30/docs/partials/api/ng/filter/lowercase.html new file mode 100644 index 0000000000..3bb7ac2197 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/filter/lowercase.html @@ -0,0 +1,51 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      lowercase

      +
        + +
      1. + - filter in module ng +
      2. +
      +
      + + + +
      +

      Converts string to lowercase.

      + +
      + + + + +
      + + + +

      Usage

      +

      In HTML Template Binding

      + +
      {{ lowercase_expression | lowercase}}
      + + +

      In JavaScript

      +
      $filter('lowercase')()
      + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/filter/number.html b/1.2.30/docs/partials/api/ng/filter/number.html new file mode 100644 index 0000000000..655c0e1ddc --- /dev/null +++ b/1.2.30/docs/partials/api/ng/filter/number.html @@ -0,0 +1,144 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      number

      +
        + +
      1. + - filter in module ng +
      2. +
      +
      + + + +
      +

      Formats a number as text.

      +

      If the input is not a number an empty string is returned.

      + +
      + + + + +
      + + + +

      Usage

      +

      In HTML Template Binding

      + +
      {{ number_expression | number : fractionSize}}
      + + +

      In JavaScript

      +
      $filter('number')(number, fractionSize)
      + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + number + + + + numberstring + +

      Number to format.

      + + +
      + fractionSize + +
      (optional)
      +
      + numberstring + +

      Number of decimal places to round the number to. +If this is not provided then the fraction size is computed from the current locale's number +formatting pattern. In the case of the default locale, it will be 3.

      + + +
      + +
      + +

      Returns

      + + + + + +
      string

      Number rounded to decimalPlaces and places a “,” after each third digit.

      +
      + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('numberFilterExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.val = 1234.56789;
          }]);
      </script>
      <div ng-controller="ExampleController">
        Enter number: <input ng-model='val'><br>
        Default formatting: <span id='number-default'>{{val | number}}</span><br>
        No fractions: <span>{{val | number:0}}</span><br>
        Negative number: <span>{{-val | number:4}}</span>
      </div>
      +
      + +
      +
       it('should format numbers', function() {
         expect(element(by.id('number-default')).getText()).toBe('1,234.568');
         expect(element(by.binding('val | number:0')).getText()).toBe('1,235');
         expect(element(by.binding('-val | number:4')).getText()).toBe('-1,234.5679');
       });
      
       it('should update', function() {
         element(by.model('val')).clear();
         element(by.model('val')).sendKeys('3374.333');
         expect(element(by.id('number-default')).getText()).toBe('3,374.333');
         expect(element(by.binding('val | number:0')).getText()).toBe('3,374');
         expect(element(by.binding('-val | number:4')).getText()).toBe('-3,374.3330');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/filter/orderBy.html b/1.2.30/docs/partials/api/ng/filter/orderBy.html new file mode 100644 index 0000000000..574d2dd350 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/filter/orderBy.html @@ -0,0 +1,207 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      orderBy

      +
        + +
      1. + - filter in module ng +
      2. +
      +
      + + + +
      +

      Orders a specified array by the expression predicate. It is ordered alphabetically +for strings and numerically for numbers. Note: if you notice numbers are not being sorted +correctly, make sure they are actually being saved as numbers and not strings.

      + +
      + + + + +
      + + + +

      Usage

      +

      In HTML Template Binding

      + +
      {{ orderBy_expression | orderBy : expression : reverse}}
      + + +

      In JavaScript

      +
      $filter('orderBy')(array, expression, reverse)
      + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + array + + + + Array + +

      The array to sort.

      + + +
      + expression + + + + function(*)stringArray.<(function(*)|string)>= + +

      A predicate to be + used by the comparator to determine the order of elements.

      +

      Can be one of:

      +
        +
      • function: Getter function. The result of this function will be sorted using the +<, =, > operator.
      • +
      • string: An Angular expression. The result of this expression is used to compare elements +(for example name to sort by a property called name or name.substr(0, 3) to sort by +3 first characters of a property called name). The result of a constant expression +is interpreted as a property name to be used in comparisons (for example "special name" +to sort object by the value of their special name property). An expression can be +optionally prefixed with + or - to control ascending or descending sort order +(for example, +name or -name). If no property is provided, (e.g. '+') then the array +element itself is used to compare where sorting.
      • +
      • Array: An array of function or string predicates. The first predicate in the array +is used for sorting, but when two items are equivalent, the next predicate is used.

        +

        If the predicate is missing or empty then it defaults to '+'.

        +
      • +
      + + +
      + reverse + +
      (optional)
      +
      + boolean + +

      Reverse the order of the array.

      + + +
      + +
      + +

      Returns

      + + + + + +
      Array

      Sorted copy of the source array.

      +
      + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('orderByExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.friends =
                [{name:'John', phone:'555-1212', age:10},
                 {name:'Mary', phone:'555-9876', age:19},
                 {name:'Mike', phone:'555-4321', age:21},
                 {name:'Adam', phone:'555-5678', age:35},
                 {name:'Julie', phone:'555-8765', age:29}];
            $scope.predicate = '-age';
          }]);
      </script>
      <div ng-controller="ExampleController">
        <pre>Sorting predicate = {{predicate}}; reverse = {{reverse}}</pre>
        <hr/>
        [ <a href="" ng-click="predicate=''">unsorted</a> ]
        <table class="friend">
          <tr>
            <th><a href="" ng-click="predicate = 'name'; reverse=false">Name</a>
                (<a href="" ng-click="predicate = '-name'; reverse=false">^</a>)</th>
            <th><a href="" ng-click="predicate = 'phone'; reverse=!reverse">Phone Number</a></th>
            <th><a href="" ng-click="predicate = 'age'; reverse=!reverse">Age</a></th>
          </tr>
          <tr ng-repeat="friend in friends | orderBy:predicate:reverse">
            <td>{{friend.name}}</td>
            <td>{{friend.phone}}</td>
            <td>{{friend.age}}</td>
          </tr>
        </table>
      </div>
      +
      + + + +
      +
      + + +

      +

      It's also possible to call the orderBy filter manually, by injecting $filter, retrieving the +filter routine with $filter('orderBy'), and calling the returned filter routine with the +desired parameters.

      +

      Example:

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="ExampleController">
        <table class="friend">
          <tr>
            <th><a href="" ng-click="reverse=false;order('name', false)">Name</a>
              (<a href="" ng-click="order('-name',false)">^</a>)</th>
            <th><a href="" ng-click="reverse=!reverse;order('phone', reverse)">Phone Number</a></th>
            <th><a href="" ng-click="reverse=!reverse;order('age',reverse)">Age</a></th>
          </tr>
          <tr ng-repeat="friend in friends">
            <td>{{friend.name}}</td>
            <td>{{friend.phone}}</td>
            <td>{{friend.age}}</td>
          </tr>
        </table>
      </div>
      +
      + +
      +
      angular.module('orderByExample', [])
        .controller('ExampleController', ['$scope', '$filter', function($scope, $filter) {
          var orderBy = $filter('orderBy');
          $scope.friends = [
            { name: 'John',    phone: '555-1212',    age: 10 },
            { name: 'Mary',    phone: '555-9876',    age: 19 },
            { name: 'Mike',    phone: '555-4321',    age: 21 },
            { name: 'Adam',    phone: '555-5678',    age: 35 },
            { name: 'Julie',   phone: '555-8765',    age: 29 }
          ];
          $scope.order = function(predicate, reverse) {
            $scope.friends = orderBy($scope.friends, predicate, reverse);
          };
          $scope.order('-age',false);
        }]);
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/filter/uppercase.html b/1.2.30/docs/partials/api/ng/filter/uppercase.html new file mode 100644 index 0000000000..241e26eefd --- /dev/null +++ b/1.2.30/docs/partials/api/ng/filter/uppercase.html @@ -0,0 +1,51 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      uppercase

      +
        + +
      1. + - filter in module ng +
      2. +
      +
      + + + +
      +

      Converts string to uppercase.

      + +
      + + + + +
      + + + +

      Usage

      +

      In HTML Template Binding

      + +
      {{ uppercase_expression | uppercase}}
      + + +

      In JavaScript

      +
      $filter('uppercase')()
      + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function.html b/1.2.30/docs/partials/api/ng/function.html new file mode 100644 index 0000000000..dbbfe801f4 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function.html @@ -0,0 +1,182 @@ + +

      Function components in ng

      + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      angular.lowercase

      Converts the specified string to lowercase.

      +
      angular.uppercase

      Converts the specified string to uppercase.

      +
      angular.forEach

      Invokes the iterator function once for each item in obj collection, which can be either an +object or an array. The iterator function is invoked with iterator(value, key), where value +is the value of an object property or an array element and key is the object property key or +array element index. Specifying a context for the function is optional.

      +
      angular.extend

      Extends the destination object dst by copying own enumerable properties from the src object(s) +to dst. You can specify multiple src objects.

      +
      angular.noop

      A function that performs no operations. This function can be useful when writing code in the +functional style.

      +
      function foo(callback) {
      +  var result = calculateResult();
      +  (callback || angular.noop)(result);
      +}
      +
      +
      angular.identity

      A function that returns its first argument. This function is useful when writing code in the +functional style.

      +
      angular.isUndefined

      Determines if a reference is undefined.

      +
      angular.isDefined

      Determines if a reference is defined.

      +
      angular.isObject

      Determines if a reference is an Object. Unlike typeof in JavaScript, nulls are not +considered to be objects. Note that JavaScript arrays are objects.

      +
      angular.isString

      Determines if a reference is a String.

      +
      angular.isNumber

      Determines if a reference is a Number.

      +
      angular.isDate

      Determines if a value is a date.

      +
      angular.isArray

      Determines if a reference is an Array.

      +
      angular.isFunction

      Determines if a reference is a Function.

      +
      angular.isElement

      Determines if a reference is a DOM element (or wrapped jQuery element).

      +
      angular.copy

      Creates a deep copy of source, which should be an object or an array.

      +
      angular.equals

      Determines if two objects or two values are equivalent. Supports value types, regular +expressions, arrays and objects.

      +
      angular.bind

      Returns a function which calls function fn bound to self (self becomes the this for +fn). You can supply optional args that are prebound to the function. This feature is also +known as partial application, as +distinguished from function currying.

      +
      angular.toJson

      Serializes input into a JSON-formatted string. Properties with leading $ characters will be +stripped since angular uses this notation internally.

      +
      angular.fromJson

      Deserializes a JSON string.

      +
      angular.bootstrap

      Use this function to manually start up angular application.

      +
      angular.injector

      Creates an injector object that can be used for retrieving services as well as for +dependency injection (see dependency injection).

      +
      angular.element

      Wraps a raw DOM element or HTML string as a jQuery element.

      +
      angular.module

      The angular.module is a global place for creating, registering and retrieving Angular +modules. +All modules (angular core or 3rd party) that should be available to an application must be +registered using this mechanism.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ng/function/angular.bind.html b/1.2.30/docs/partials/api/ng/function/angular.bind.html new file mode 100644 index 0000000000..fed755bfa9 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.bind.html @@ -0,0 +1,130 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.bind

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Returns a function which calls function fn bound to self (self becomes the this for +fn). You can supply optional args that are prebound to the function. This feature is also +known as partial application, as +distinguished from function currying.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.bind(self, fn, args);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + self + + + + Object + +

      Context which fn should be evaluated in.

      + + +
      + fn + + + + function() + +

      Function to be bound.

      + + +
      + args + + + + * + +

      Optional arguments to be prebound to the fn function call.

      + + +
      + +
      + +

      Returns

      + + + + + +
      function()

      Function that wraps the fn with all the specified bindings.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.bootstrap.html b/1.2.30/docs/partials/api/ng/function/angular.bootstrap.html new file mode 100644 index 0000000000..70ee08f4a1 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.bootstrap.html @@ -0,0 +1,162 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.bootstrap

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Use this function to manually start up angular application.

      +

      See: Bootstrap

      +

      Note that ngScenario-based end-to-end tests cannot use this function to bootstrap manually. +They must use ngApp.

      +

      Angular will detect if it has been loaded into the browser more than once and only allow the +first loaded script to be bootstrapped and will report a warning to the browser console for +each of the subsequent scripts. This prevents strange results in applications, where otherwise +multiple instances of Angular try to work on the DOM.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script src="../../../angular.js"></script>
      <div ng-controller="BrokenTable">
        <table>
        <tr>
          <th ng-repeat="heading in headings">{{heading}}</th>
        </tr>
        <tr ng-repeat="filling in fillings">
          <td ng-repeat="fill in filling">{{fill}}</td>
        </tr>
      </table>
      </div>
      +
      + +
      +
      var app = angular.module('multi-bootstrap', [])
      
      .controller('BrokenTable', function($scope) {
          $scope.headings = ['One', 'Two', 'Three'];
          $scope.fillings = [[1, 2, 3], ['A', 'B', 'C'], [7, 8, 9]];
      });
      +
      + +
      +
      it('should only insert one table cell for each item in $scope.fillings', function() {
      expect(element.all(by.css('td')).count())
          .toBe(9);
      });
      +
      + + + +
      +
      + + +

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.bootstrap(element, [modules]);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + element + + + + DOMElement + +

      DOM element which is the root of angular application.

      + + +
      + modules + +
      (optional)
      +
      + Array<String|Function|Array>= + +

      an array of modules to load into the application. + Each item in the array should be the name of a predefined module or a (DI annotated) + function that will be invoked by the injector as a run block. + See: modules

      + + +
      + +
      + +

      Returns

      + + + + + +
      auto.$injector

      Returns the newly created injector for this app.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.copy.html b/1.2.30/docs/partials/api/ng/function/angular.copy.html new file mode 100644 index 0000000000..c6d605a62e --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.copy.html @@ -0,0 +1,147 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.copy

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Creates a deep copy of source, which should be an object or an array.

      +
        +
      • If no destination is supplied, a copy of the object or array is created.
      • +
      • If a destination is provided, all of its elements (for array) or properties (for objects) +are deleted and then all elements/properties from the source are copied to it.
      • +
      • If source is not an object or array (inc. null and undefined), source is returned.
      • +
      • If source is identical to 'destination' an exception will be thrown.
      • +
      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.copy(source, [destination]);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + source + + + + * + +

      The source that will be used to make a copy. + Can be any type, including primitives, null, and undefined.

      + + +
      + destination + +
      (optional)
      +
      + ObjectArray + +

      Destination into which the source is copied. If + provided, must be of the same type as source.

      + + +
      + +
      + +

      Returns

      + + + + + +
      *

      The copy or updated destination, if destination was specified.

      +
      + + + + + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="ExampleController">
      <form novalidate class="simple-form">
      Name: <input type="text" ng-model="user.name" /><br />
      E-mail: <input type="email" ng-model="user.email" /><br />
      Gender: <input type="radio" ng-model="user.gender" value="male" />male
      <input type="radio" ng-model="user.gender" value="female" />female<br />
      <button ng-click="reset()">RESET</button>
      <button ng-click="update(user)">SAVE</button>
      </form>
      <pre>form = {{user | json}}</pre>
      <pre>master = {{master | json}}</pre>
      </div>
      
      <script>
       angular.module('copyExample', [])
         .controller('ExampleController', ['$scope', function($scope) {
           $scope.master= {};
      
           $scope.update = function(user) {
             // Example with 1 argument
             $scope.master= angular.copy(user);
           };
      
           $scope.reset = function() {
             // Example with 2 arguments
             angular.copy($scope.master, $scope.user);
           };
      
           $scope.reset();
         }]);
      </script>
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.element.html b/1.2.30/docs/partials/api/ng/function/angular.element.html new file mode 100644 index 0000000000..5834bb4155 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.element.html @@ -0,0 +1,167 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.element

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Wraps a raw DOM element or HTML string as a jQuery element.

      +

      If jQuery is available, angular.element is an alias for the +jQuery function. If jQuery is not available, angular.element +delegates to Angular's built-in subset of jQuery, called "jQuery lite" or "jqLite."

      +
      jqLite is a tiny, API-compatible subset of jQuery that allows +Angular to manipulate the DOM in a cross-browser compatible way. jqLite implements only the most +commonly needed functionality with the goal of having a very small footprint.
      + +

      To use jQuery, simply load it before DOMContentLoaded event fired.

      +
      Note: all element references in Angular are always wrapped with jQuery or +jqLite; they are never raw DOM references.
      + +

      Angular's jqLite

      +

      jqLite provides only the following jQuery methods:

      + +

      jQuery/jqLite Extras

      +

      Angular also provides the following additional methods and events to both jQuery and jqLite:

      +

      Events

      +
        +
      • $destroy - AngularJS intercepts all jqLite/jQuery's DOM destruction apis and fires this event + on all DOM nodes being removed. This can be used to clean up any 3rd party bindings to the DOM + element before it is removed.
      • +
      +

      Methods

      +
        +
      • controller(name) - retrieves the controller of the current element or its parent. By default +retrieves controller associated with the ngController directive. If name is provided as +camelCase directive name, then the controller for this directive will be retrieved (e.g. +'ngModel').
      • +
      • injector() - retrieves the injector of the current element or its parent.
      • +
      • scope() - retrieves the scope of the current +element or its parent.
      • +
      • isolateScope() - retrieves an isolate scope if one is attached directly to the +current element. This getter should be used only on elements that contain a directive which starts a new isolate +scope. Calling scope() on this element always returns the original non-isolate scope.
      • +
      • inheritedData() - same as data(), but walks up the DOM until a value is found or the top +parent element is reached.
      • +
      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.element(element);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + element + + + + stringDOMElement + +

      HTML string or DOMElement to be wrapped into jQuery.

      + + +
      + +
      + +

      Returns

      + + + + + +
      Object

      jQuery object.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.equals.html b/1.2.30/docs/partials/api/ng/function/angular.equals.html new file mode 100644 index 0000000000..eb296fd773 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.equals.html @@ -0,0 +1,125 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.equals

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Determines if two objects or two values are equivalent. Supports value types, regular +expressions, arrays and objects.

      +

      Two objects or values are considered equivalent if at least one of the following is true:

      +
        +
      • Both objects or values pass === comparison.
      • +
      • Both objects or values are of the same type and all of their properties are equal by +comparing them with angular.equals.
      • +
      • Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)
      • +
      • Both values represent the same regular expression (In JavaScript, +/abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual +representation matches).
      • +
      +

      During a property comparison, properties of function type and properties with names +that begin with $ are ignored.

      +

      Scope and DOMWindow objects are being compared only by identify (===).

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.equals(o1, o2);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + o1 + + + + * + +

      Object or value to compare.

      + + +
      + o2 + + + + * + +

      Object or value to compare.

      + + +
      + +
      + +

      Returns

      + + + + + +
      boolean

      True if arguments are equal.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.extend.html b/1.2.30/docs/partials/api/ng/function/angular.extend.html new file mode 100644 index 0000000000..9db9da8c05 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.extend.html @@ -0,0 +1,112 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.extend

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Extends the destination object dst by copying own enumerable properties from the src object(s) +to dst. You can specify multiple src objects.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.extend(dst, src);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + dst + + + + Object + +

      Destination object.

      + + +
      + src + + + + Object + +

      Source object(s).

      + + +
      + +
      + +

      Returns

      + + + + + +
      Object

      Reference to dst.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.forEach.html b/1.2.30/docs/partials/api/ng/function/angular.forEach.html new file mode 100644 index 0000000000..ecfef44e52 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.forEach.html @@ -0,0 +1,139 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.forEach

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Invokes the iterator function once for each item in obj collection, which can be either an +object or an array. The iterator function is invoked with iterator(value, key), where value +is the value of an object property or an array element and key is the object property key or +array element index. Specifying a context for the function is optional.

      +

      It is worth noting that .forEach does not iterate over inherited properties because it filters +using the hasOwnProperty method.

      +
      var values = {name: 'misko', gender: 'male'};
      +var log = [];
      +angular.forEach(values, function(value, key) {
      +  this.push(key + ': ' + value);
      +}, log);
      +expect(log).toEqual(['name: misko', 'gender: male']);
      +
      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.forEach(obj, iterator, [context]);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + obj + + + + ObjectArray + +

      Object to iterate over.

      + + +
      + iterator + + + + Function + +

      Iterator function.

      + + +
      + context + +
      (optional)
      +
      + Object + +

      Object to become context (this) for the iterator function.

      + + +
      + +
      + +

      Returns

      + + + + + +
      ObjectArray

      Reference to obj.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.fromJson.html b/1.2.30/docs/partials/api/ng/function/angular.fromJson.html new file mode 100644 index 0000000000..693c6e153a --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.fromJson.html @@ -0,0 +1,95 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.fromJson

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Deserializes a JSON string.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.fromJson(json);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + json + + + + string + +

      JSON string to deserialize.

      + + +
      + +
      + +

      Returns

      + + + + + +
      ObjectArraystringnumber

      Deserialized thingy.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.identity.html b/1.2.30/docs/partials/api/ng/function/angular.identity.html new file mode 100644 index 0000000000..660a7f1e71 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.identity.html @@ -0,0 +1,100 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.identity

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      A function that returns its first argument. This function is useful when writing code in the +functional style.

      +
      function transformer(transformationFn, value) {
      +  return (transformationFn || angular.identity)(value);
      +};
      +
      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.identity(value);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + value + + + + * + +

      to be returned.

      + + +
      + +
      + +

      Returns

      + + + + + +
      *

      the value passed in.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.injector.html b/1.2.30/docs/partials/api/ng/function/angular.injector.html new file mode 100644 index 0000000000..de81a91ff1 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.injector.html @@ -0,0 +1,126 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.injector

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Creates an injector object that can be used for retrieving services as well as for +dependency injection (see dependency injection).

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.injector(modules);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + modules + + + + Array.<string|Function> + +

      A list of module functions or their aliases. See + angular.module. The ng module must be explicitly added.

      + + +
      + +
      + +

      Returns

      + + + + + +
      injector

      Injector object. See $injector.

      +
      + + + + + + + + +

      Example

      Typical usage

      +
      // create an injector
      +var $injector = angular.injector(['ng']);
      +
      +// use the injector to kick off your application
      +// use the type inference to auto inject arguments, or use implicit injection
      +$injector.invoke(function($rootScope, $compile, $document){
      +  $compile($document)($rootScope);
      +  $rootScope.$digest();
      +});
      +
      +

      Sometimes you want to get access to the injector of a currently running Angular app +from outside Angular. Perhaps, you want to inject and compile some markup after the +application has been bootstrapped. You can do this using the extra injector() added +to JQuery/jqLite elements. See angular.element.

      +

      This is fairly rare but could be the case if a third party library is injecting the +markup.

      +

      In the following example a new block of HTML containing a ng-controller +directive is added to the end of the document body by JQuery. We then compile and link +it into the current AngularJS scope.

      +
      var $div = $('<div ng-controller="MyCtrl">{{content.label}}</div>');
      +$(document.body).append($div);
      +
      +angular.element(document).injector().invoke(function($compile) {
      +  var scope = angular.element($div).scope();
      +  $compile($div)(scope);
      +});
      +
      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.isArray.html b/1.2.30/docs/partials/api/ng/function/angular.isArray.html new file mode 100644 index 0000000000..889e55ecf0 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.isArray.html @@ -0,0 +1,95 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.isArray

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Determines if a reference is an Array.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.isArray(value);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + value + + + + * + +

      Reference to check.

      + + +
      + +
      + +

      Returns

      + + + + + +
      boolean

      True if value is an Array.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.isDate.html b/1.2.30/docs/partials/api/ng/function/angular.isDate.html new file mode 100644 index 0000000000..8532ea9f52 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.isDate.html @@ -0,0 +1,95 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.isDate

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Determines if a value is a date.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.isDate(value);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + value + + + + * + +

      Reference to check.

      + + +
      + +
      + +

      Returns

      + + + + + +
      boolean

      True if value is a Date.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.isDefined.html b/1.2.30/docs/partials/api/ng/function/angular.isDefined.html new file mode 100644 index 0000000000..a241299441 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.isDefined.html @@ -0,0 +1,95 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.isDefined

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Determines if a reference is defined.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.isDefined(value);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + value + + + + * + +

      Reference to check.

      + + +
      + +
      + +

      Returns

      + + + + + +
      boolean

      True if value is defined.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.isElement.html b/1.2.30/docs/partials/api/ng/function/angular.isElement.html new file mode 100644 index 0000000000..c5a7df9b13 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.isElement.html @@ -0,0 +1,95 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.isElement

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Determines if a reference is a DOM element (or wrapped jQuery element).

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.isElement(value);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + value + + + + * + +

      Reference to check.

      + + +
      + +
      + +

      Returns

      + + + + + +
      boolean

      True if value is a DOM element (or wrapped jQuery element).

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.isFunction.html b/1.2.30/docs/partials/api/ng/function/angular.isFunction.html new file mode 100644 index 0000000000..dd117b677b --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.isFunction.html @@ -0,0 +1,95 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.isFunction

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Determines if a reference is a Function.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.isFunction(value);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + value + + + + * + +

      Reference to check.

      + + +
      + +
      + +

      Returns

      + + + + + +
      boolean

      True if value is a Function.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.isNumber.html b/1.2.30/docs/partials/api/ng/function/angular.isNumber.html new file mode 100644 index 0000000000..b13bfb79dd --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.isNumber.html @@ -0,0 +1,95 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.isNumber

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Determines if a reference is a Number.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.isNumber(value);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + value + + + + * + +

      Reference to check.

      + + +
      + +
      + +

      Returns

      + + + + + +
      boolean

      True if value is a Number.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.isObject.html b/1.2.30/docs/partials/api/ng/function/angular.isObject.html new file mode 100644 index 0000000000..7218e58857 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.isObject.html @@ -0,0 +1,96 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.isObject

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Determines if a reference is an Object. Unlike typeof in JavaScript, nulls are not +considered to be objects. Note that JavaScript arrays are objects.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.isObject(value);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + value + + + + * + +

      Reference to check.

      + + +
      + +
      + +

      Returns

      + + + + + +
      boolean

      True if value is an Object but not null.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.isString.html b/1.2.30/docs/partials/api/ng/function/angular.isString.html new file mode 100644 index 0000000000..af16624664 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.isString.html @@ -0,0 +1,95 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.isString

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Determines if a reference is a String.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.isString(value);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + value + + + + * + +

      Reference to check.

      + + +
      + +
      + +

      Returns

      + + + + + +
      boolean

      True if value is a String.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.isUndefined.html b/1.2.30/docs/partials/api/ng/function/angular.isUndefined.html new file mode 100644 index 0000000000..0f0ec3b7a1 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.isUndefined.html @@ -0,0 +1,95 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.isUndefined

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Determines if a reference is undefined.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.isUndefined(value);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + value + + + + * + +

      Reference to check.

      + + +
      + +
      + +

      Returns

      + + + + + +
      boolean

      True if value is undefined.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.lowercase.html b/1.2.30/docs/partials/api/ng/function/angular.lowercase.html new file mode 100644 index 0000000000..b2ff8d3a02 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.lowercase.html @@ -0,0 +1,95 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.lowercase

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Converts the specified string to lowercase.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.lowercase(string);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + string + + + + string + +

      String to be converted to lowercase.

      + + +
      + +
      + +

      Returns

      + + + + + +
      string

      Lowercased string.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.module.html b/1.2.30/docs/partials/api/ng/function/angular.module.html new file mode 100644 index 0000000000..1d01f17071 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.module.html @@ -0,0 +1,155 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.module

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      The angular.module is a global place for creating, registering and retrieving Angular +modules. +All modules (angular core or 3rd party) that should be available to an application must be +registered using this mechanism.

      +

      When passed two or more arguments, a new module is created. If passed only one argument, an +existing module (the name passed as the first argument to module) is retrieved.

      +

      Module

      +

      A module is a collection of services, directives, controllers, filters, and configuration information. +angular.module is used to configure the $injector.

      +
      // Create a new module
      +var myModule = angular.module('myModule', []);
      +
      +// register a new service
      +myModule.value('appName', 'MyCoolApp');
      +
      +// configure existing services inside initialization blocks.
      +myModule.config(['$locationProvider', function($locationProvider) {
      +  // Configure existing providers
      +  $locationProvider.hashPrefix('!');
      +}]);
      +
      +

      Then you can create an injector and load your modules like this:

      +
      var injector = angular.injector(['ng', 'myModule'])
      +
      +

      However it's more likely that you'll just use +ngApp or +angular.bootstrap to simplify this process for you.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.module(name, [requires], [configFn]);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + name + + + + string + +

      The name of the module to create or retrieve.

      + + +
      + requires + +
      (optional)
      +
      + !Array.<string>= + +

      If specified then new module is being created. If + unspecified then the module is being retrieved for further configuration.

      + + +
      + configFn + +
      (optional)
      +
      + Function= + +

      Optional configuration function for the module. Same as + Module#config().

      + + +
      + +
      + +

      Returns

      + + + + + +
      module

      new module with the angular.Module api.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.noop.html b/1.2.30/docs/partials/api/ng/function/angular.noop.html new file mode 100644 index 0000000000..917f5d88b8 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.noop.html @@ -0,0 +1,61 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.noop

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      A function that performs no operations. This function can be useful when writing code in the +functional style.

      +
      function foo(callback) {
      +  var result = calculateResult();
      +  (callback || angular.noop)(result);
      +}
      +
      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.noop();

      + + + + + + + + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.toJson.html b/1.2.30/docs/partials/api/ng/function/angular.toJson.html new file mode 100644 index 0000000000..643f323e3f --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.toJson.html @@ -0,0 +1,112 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.toJson

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Serializes input into a JSON-formatted string. Properties with leading $ characters will be +stripped since angular uses this notation internally.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.toJson(obj, [pretty]);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + obj + + + + ObjectArrayDatestringnumber + +

      Input to be serialized into JSON.

      + + +
      + pretty + +
      (optional)
      +
      + boolean + +

      If set to true, the JSON output will contain newlines and whitespace.

      + + +
      + +
      + +

      Returns

      + + + + + +
      stringundefined

      JSON-ified string representing obj.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/function/angular.uppercase.html b/1.2.30/docs/partials/api/ng/function/angular.uppercase.html new file mode 100644 index 0000000000..d4ed89b2c8 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/function/angular.uppercase.html @@ -0,0 +1,95 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.uppercase

      +
        + +
      1. + - function in module ng +
      2. +
      +
      + + + +
      +

      Converts the specified string to uppercase.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.uppercase(string);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + string + + + + string + +

      String to be converted to uppercase.

      + + +
      + +
      + +

      Returns

      + + + + + +
      string

      Uppercased string.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/input.html b/1.2.30/docs/partials/api/ng/input.html new file mode 100644 index 0000000000..1161e504d3 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/input.html @@ -0,0 +1,56 @@ + +

      Input components in ng

      + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      input[text]

      Standard HTML text input with angular data binding, inherited by most of the input elements.

      +
      input[number]

      Text input with number validation and transformation. Sets the number validation +error if not a valid number.

      +
      input[url]

      Text input with URL validation. Sets the url validation error key if the content is not a +valid URL.

      +
      input[email]

      Text input with email validation. Sets the email validation error key if not a valid email +address.

      +
      input[radio]

      HTML radio button.

      +
      input[checkbox]

      HTML checkbox.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ng/input/input[checkbox].html b/1.2.30/docs/partials/api/ng/input/input[checkbox].html new file mode 100644 index 0000000000..e01123e17b --- /dev/null +++ b/1.2.30/docs/partials/api/ng/input/input[checkbox].html @@ -0,0 +1,183 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      input[checkbox]

      +
        + +
      1. + - input in module ng +
      2. +
      +
      + + + +
      +

      HTML checkbox.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      <input type="checkbox"
             ng-model=""
             [name=""]
             [ng-true-value=""]
             [ng-false-value=""]
             [ng-change=""]>
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngModel + + + + string + +

      Assignable angular expression to data-bind to.

      + + +
      + name + +
      (optional)
      +
      + string + +

      Property name of the form under which the control is published.

      + + +
      + ngTrueValue + +
      (optional)
      +
      + string + +

      The value to which the expression should be set when selected.

      + + +
      + ngFalseValue + +
      (optional)
      +
      + string + +

      The value to which the expression should be set when not selected.

      + + +
      + ngChange + +
      (optional)
      +
      + string + +

      Angular expression to be executed when input changes due to user + interaction with the input element.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('checkboxExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.value1 = true;
            $scope.value2 = 'YES'
          }]);
      </script>
      <form name="myForm" ng-controller="ExampleController">
        Value1: <input type="checkbox" ng-model="value1"> <br/>
        Value2: <input type="checkbox" ng-model="value2"
                       ng-true-value="YES" ng-false-value="NO"> <br/>
        <tt>value1 = {{value1}}</tt><br/>
        <tt>value2 = {{value2}}</tt><br/>
       </form>
      +
      + +
      +
      it('should change state', function() {
        var value1 = element(by.binding('value1'));
        var value2 = element(by.binding('value2'));
      
        expect(value1.getText()).toContain('true');
        expect(value2.getText()).toContain('YES');
      
        element(by.model('value1')).click();
        element(by.model('value2')).click();
      
        expect(value1.getText()).toContain('false');
        expect(value2.getText()).toContain('NO');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/input/input[email].html b/1.2.30/docs/partials/api/ng/input/input[email].html new file mode 100644 index 0000000000..bdae6cb9be --- /dev/null +++ b/1.2.30/docs/partials/api/ng/input/input[email].html @@ -0,0 +1,238 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      input[email]

      +
        + +
      1. + - input in module ng +
      2. +
      +
      + + + +
      +

      Text input with email validation. Sets the email validation error key if not a valid email +address.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      <input type="email"
             ng-model=""
             [name=""]
             [required=""]
             [ng-required=""]
             [ng-minlength=""]
             [ng-maxlength=""]
             [ng-pattern=""]
             [ng-change=""]>
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngModel + + + + string + +

      Assignable angular expression to data-bind to.

      + + +
      + name + +
      (optional)
      +
      + string + +

      Property name of the form under which the control is published.

      + + +
      + required + +
      (optional)
      +
      + string + +

      Sets required validation error key if the value is not entered.

      + + +
      + ngRequired + +
      (optional)
      +
      + string + +

      Adds required attribute and required validation constraint to + the element when the ngRequired expression evaluates to true. Use ngRequired instead of + required when you want to data-bind to the required attribute.

      + + +
      + ngMinlength + +
      (optional)
      +
      + number + +

      Sets minlength validation error key if the value is shorter than + minlength.

      + + +
      + ngMaxlength + +
      (optional)
      +
      + number + +

      Sets maxlength validation error key if the value is longer than + maxlength.

      + + +
      + ngPattern + +
      (optional)
      +
      + string + +

      Sets pattern validation error key if the value does not match the + RegExp pattern expression. Expected value is /regexp/ for inline patterns or regexp for + patterns defined as scope expressions.

      + + +
      + ngChange + +
      (optional)
      +
      + string + +

      Angular expression to be executed when input changes due to user + interaction with the input element.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
      angular.module('emailExample', [])
        .controller('ExampleController', ['$scope', function($scope) {
          $scope.text = 'me@example.com';
        }]);
      </script>
      <form name="myForm" ng-controller="ExampleController">
        Email: <input type="email" name="input" ng-model="text" required>
        <span class="error" ng-show="myForm.input.$error.required">
          Required!</span>
        <span class="error" ng-show="myForm.input.$error.email">
          Not valid email!</span>
        <tt>text = {{text}}</tt><br/>
        <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
        <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
        <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
        <tt>myForm.$error.email = {{!!myForm.$error.email}}</tt><br/>
      </form>
      +
      + +
      +
      var text = element(by.binding('text'));
      var valid = element(by.binding('myForm.input.$valid'));
      var input = element(by.model('text'));
      
      it('should initialize to model', function() {
        expect(text.getText()).toContain('me@example.com');
        expect(valid.getText()).toContain('true');
      });
      
      it('should be invalid if empty', function() {
        input.clear();
        input.sendKeys('');
        expect(text.getText()).toEqual('text =');
        expect(valid.getText()).toContain('false');
      });
      
      it('should be invalid if not email', function() {
        input.clear();
        input.sendKeys('xxx');
      
        expect(valid.getText()).toContain('false');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/input/input[number].html b/1.2.30/docs/partials/api/ng/input/input[number].html new file mode 100644 index 0000000000..ef46656cc1 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/input/input[number].html @@ -0,0 +1,270 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      input[number]

      +
        + +
      1. + - input in module ng +
      2. +
      +
      + + + +
      +

      Text input with number validation and transformation. Sets the number validation +error if not a valid number.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      <input type="number"
             ng-model=""
             [name=""]
             [min=""]
             [max=""]
             [required=""]
             [ng-required=""]
             [ng-minlength=""]
             [ng-maxlength=""]
             [ng-pattern=""]
             [ng-change=""]>
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngModel + + + + string + +

      Assignable angular expression to data-bind to.

      + + +
      + name + +
      (optional)
      +
      + string + +

      Property name of the form under which the control is published.

      + + +
      + min + +
      (optional)
      +
      + string + +

      Sets the min validation error key if the value entered is less than min.

      + + +
      + max + +
      (optional)
      +
      + string + +

      Sets the max validation error key if the value entered is greater than max.

      + + +
      + required + +
      (optional)
      +
      + string + +

      Sets required validation error key if the value is not entered.

      + + +
      + ngRequired + +
      (optional)
      +
      + string + +

      Adds required attribute and required validation constraint to + the element when the ngRequired expression evaluates to true. Use ngRequired instead of + required when you want to data-bind to the required attribute.

      + + +
      + ngMinlength + +
      (optional)
      +
      + number + +

      Sets minlength validation error key if the value is shorter than + minlength.

      + + +
      + ngMaxlength + +
      (optional)
      +
      + number + +

      Sets maxlength validation error key if the value is longer than + maxlength.

      + + +
      + ngPattern + +
      (optional)
      +
      + string + +

      Sets pattern validation error key if the value does not match the + RegExp pattern expression. Expected value is /regexp/ for inline patterns or regexp for + patterns defined as scope expressions.

      + + +
      + ngChange + +
      (optional)
      +
      + string + +

      Angular expression to be executed when input changes due to user + interaction with the input element.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('numberExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.value = 12;
          }]);
      </script>
      <form name="myForm" ng-controller="ExampleController">
        Number: <input type="number" name="input" ng-model="value"
                       min="0" max="99" required>
        <span class="error" ng-show="myForm.input.$error.required">
          Required!</span>
        <span class="error" ng-show="myForm.input.$error.number">
          Not valid number!</span>
        <tt>value = {{value}}</tt><br/>
        <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
        <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
        <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
       </form>
      +
      + +
      +
      var value = element(by.binding('value'));
      var valid = element(by.binding('myForm.input.$valid'));
      var input = element(by.model('value'));
      
      it('should initialize to model', function() {
        expect(value.getText()).toContain('12');
        expect(valid.getText()).toContain('true');
      });
      
      it('should be invalid if empty', function() {
        input.clear();
        input.sendKeys('');
        expect(value.getText()).toEqual('value =');
        expect(valid.getText()).toContain('false');
      });
      
      it('should be invalid if over max', function() {
        input.clear();
        input.sendKeys('123');
        expect(value.getText()).toEqual('value =');
        expect(valid.getText()).toContain('false');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/input/input[radio].html b/1.2.30/docs/partials/api/ng/input/input[radio].html new file mode 100644 index 0000000000..5142678e46 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/input/input[radio].html @@ -0,0 +1,184 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      input[radio]

      +
        + +
      1. + - input in module ng +
      2. +
      +
      + + + +
      +

      HTML radio button.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      <input type="radio"
             ng-model=""
             value=""
             [name=""]
             [ng-change=""]
             ng-value="">
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngModel + + + + string + +

      Assignable angular expression to data-bind to.

      + + +
      + value + + + + string + +

      The value to which the expression should be set when selected.

      + + +
      + name + +
      (optional)
      +
      + string + +

      Property name of the form under which the control is published.

      + + +
      + ngChange + +
      (optional)
      +
      + string + +

      Angular expression to be executed when input changes due to user + interaction with the input element.

      + + +
      + ngValue + + + + string + +

      Angular expression which sets the value to which the expression should + be set when selected.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('radioExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.color = 'blue';
            $scope.specialValue = {
              "id": "12345",
              "value": "green"
            };
          }]);
      </script>
      <form name="myForm" ng-controller="ExampleController">
        <input type="radio" ng-model="color" value="red">  Red <br/>
        <input type="radio" ng-model="color" ng-value="specialValue"> Green <br/>
        <input type="radio" ng-model="color" value="blue"> Blue <br/>
        <tt>color = {{color | json}}</tt><br/>
       </form>
       Note that `ng-value="specialValue"` sets radio item's value to be the value of `$scope.specialValue`.
      +
      + +
      +
      it('should change state', function() {
        var color = element(by.binding('color'));
      
        expect(color.getText()).toContain('blue');
      
        element.all(by.model('color')).get(0).click();
      
        expect(color.getText()).toContain('red');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/input/input[text].html b/1.2.30/docs/partials/api/ng/input/input[text].html new file mode 100644 index 0000000000..990bf1d519 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/input/input[text].html @@ -0,0 +1,256 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      input[text]

      +
        + +
      1. + - input in module ng +
      2. +
      +
      + + + +
      +

      Standard HTML text input with angular data binding, inherited by most of the input elements.

      +

      NOTE Not every feature offered is available for all input types.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      <input type="text"
             ng-model=""
             [name=""]
             [required=""]
             [ng-required=""]
             [ng-minlength=""]
             [ng-maxlength=""]
             [ng-pattern=""]
             [ng-change=""]
             [ng-trim=""]>
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngModel + + + + string + +

      Assignable angular expression to data-bind to.

      + + +
      + name + +
      (optional)
      +
      + string + +

      Property name of the form under which the control is published.

      + + +
      + required + +
      (optional)
      +
      + string + +

      Adds required validation error key if the value is not entered.

      + + +
      + ngRequired + +
      (optional)
      +
      + string + +

      Adds required attribute and required validation constraint to + the element when the ngRequired expression evaluates to true. Use ngRequired instead of + required when you want to data-bind to the required attribute.

      + + +
      + ngMinlength + +
      (optional)
      +
      + number + +

      Sets minlength validation error key if the value is shorter than + minlength.

      + + +
      + ngMaxlength + +
      (optional)
      +
      + number + +

      Sets maxlength validation error key if the value is longer than + maxlength.

      + + +
      + ngPattern + +
      (optional)
      +
      + string + +

      Sets pattern validation error key if the value does not match the + RegExp pattern expression. Expected value is /regexp/ for inline patterns or regexp for + patterns defined as scope expressions.

      + + +
      + ngChange + +
      (optional)
      +
      + string + +

      Angular expression to be executed when input changes due to user + interaction with the input element.

      + + +
      + ngTrim + +
      (optional)
      +
      + boolean + +

      If set to false Angular will not automatically trim the input. + This parameter is ignored for input[type=password] controls, which will never trim the + input.

      + +

      (default: true)

      +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('textInputExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.text = 'guest';
            $scope.word = /^\s*\w*\s*$/;
          }]);
      </script>
      <form name="myForm" ng-controller="ExampleController">
        Single word: <input type="text" name="input" ng-model="text"
                            ng-pattern="word" required ng-trim="false">
        <span class="error" ng-show="myForm.input.$error.required">
          Required!</span>
        <span class="error" ng-show="myForm.input.$error.pattern">
          Single word only!</span>
      
        <tt>text = {{text}}</tt><br/>
        <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
        <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
        <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
       </form>
      +
      + +
      +
      var text = element(by.binding('text'));
      var valid = element(by.binding('myForm.input.$valid'));
      var input = element(by.model('text'));
      
      it('should initialize to model', function() {
        expect(text.getText()).toContain('guest');
        expect(valid.getText()).toContain('true');
      });
      
      it('should be invalid if empty', function() {
        input.clear();
        input.sendKeys('');
      
        expect(text.getText()).toEqual('text =');
        expect(valid.getText()).toContain('false');
      });
      
      it('should be invalid if multi word', function() {
        input.clear();
        input.sendKeys('hello world');
      
        expect(valid.getText()).toContain('false');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/input/input[url].html b/1.2.30/docs/partials/api/ng/input/input[url].html new file mode 100644 index 0000000000..ac7fb80f35 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/input/input[url].html @@ -0,0 +1,238 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      input[url]

      +
        + +
      1. + - input in module ng +
      2. +
      +
      + + + +
      +

      Text input with URL validation. Sets the url validation error key if the content is not a +valid URL.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      <input type="url"
             ng-model=""
             [name=""]
             [required=""]
             [ng-required=""]
             [ng-minlength=""]
             [ng-maxlength=""]
             [ng-pattern=""]
             [ng-change=""]>
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngModel + + + + string + +

      Assignable angular expression to data-bind to.

      + + +
      + name + +
      (optional)
      +
      + string + +

      Property name of the form under which the control is published.

      + + +
      + required + +
      (optional)
      +
      + string + +

      Sets required validation error key if the value is not entered.

      + + +
      + ngRequired + +
      (optional)
      +
      + string + +

      Adds required attribute and required validation constraint to + the element when the ngRequired expression evaluates to true. Use ngRequired instead of + required when you want to data-bind to the required attribute.

      + + +
      + ngMinlength + +
      (optional)
      +
      + number + +

      Sets minlength validation error key if the value is shorter than + minlength.

      + + +
      + ngMaxlength + +
      (optional)
      +
      + number + +

      Sets maxlength validation error key if the value is longer than + maxlength.

      + + +
      + ngPattern + +
      (optional)
      +
      + string + +

      Sets pattern validation error key if the value does not match the + RegExp pattern expression. Expected value is /regexp/ for inline patterns or regexp for + patterns defined as scope expressions.

      + + +
      + ngChange + +
      (optional)
      +
      + string + +

      Angular expression to be executed when input changes due to user + interaction with the input element.

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('urlExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.text = 'http://google.com';
          }]);
      </script>
      <form name="myForm" ng-controller="ExampleController">
        URL: <input type="url" name="input" ng-model="text" required>
        <span class="error" ng-show="myForm.input.$error.required">
          Required!</span>
        <span class="error" ng-show="myForm.input.$error.url">
          Not valid url!</span>
        <tt>text = {{text}}</tt><br/>
        <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
        <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
        <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
        <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
        <tt>myForm.$error.url = {{!!myForm.$error.url}}</tt><br/>
       </form>
      +
      + +
      +
      var text = element(by.binding('text'));
      var valid = element(by.binding('myForm.input.$valid'));
      var input = element(by.model('text'));
      
      it('should initialize to model', function() {
        expect(text.getText()).toContain('http://google.com');
        expect(valid.getText()).toContain('true');
      });
      
      it('should be invalid if empty', function() {
        input.clear();
        input.sendKeys('');
      
        expect(text.getText()).toEqual('text =');
        expect(valid.getText()).toContain('false');
      });
      
      it('should be invalid if not url', function() {
        input.clear();
        input.sendKeys('box');
      
        expect(valid.getText()).toContain('false');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/object.html b/1.2.30/docs/partials/api/ng/object.html new file mode 100644 index 0000000000..be3ec59ba4 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/object.html @@ -0,0 +1,24 @@ + +

      Object components in ng

      + + + +
      +
      + + + + + + + + + + + +
      NameDescription
      angular.version

      An object that contains information about the current AngularJS version. This object has the +following properties:

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ng/object/angular.version.html b/1.2.30/docs/partials/api/ng/object/angular.version.html new file mode 100644 index 0000000000..47e62ded2a --- /dev/null +++ b/1.2.30/docs/partials/api/ng/object/angular.version.html @@ -0,0 +1,54 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.version

      +
        + +
      1. + - object in module ng +
      2. +
      +
      + + + +
      +

      An object that contains information about the current AngularJS version. This object has the +following properties:

      +
        +
      • full{string} – Full version string, such as "0.9.18".
      • +
      • major{number} – Major version number, such as "0".
      • +
      • minor{number} – Minor version number, such as "9".
      • +
      • dot{number} – Dot version number, such as "18".
      • +
      • codeName{string} – Code name of the release, such as "jiggling-armfat".
      • +
      + +
      + + + + +
      + + + + + + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/provider.html b/1.2.30/docs/partials/api/ng/provider.html new file mode 100644 index 0000000000..19031ed4dd --- /dev/null +++ b/1.2.30/docs/partials/api/ng/provider.html @@ -0,0 +1,100 @@ + +

      Provider components in ng

      + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      $animateProvider

      Default implementation of $animate that doesn't perform any animations, instead just +synchronously performs DOM +updates and calls done() callbacks.

      +
      $compileProvider
      $controllerProvider

      The $controller service is used by Angular to create new +controllers.

      +
      $filterProvider

      Filters are just functions which transform input to an output. However filters need to be +Dependency Injected. To achieve this a filter definition consists of a factory function which is +annotated with dependencies and is responsible for creating a filter function.

      +
      $httpProvider

      Use $httpProvider to change the default behavior of the $http service.

      +
      $interpolateProvider

      Used for configuring the interpolation markup. Defaults to {{ and }}.

      +
      $locationProvider

      Use the $locationProvider to configure how the application deep linking paths are stored.

      +
      $logProvider

      Use the $logProvider to configure how the application logs messages

      +
      $parseProvider

      $parseProvider can be used for configuring the default behavior of the $parse + service.

      +
      $rootScopeProvider

      Provider for the $rootScope service.

      +
      $sceDelegateProvider

      The $sceDelegateProvider provider allows developers to configure the $sceDelegate service. This allows one to get/set the whitelists and blacklists used to ensure +that the URLs used for sourcing Angular templates are safe. Refer $sceDelegateProvider.resourceUrlWhitelist and +$sceDelegateProvider.resourceUrlBlacklist

      +
      $sceProvider

      The $sceProvider provider allows developers to configure the $sce service.

      +
        +
      • enable/disable Strict Contextual Escaping (SCE) in a module
      • +
      • override the default implementation with a custom delegate
      • +
      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ng/provider/$animateProvider.html b/1.2.30/docs/partials/api/ng/provider/$animateProvider.html new file mode 100644 index 0000000000..d9b98b9f11 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/provider/$animateProvider.html @@ -0,0 +1,199 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $animateProvider

      +
        + +
      1. + - $animate +
      2. + +
      3. + - provider in module ng +
      4. +
      +
      + + + +
      +

      Default implementation of $animate that doesn't perform any animations, instead just +synchronously performs DOM +updates and calls done() callbacks.

      +

      In order to enable animations the ngAnimate module has to be loaded.

      +

      To see the functional implementation check out src/ngAnimate/animate.js

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        register(name, factory);

        + +

        +

        Registers a new injectable animation factory function. The factory function produces the +animation object which contains callback functions for each event that is expected to be +animated.

        +
          +
        • eventFn: function(Element, doneFunction) The element to animate, the doneFunction +must be called once the element animation is complete. If a function is returned then the +animation service will use this function to cancel the animation whenever a cancel event is +triggered.
        • +
        +
        return {
        +  eventFn : function(element, done) {
        +    //code to run the animation
        +    //once complete, then run done()
        +    return function cancellationFunction() {
        +      //code to cancel the animation
        +    }
        +  }
        +}
        +
        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        The name of the animation.

        + + +
        + factory + + + + Function + +

        The factory function that will be executed to return the animation + object.

        + + +
        + + + + + + + +
      • + +
      • +

        classNameFilter([expression]);

        + +

        +

        Sets and/or returns the CSS class regular expression that is checked when performing +an animation. Upon bootstrap the classNameFilter value is not set at all and will +therefore enable $animate to attempt to perform an animation on any element. +When setting the classNameFilter value, animations will only be performed on elements +that successfully match the filter expression. This in turn can boost performance +for low-powered devices as well as applications containing a lot of structural operations.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + expression + +
        (optional)
        +
        + RegExp + +

        The className expression which will be checked against all animations

        + + +
        + + + + + + +

        Returns

        + + + + + +
        RegExp

        The current CSS className expression value. If null then there is no expression value

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/provider/$compileProvider.html b/1.2.30/docs/partials/api/ng/provider/$compileProvider.html new file mode 100644 index 0000000000..3b6a4595a6 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/provider/$compileProvider.html @@ -0,0 +1,261 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $compileProvider

      +
        + +
      1. + - $compile +
      2. + +
      3. + - provider in module ng +
      4. +
      +
      + + + +
      + +
      + + + + +
      + + + + +

      Usage

      + +

      $compileProvider();

      + + + + + + + + + +

      Methods

      +
        +
      • +

        directive(name, directiveFactory);

        + +

        +

        Register a new directive with the compiler.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + stringObject + +

        Name of the directive in camel-case (i.e. ngBind which + will match as ng-bind), or an object map of directives where the keys are the + names and the values are the factories.

        + + +
        + directiveFactory + + + + function()Array + +

        An injectable directive factory function. See + directive for more info.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        ng.$compileProvider

        Self for chaining.

        +
        + + +
      • + +
      • +

        aHrefSanitizationWhitelist([regexp]);

        + +

        +

        Retrieves or overrides the default regular expression that is used for whitelisting of safe +urls during a[href] sanitization.

        +

        The sanitization is a security measure aimed at prevent XSS attacks via html links.

        +

        Any url about to be assigned to a[href] via data-binding is first normalized and turned into +an absolute url. Afterwards, the url is matched against the aHrefSanitizationWhitelist +regular expression. If a match is found, the original url is written into the dom. Otherwise, +the absolute url is prefixed with 'unsafe:' string and only then is it written into the DOM.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + regexp + +
        (optional)
        +
        + RegExp + +

        New regexp to whitelist urls with.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        RegExpng.$compileProvider

        Current RegExp if called without value or self for + chaining otherwise.

        +
        + + +
      • + +
      • +

        imgSrcSanitizationWhitelist([regexp]);

        + +

        +

        Retrieves or overrides the default regular expression that is used for whitelisting of safe +urls during img[src] sanitization.

        +

        The sanitization is a security measure aimed at prevent XSS attacks via html links.

        +

        Any url about to be assigned to img[src] via data-binding is first normalized and turned into +an absolute url. Afterwards, the url is matched against the imgSrcSanitizationWhitelist +regular expression. If a match is found, the original url is written into the dom. Otherwise, +the absolute url is prefixed with 'unsafe:' string and only then is it written into the DOM.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + regexp + +
        (optional)
        +
        + RegExp + +

        New regexp to whitelist urls with.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        RegExpng.$compileProvider

        Current RegExp if called without value or self for + chaining otherwise.

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/provider/$controllerProvider.html b/1.2.30/docs/partials/api/ng/provider/$controllerProvider.html new file mode 100644 index 0000000000..d9af3eff5f --- /dev/null +++ b/1.2.30/docs/partials/api/ng/provider/$controllerProvider.html @@ -0,0 +1,119 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $controllerProvider

      +
        + +
      1. + - $controller +
      2. + +
      3. + - provider in module ng +
      4. +
      +
      + + + +
      +

      The $controller service is used by Angular to create new +controllers.

      +

      This provider allows controller registration via the +register method.

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        register(name, constructor);

        + +

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + stringObject + +

        Controller name, or an object map of controllers where the keys are + the names and the values are the constructors.

        + + +
        + constructor + + + + function()Array + +

        Controller constructor fn (optionally decorated with DI + annotations in the array notation).

        + + +
        + + + + + + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/provider/$filterProvider.html b/1.2.30/docs/partials/api/ng/provider/$filterProvider.html new file mode 100644 index 0000000000..7b9c769a3a --- /dev/null +++ b/1.2.30/docs/partials/api/ng/provider/$filterProvider.html @@ -0,0 +1,144 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $filterProvider

      +
        + +
      1. + - $filter +
      2. + +
      3. + - provider in module ng +
      4. +
      +
      + + + +
      +

      Filters are just functions which transform input to an output. However filters need to be +Dependency Injected. To achieve this a filter definition consists of a factory function which is +annotated with dependencies and is responsible for creating a filter function.

      +
      // Filter registration
      +function MyModule($provide, $filterProvider) {
      +  // create a service to demonstrate injection (not always needed)
      +  $provide.value('greet', function(name){
      +    return 'Hello ' + name + '!';
      +  });
      +
      +  // register a filter factory which uses the
      +  // greet service to demonstrate DI.
      +  $filterProvider.register('greet', function(greet){
      +    // return the filter function which uses the greet service
      +    // to generate salutation
      +    return function(text) {
      +      // filters need to be forgiving so check input validity
      +      return text && greet(text) || text;
      +    };
      +  });
      +}
      +
      +

      The filter function is registered with the $injector under the filter name suffix with +Filter.

      +
      it('should be the same instance', inject(
      +  function($filterProvider) {
      +    $filterProvider.register('reverse', function(){
      +      return ...;
      +    });
      +  },
      +  function($filter, reverseFilter) {
      +    expect($filter('reverse')).toBe(reverseFilter);
      +  });
      +
      +

      For more information about how angular filters work, and how to create your own filters, see +Filters in the Angular Developer Guide.

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        register(name);

        + +

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + stringObject + +

        Name of the filter function, or an object map of filters where + the keys are the filter names and the values are the filter factories.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        Object

        Registered filter instance, or if a map of filters was provided then a map + of the registered filter instances.

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/provider/$httpProvider.html b/1.2.30/docs/partials/api/ng/provider/$httpProvider.html new file mode 100644 index 0000000000..15c418ebf5 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/provider/$httpProvider.html @@ -0,0 +1,96 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $httpProvider

      +
        + +
      1. + - $http +
      2. + +
      3. + - provider in module ng +
      4. +
      +
      + + + +
      +

      Use $httpProvider to change the default behavior of the $http service.

      + +
      + + + + +
      + + + + + + + + + +

      Properties

      +
        +
      • +

        defaults

        + + + + + +

        Object containing default values for all $http requests.

        +
          +
        • defaults.xsrfCookieName - {string} - Name of cookie containing the XSRF token. +Defaults value is 'XSRF-TOKEN'.

          +
        • +
        • defaults.xsrfHeaderName - {string} - Name of HTTP header to populate with the +XSRF token. Defaults value is 'X-XSRF-TOKEN'.

          +
        • +
        • defaults.headers - {Object} - Default headers for all $http requests. +Refer to $http for documentation on +setting default headers.

          +
            +
          • defaults.headers.common
          • +
          • defaults.headers.post
          • +
          • defaults.headers.put
          • +
          • defaults.headers.patch
          • +
          +
        • +
        +
        +
      • + +
      • +

        interceptors

        + + + + + +

        Array containing service factories for all synchronous or asynchronous $http +pre-processing of request or postprocessing of responses.

        +

        These service factories are ordered by request, i.e. they are applied in the same order as the +array, on request, but reverse order, on response.

        +

        Interceptors detailed info

        +
        +
      • +
      + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/provider/$interpolateProvider.html b/1.2.30/docs/partials/api/ng/provider/$interpolateProvider.html new file mode 100644 index 0000000000..1097747730 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/provider/$interpolateProvider.html @@ -0,0 +1,207 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $interpolateProvider

      +
        + +
      1. + - $interpolate +
      2. + +
      3. + - provider in module ng +
      4. +
      +
      + + + +
      +

      Used for configuring the interpolation markup. Defaults to {{ and }}.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      $interpolateProvider();

      + + + + + + + + + +

      Methods

      +
        +
      • +

        startSymbol([value]);

        + +

        +

        Symbol to denote start of expression in the interpolated string. Defaults to {{.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + +
        (optional)
        +
        + string + +

        new value to set the starting symbol to.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        stringself

        Returns the symbol when used as getter and self if used as setter.

        +
        + + +
      • + +
      • +

        endSymbol([value]);

        + +

        +

        Symbol to denote the end of expression in the interpolated string. Defaults to }}.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + +
        (optional)
        +
        + string + +

        new value to set the ending symbol to.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        stringself

        Returns the symbol when used as getter and self if used as setter.

        +
        + + +
      • +
      + + + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
      var customInterpolationApp = angular.module('customInterpolationApp', []);
      
      customInterpolationApp.config(function($interpolateProvider) {
        $interpolateProvider.startSymbol('//');
        $interpolateProvider.endSymbol('//');
      });
      
      
      customInterpolationApp.controller('DemoController', function() {
          this.label = "This binding is brought you by // interpolation symbols.";
      });
      </script>
      <div ng-app="App" ng-controller="DemoController as demo">
        //demo.label//
      </div>
      +
      + +
      +
      it('should interpolate binding with custom symbols', function() {
      expect(element(by.binding('demo.label')).getText()).toBe('This binding is brought you by // interpolation symbols.');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/provider/$locationProvider.html b/1.2.30/docs/partials/api/ng/provider/$locationProvider.html new file mode 100644 index 0000000000..45d9396a3d --- /dev/null +++ b/1.2.30/docs/partials/api/ng/provider/$locationProvider.html @@ -0,0 +1,162 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $locationProvider

      +
        + +
      1. + - $location +
      2. + +
      3. + - provider in module ng +
      4. +
      +
      + + + +
      +

      Use the $locationProvider to configure how the application deep linking paths are stored.

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        hashPrefix([prefix]);

        + +

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + prefix + +
        (optional)
        +
        + string + +

        Prefix for hash part (containing path and search)

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        current value if used as getter or itself (chaining) if used as setter

        +
        + + +
      • + +
      • +

        html5Mode([mode]);

        + +

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + mode + +
        (optional)
        +
        + boolean + +

        Use HTML5 strategy if available.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        current value if used as getter or itself (chaining) if used as setter

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/provider/$logProvider.html b/1.2.30/docs/partials/api/ng/provider/$logProvider.html new file mode 100644 index 0000000000..f8b2955923 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/provider/$logProvider.html @@ -0,0 +1,107 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $logProvider

      +
        + +
      1. + - $log +
      2. + +
      3. + - provider in module ng +
      4. +
      +
      + + + +
      +

      Use the $logProvider to configure how the application logs messages

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        debugEnabled([flag]);

        + +

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + flag + +
        (optional)
        +
        + boolean + +

        enable or disable debug level messages

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        current value if used as getter or itself (chaining) if used as setter

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/provider/$parseProvider.html b/1.2.30/docs/partials/api/ng/provider/$parseProvider.html new file mode 100644 index 0000000000..7640c80a23 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/provider/$parseProvider.html @@ -0,0 +1,201 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $parseProvider

      +
        + +
      1. + - $parse +
      2. + +
      3. + - provider in module ng +
      4. +
      +
      + + + +
      +

      $parseProvider can be used for configuring the default behavior of the $parse + service.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      $parseProvider();

      + + + + + + + + + +

      Methods

      +
        +
      • +

        unwrapPromises([value]);

        + +

        +

        This feature is deprecated, see deprecation notes below for more info

        +

        If set to true (default is false), $parse will unwrap promises automatically when a promise is +found at any part of the expression. In other words, if set to true, the expression will always +result in a non-promise value.

        +

        While the promise is unresolved, it's treated as undefined, but once resolved and fulfilled, +the fulfillment value is used in place of the promise while evaluating the expression.

        +

        Deprecation notice

        +

        This is a feature that didn't prove to be wildly useful or popular, primarily because of the +dichotomy between data access in templates (accessed as raw values) and controller code +(accessed as promises).

        +

        In most code we ended up resolving promises manually in controllers anyway and thus unifying +the model access there.

        +

        Other downsides of automatic promise unwrapping:

        +
          +
        • when building components it's often desirable to receive the raw promises
        • +
        • adds complexity and slows down expression evaluation
        • +
        • makes expression code pre-generation unattractive due to the amount of code that needs to be +generated
        • +
        • makes IDE auto-completion and tool support hard
        • +
        +

        Warning Logs

        +

        If the unwrapping is enabled, Angular will log a warning about each expression that unwraps a +promise (to reduce the noise, each expression is logged only once). To disable this logging use +$parseProvider.logPromiseWarnings(false) api.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + +
        (optional)
        +
        + boolean + +

        New value.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        booleanself

        Returns the current setting when used as getter and self if used as + setter.

        +
        + + +
      • + +
      • +

        logPromiseWarnings([value]);

        + +

        +

        Controls whether Angular should log a warning on any encounter of a promise in an expression.

        +

        The default is set to true.

        +

        This setting applies only if $parseProvider.unwrapPromises setting is set to true as well.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + +
        (optional)
        +
        + boolean + +

        New value.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        booleanself

        Returns the current setting when used as getter and self if used as + setter.

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/provider/$rootScopeProvider.html b/1.2.30/docs/partials/api/ng/provider/$rootScopeProvider.html new file mode 100644 index 0000000000..ed8fa0fd66 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/provider/$rootScopeProvider.html @@ -0,0 +1,107 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $rootScopeProvider

      +
        + +
      1. + - $rootScope +
      2. + +
      3. + - provider in module ng +
      4. +
      +
      + + + +
      +

      Provider for the $rootScope service.

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        digestTtl(limit);

        + +

        +

        Sets the number of $digest iterations the scope should attempt to execute before giving up and +assuming that the model is unstable.

        +

        The current default is 10 iterations.

        +

        In complex applications it's possible that the dependencies between $watchs will result in +several digest iterations. However if an application needs more than the default 10 digest +iterations for its model to stabilize then you should investigate what is causing the model to +continuously change during the digest.

        +

        Increasing the TTL could have performance implications, so you should not change it without +proper justification.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + limit + + + + number + +

        The number of digest iterations.

        + + +
        + + + + + + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/provider/$sceDelegateProvider.html b/1.2.30/docs/partials/api/ng/provider/$sceDelegateProvider.html new file mode 100644 index 0000000000..b1cbce40e6 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/provider/$sceDelegateProvider.html @@ -0,0 +1,211 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $sceDelegateProvider

      +
        + +
      1. + - $sceDelegate +
      2. + +
      3. + - provider in module ng +
      4. +
      +
      + + + +
      +

      The $sceDelegateProvider provider allows developers to configure the $sceDelegate service. This allows one to get/set the whitelists and blacklists used to ensure +that the URLs used for sourcing Angular templates are safe. Refer $sceDelegateProvider.resourceUrlWhitelist and +$sceDelegateProvider.resourceUrlBlacklist

      +

      For the general details about this service in Angular, read the main page for Strict Contextual Escaping (SCE).

      +

      Example: Consider the following case.

      +
        +
      • your app is hosted at url http://myapp.example.com/
      • +
      • but some of your templates are hosted on other domains you control such as +http://srv01.assets.example.com/, http://srv02.assets.example.com/, etc.
      • +
      • and you have an open redirect at http://myapp.example.com/clickThru?....
      • +
      +

      Here is what a secure configuration for this scenario might look like:

      +
      angular.module('myApp', []).config(function($sceDelegateProvider) {
      +  $sceDelegateProvider.resourceUrlWhitelist([
      +    // Allow same origin resource loads.
      +    'self',
      +    // Allow loading from our assets domain.  Notice the difference between * and **.
      +    'http://srv*.assets.example.com/**'
      +  ]);
      +
      +  // The blacklist overrides the whitelist so the open redirect here is blocked.
      +  $sceDelegateProvider.resourceUrlBlacklist([
      +    'http://myapp.example.com/clickThru**'
      +  ]);
      +});
      +
      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        resourceUrlWhitelist([whitelist]);

        + +

        +

        Sets/Gets the whitelist of trusted resource URLs.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + whitelist + +
        (optional)
        +
        + Array + +

        When provided, replaces the resourceUrlWhitelist with the value + provided. This must be an array or null. A snapshot of this array is used so further + changes to the array are ignored.

        +
        Follow this link for a description of the items
        +allowed in this array.
        +
        +Note: **an empty whitelist array will block all URLs**!
        +
        + + +
        + + + + + + +

        Returns

        + + + + + +
        Array

        the currently set whitelist array.

        +

        The default value when no whitelist has been explicitly set is ['self'] allowing only +same origin resource requests.

        +
        + + +
      • + +
      • +

        resourceUrlBlacklist([blacklist]);

        + +

        +

        Sets/Gets the blacklist of trusted resource URLs.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + blacklist + +
        (optional)
        +
        + Array + +

        When provided, replaces the resourceUrlBlacklist with the value + provided. This must be an array or null. A snapshot of this array is used so further + changes to the array are ignored.

        +
        Follow this link for a description of the items
        +allowed in this array.
        +
        +The typical usage for the blacklist is to **block
        +[open redirects](http://cwe.mitre.org/data/definitions/601.html)** served by your domain as
        +these would otherwise be trusted but actually return content from the redirected domain.
        +
        +Finally, **the blacklist overrides the whitelist** and has the final say.
        +
        + + +
        + + + + + + +

        Returns

        + + + + + +
        Array

        the currently set blacklist array.

        +

        The default value when no whitelist has been explicitly set is the empty array (i.e. there +is no blacklist.)

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/provider/$sceProvider.html b/1.2.30/docs/partials/api/ng/provider/$sceProvider.html new file mode 100644 index 0000000000..d4eb958f6a --- /dev/null +++ b/1.2.30/docs/partials/api/ng/provider/$sceProvider.html @@ -0,0 +1,113 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $sceProvider

      +
        + +
      1. + - $sce +
      2. + +
      3. + - provider in module ng +
      4. +
      +
      + + + +
      +

      The $sceProvider provider allows developers to configure the $sce service.

      +
        +
      • enable/disable Strict Contextual Escaping (SCE) in a module
      • +
      • override the default implementation with a custom delegate
      • +
      +

      Read more about Strict Contextual Escaping (SCE).

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        enabled([value]);

        + +

        +

        Enables/disables SCE and returns the current value.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + +
        (optional)
        +
        + boolean + +

        If provided, then enables/disables SCE.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        boolean

        true if SCE is enabled, false otherwise.

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service.html b/1.2.30/docs/partials/api/ng/service.html new file mode 100644 index 0000000000..147eccf0e8 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service.html @@ -0,0 +1,198 @@ + +

      Service components in ng

      + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      $anchorScroll

      When called, it checks current value of $location.hash() and scrolls to the related element, +according to rules specified in +Html5 spec.

      +
      $animate

      The $animate service provides rudimentary DOM manipulation functions to +insert, remove and move elements within the DOM, as well as adding and removing classes. +This service is the core service used by the ngAnimate $animator service which provides +high-level animation hooks for CSS and JavaScript.

      +
      $cacheFactory

      Factory that constructs Cache objects and gives access to +them.

      +
      $templateCache

      The first time a template is used, it is loaded in the template cache for quick retrieval. You +can load templates directly into the cache in a script tag, or by consuming the +$templateCache service directly.

      +
      $compile

      Compiles an HTML string or DOM into a template and produces a template function, which +can then be used to link scope and the template together.

      +
      $controller

      $controller service is responsible for instantiating controllers.

      +
      $document

      A jQuery or jqLite wrapper for the browser's window.document object.

      +
      $exceptionHandler

      Any uncaught exception in angular expressions is delegated to this service. +The default implementation simply delegates to $log.error which logs it into +the browser console.

      +
      $filter

      Filters are used for formatting data displayed to the user.

      +
      $http

      The $http service is a core Angular service that facilitates communication with the remote +HTTP servers via the browser's XMLHttpRequest +object or via JSONP.

      +
      $httpBackend

      HTTP backend used by the service that delegates to +XMLHttpRequest object or JSONP and deals with browser incompatibilities.

      +
      $interpolate

      Compiles a string with markup into an interpolation function. This service is used by the +HTML $compile service for data binding. See +$interpolateProvider for configuring the +interpolation markup.

      +
      $interval

      Angular's wrapper for window.setInterval. The fn function is executed every delay +milliseconds.

      +
      $locale

      $locale service provides localization rules for various Angular components. As of right now the +only public api is:

      +
      $location

      The $location service parses the URL in the browser address bar (based on the +window.location) and makes the URL +available to your application. Changes to the URL in the address bar are reflected into +$location service and changes to $location are reflected into the browser address bar.

      +
      $log

      Simple service for logging. Default implementation safely writes the message +into the browser's console (if present).

      +
      $parse

      Converts Angular expression into a function.

      +
      $q

      A service that helps you run functions asynchronously, and use their return values (or exceptions) +when they are done processing.

      +
      $rootElement

      The root element of Angular application. This is either the element where ngApp was declared or the element passed into +angular.bootstrap. The element represent the root element of application. It is also the +location where the applications $injector service gets +published, it can be retrieved using $rootElement.injector().

      +
      $rootScope

      Every application has a single root scope. +All other scopes are descendant scopes of the root scope. Scopes provide separation +between the model and the view, via a mechanism for watching the model for changes. +They also provide an event emission/broadcast and subscription facility. See the +developer guide on scopes.

      +
      $sceDelegate

      $sceDelegate is a service that is used by the $sce service to provide Strict +Contextual Escaping (SCE) services to AngularJS.

      +
      $sce

      $sce is a service that provides Strict Contextual Escaping services to AngularJS.

      +
      $timeout

      Angular's wrapper for window.setTimeout. The fn function is wrapped into a try/catch +block and delegates any exceptions to +$exceptionHandler service.

      +
      $window

      A reference to the browser's window object. While window +is globally available in JavaScript, it causes testability problems, because +it is a global variable. In angular we always refer to it through the +$window service, so it may be overridden, removed or mocked for testing.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ng/service/$anchorScroll.html b/1.2.30/docs/partials/api/ng/service/$anchorScroll.html new file mode 100644 index 0000000000..a62a548898 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$anchorScroll.html @@ -0,0 +1,106 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $anchorScroll

      +
        + + + +
      1. + - service in module ng +
      2. +
      +
      + + + +
      +

      When called, it checks current value of $location.hash() and scrolls to the related element, +according to rules specified in +Html5 spec.

      +

      It also watches the $location.hash() and scrolls whenever it changes to match any anchor. +This can be disabled by calling $anchorScrollProvider.disableAutoScrolling().

      + +
      + + + + +
      + +

      Dependencies

      + + + + + +

      Usage

      + +

      $anchorScroll();

      + + + + + + + + + + + + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div id="scrollArea" ng-controller="ScrollCtrl">
        <a ng-click="gotoBottom()">Go to bottom</a>
        <a id="bottom"></a> You're at the bottom!
      </div>
      +
      + +
      +
      function ScrollCtrl($scope, $location, $anchorScroll) {
        $scope.gotoBottom = function (){
          // set the location.hash to the id of
          // the element you wish to scroll to.
          $location.hash('bottom');
      
          // call $anchorScroll()
          $anchorScroll();
        };
      }
      +
      + +
      +
      #scrollArea {
        height: 350px;
        overflow: auto;
      }
      
      #bottom {
        display: block;
        margin-top: 2000px;
      }
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$animate.html b/1.2.30/docs/partials/api/ng/service/$animate.html new file mode 100644 index 0000000000..5fc09ba604 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$animate.html @@ -0,0 +1,587 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $animate

      +
        + +
      1. + - $animateProvider +
      2. + +
      3. + - service in module ng +
      4. +
      +
      + + + +
      +

      The $animate service provides rudimentary DOM manipulation functions to +insert, remove and move elements within the DOM, as well as adding and removing classes. +This service is the core service used by the ngAnimate $animator service which provides +high-level animation hooks for CSS and JavaScript.

      +

      $animate is available in the AngularJS core, however, the ngAnimate module must be included +to enable full out animation support. Otherwise, $animate will only perform simple DOM +manipulation operations.

      +

      To learn more about enabling animation support, click here to visit the ngAnimate module page as well as the ngAnimate $animate service +page.

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        enter(element, parent, after, [done]);

        + +

        +

        Inserts the element into the DOM either after the after element or within + the parent element. Once complete, the done() callback will be fired (if provided).

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + element + + + + DOMElement + +

        the element which will be inserted into the DOM

        + + +
        + parent + + + + DOMElement + +

        the parent element which will append the element as + a child (if the after element is not present)

        + + +
        + after + + + + DOMElement + +

        the sibling element which will append the element + after itself

        + + +
        + done + +
        (optional)
        +
        + Function= + +

        callback function that will be called after the element has been + inserted into the DOM

        + + +
        + + + + + + + +
      • + +
      • +

        leave(element, [done]);

        + +

        +

        Removes the element from the DOM. Once complete, the done() callback will be + fired (if provided).

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + element + + + + DOMElement + +

        the element which will be removed from the DOM

        + + +
        + done + +
        (optional)
        +
        + Function= + +

        callback function that will be called after the element has been + removed from the DOM

        + + +
        + + + + + + + +
      • + +
      • +

        move(element, parent, after, [done]);

        + +

        +

        Moves the position of the provided element within the DOM to be placed +either after the after element or inside of the parent element. Once complete, the +done() callback will be fired (if provided).

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + element + + + + DOMElement + +

        the element which will be moved around within the + DOM

        + + +
        + parent + + + + DOMElement + +

        the parent element where the element will be + inserted into (if the after element is not present)

        + + +
        + after + + + + DOMElement + +

        the sibling element where the element will be + positioned next to

        + + +
        + done + +
        (optional)
        +
        + Function= + +

        the callback function (if provided) that will be fired after the + element has been moved to its new position

        + + +
        + + + + + + + +
      • + +
      • +

        addClass(element, className, [done]);

        + +

        +

        Adds the provided className CSS class value to the provided element. Once +complete, the done() callback will be fired (if provided).

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + element + + + + DOMElement + +

        the element which will have the className value + added to it

        + + +
        + className + + + + string + +

        the CSS class which will be added to the element

        + + +
        + done + +
        (optional)
        +
        + Function= + +

        the callback function (if provided) that will be fired after the + className value has been added to the element

        + + +
        + + + + + + + +
      • + +
      • +

        removeClass(element, className, [done]);

        + +

        +

        Removes the provided className CSS class value from the provided element. +Once complete, the done() callback will be fired (if provided).

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + element + + + + DOMElement + +

        the element which will have the className value + removed from it

        + + +
        + className + + + + string + +

        the CSS class which will be removed from the element

        + + +
        + done + +
        (optional)
        +
        + Function= + +

        the callback function (if provided) that will be fired after the + className value has been removed from the element

        + + +
        + + + + + + + +
      • + +
      • +

        setClass(element, add, remove, [done]);

        + +

        +

        Adds and/or removes the given CSS classes to and from the element. +Once complete, the done() callback will be fired (if provided).

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + element + + + + DOMElement + +

        the element which will have its CSS classes changed + removed from it

        + + +
        + add + + + + string + +

        the CSS classes which will be added to the element

        + + +
        + remove + + + + string + +

        the CSS class which will be removed from the element

        + + +
        + done + +
        (optional)
        +
        + Function= + +

        the callback function (if provided) that will be fired after the + CSS classes have been set on the element

        + + +
        + + + + + + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$cacheFactory.html b/1.2.30/docs/partials/api/ng/service/$cacheFactory.html new file mode 100644 index 0000000000..014876c38c --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$cacheFactory.html @@ -0,0 +1,261 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $cacheFactory

      +
        + + + +
      1. + - service in module ng +
      2. +
      +
      + + + +
      +

      Factory that constructs Cache objects and gives access to +them.

      +
      var cache = $cacheFactory('cacheId');
      +expect($cacheFactory.get('cacheId')).toBe(cache);
      +expect($cacheFactory.get('noSuchCacheId')).not.toBeDefined();
      +
      +cache.put("key", "value");
      +cache.put("another key", "another value");
      +
      +// We've specified no options on creation
      +expect(cache.info()).toEqual({id: 'cacheId', size: 2});
      +
      + +
      + + + + +
      + + + + +

      Usage

      + +

      $cacheFactory(cacheId, [options]);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + cacheId + + + + string + +

      Name or id of the newly created cache.

      + + +
      + options + +
      (optional)
      +
      + object + +

      Options object that specifies the cache behavior. Properties:

      +
        +
      • {number=} capacity — turns the cache into LRU cache.
      • +
      + + +
      + +
      + +

      Returns

      + + + + + +
      object

      Newly created cache object with the following set of methods:

      +
        +
      • {object} info() — Returns id, size, and options of cache.
      • +
      • {{*}} put({string} key, {*} value) — Puts a new key-value pair into the cache and returns +it.
      • +
      • {{*}} get({string} key) — Returns cached value for key or undefined for cache miss.
      • +
      • {void} remove({string} key) — Removes a key-value pair from the cache.
      • +
      • {void} removeAll() — Removes all cached values.
      • +
      • {void} destroy() — Removes references to this cache from $cacheFactory.
      • +
      +
      + + +

      Methods

      +
        +
      • +

        info();

        + +

        +

        Get information about all the caches that have been created

        +
        + + + + + + +

        Returns

        + + + + + +
        Object
          +
        • key-value map of cacheId to the result of calling cache#info
        • +
        +
        + + +
      • + +
      • +

        get(cacheId);

        + +

        +

        Get access to a cache object by the cacheId used when it was created.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + cacheId + + + + string + +

        Name or id of a cache to access.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        object

        Cache object identified by the cacheId or undefined if no such cache.

        +
        + + +
      • +
      + + + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="CacheController">
        <input ng-model="newCacheKey" placeholder="Key">
        <input ng-model="newCacheValue" placeholder="Value">
        <button ng-click="put(newCacheKey, newCacheValue)">Cache</button>
      
        <p ng-if="keys.length">Cached Values</p>
        <div ng-repeat="key in keys">
          <span ng-bind="key"></span>
          <span>: </span>
          <b ng-bind="cache.get(key)"></b>
        </div>
      
        <p>Cache Info</p>
        <div ng-repeat="(key, value) in cache.info()">
          <span ng-bind="key"></span>
          <span>: </span>
          <b ng-bind="value"></b>
        </div>
      </div>
      +
      + +
      +
      angular.module('cacheExampleApp', []).
        controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) {
          $scope.keys = [];
          $scope.cache = $cacheFactory('cacheId');
          $scope.put = function(key, value) {
            if ($scope.cache.get(key) === undefined) {
              $scope.keys.push(key);
            }
            $scope.cache.put(key, value === undefined ? null : value);
          };
        }]);
      +
      + +
      +
      p {
        margin: 10px 0 3px;
      }
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$compile.html b/1.2.30/docs/partials/api/ng/service/$compile.html new file mode 100644 index 0000000000..0a59a848fb --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$compile.html @@ -0,0 +1,536 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $compile

      +
        + +
      1. + - $compileProvider +
      2. + +
      3. + - service in module ng +
      4. +
      +
      + + + +
      +

      Compiles an HTML string or DOM into a template and produces a template function, which +can then be used to link scope and the template together.

      +

      The compilation is a process of walking the DOM tree and matching DOM elements to +directives.

      +
      +Note: This document is an in-depth reference of all directive options. +For a gentle introduction to directives with examples of common use cases, +see the directive guide. +
      + +

      Comprehensive Directive API

      +

      There are many different options for a directive.

      +

      The difference resides in the return value of the factory function. +You can either return a "Directive Definition Object" (see below) that defines the directive properties, +or just the postLink function (all other properties will have the default values).

      +
      +Best Practice: It's recommended to use the "directive definition object" form. +
      + +

      Here's an example directive declared with a Directive Definition Object:

      +
      var myModule = angular.module(...);
      +
      +myModule.directive('directiveName', function factory(injectables) {
      +  var directiveDefinitionObject = {
      +    priority: 0,
      +    template: '<div></div>', // or // function(tElement, tAttrs) { ... },
      +    // or
      +    // templateUrl: 'directive.html', // or // function(tElement, tAttrs) { ... },
      +    transclude: false,
      +    restrict: 'A',
      +    scope: false,
      +    controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... },
      +    controllerAs: 'stringAlias',
      +    require: 'siblingDirectiveName', // or // ['^parentDirectiveName', '?optionalDirectiveName', '?^optionalParent'],
      +    compile: function compile(tElement, tAttrs, transclude) {
      +      return {
      +        pre: function preLink(scope, iElement, iAttrs, controller) { ... },
      +        post: function postLink(scope, iElement, iAttrs, controller) { ... }
      +      }
      +      // or
      +      // return function postLink( ... ) { ... }
      +    },
      +    // or
      +    // link: {
      +    //  pre: function preLink(scope, iElement, iAttrs, controller) { ... },
      +    //  post: function postLink(scope, iElement, iAttrs, controller) { ... }
      +    // }
      +    // or
      +    // link: function postLink( ... ) { ... }
      +  };
      +  return directiveDefinitionObject;
      +});
      +
      +
      +Note: Any unspecified options will use the default value. You can see the default values below. +
      + +

      Therefore the above can be simplified as:

      +
      var myModule = angular.module(...);
      +
      +myModule.directive('directiveName', function factory(injectables) {
      +  var directiveDefinitionObject = {
      +    link: function postLink(scope, iElement, iAttrs) { ... }
      +  };
      +  return directiveDefinitionObject;
      +  // or
      +  // return function postLink(scope, iElement, iAttrs) { ... }
      +});
      +
      +

      Directive Definition Object

      +

      The directive definition object provides instructions to the compiler. The attributes are:

      +

      priority

      +

      When there are multiple directives defined on a single DOM element, sometimes it +is necessary to specify the order in which the directives are applied. The priority is used +to sort the directives before their compile functions get called. Priority is defined as a +number. Directives with greater numerical priority are compiled first. Pre-link functions +are also run in priority order, but post-link functions are run in reverse order. The order +of directives with the same priority is undefined. The default priority is 0.

      +

      terminal

      +

      If set to true then the current priority will be the last set of directives +which will execute (any directives at the current priority will still execute +as the order of execution on same priority is undefined).

      +

      scope

      +

      If set to true, then a new scope will be created for this directive. If multiple directives on the +same element request a new scope, only one new scope is created. The new scope rule does not +apply for the root of the template since the root of the template always gets a new scope.

      +

      If set to {} (object hash), then a new "isolate" scope is created. The 'isolate' scope differs from +normal scope in that it does not prototypically inherit from the parent scope. This is useful +when creating reusable components, which should not accidentally read or modify data in the +parent scope.

      +

      The 'isolate' scope takes an object hash which defines a set of local scope properties +derived from the parent scope. These local properties are useful for aliasing values for +templates. Locals definition is a hash of local scope property to its source:

      +
        +
      • @ or @attr - bind a local scope property to the value of DOM attribute. The result is +always a string since DOM attributes are strings. If no attr name is specified then the +attribute name is assumed to be the same as the local name. +Given <widget my-attr="hello {{name}}"> and widget definition +of scope: { localName:'@myAttr' }, then widget scope property localName will reflect +the interpolated value of hello {{name}}. As the name attribute changes so will the +localName property on the widget scope. The name is read from the parent scope (not +component scope).

        +
      • +
      • = or =attr - set up bi-directional binding between a local scope property and the +parent scope property of name defined via the value of the attr attribute. If no attr +name is specified then the attribute name is assumed to be the same as the local name. +Given <widget my-attr="parentModel"> and widget definition of +scope: { localModel:'=myAttr' }, then widget scope property localModel will reflect the +value of parentModel on the parent scope. Any changes to parentModel will be reflected +in localModel and any changes in localModel will reflect in parentModel. If the parent +scope property doesn't exist, it will throw a NON_ASSIGNABLE_MODEL_EXPRESSION exception. You +can avoid this behavior using =? or =?attr in order to flag the property as optional.

        +
      • +
      • & or &attr - provides a way to execute an expression in the context of the parent scope. +If no attr name is specified then the attribute name is assumed to be the same as the +local name. Given <widget my-attr="count = count + value"> and widget definition of +scope: { localFn:'&myAttr' }, then isolate scope property localFn will point to +a function wrapper for the count = count + value expression. Often it's desirable to +pass data from the isolated scope via an expression to the parent scope, this can be +done by passing a map of local variable names and values into the expression wrapper fn. +For example, if the expression is increment(amount) then we can specify the amount value +by calling the localFn as localFn({amount: 22}).

        +
      • +
      +

      controller

      +

      Controller constructor function. The controller is instantiated before the +pre-linking phase and it is shared with other directives (see +require attribute). This allows the directives to communicate with each other and augment +each other's behavior. The controller is injectable (and supports bracket notation) with the following locals:

      +
        +
      • $scope - Current scope associated with the element
      • +
      • $element - Current element
      • +
      • $attrs - Current attributes object for the element
      • +
      • $transclude - A transclude linking function pre-bound to the correct transclusion scope. + The scope can be overridden by an optional first argument. +function([scope], cloneLinkingFn).
      • +
      +

      require

      +

      Require another directive and inject its controller as the fourth argument to the linking function. The +require takes a string name (or array of strings) of the directive(s) to pass in. If an array is used, the +injected argument will be an array in corresponding order. If no such directive can be +found, or if the directive does not have a controller, then an error is raised. The name can be prefixed with:

      +
        +
      • (no prefix) - Locate the required controller on the current element. Throw an error if not found.
      • +
      • ? - Attempt to locate the required controller or pass null to the link fn if not found.
      • +
      • ^ - Locate the required controller by searching the element and its parents. Throw an error if not found.
      • +
      • ?^ - Attempt to locate the required controller by searching the element and its parents or pass +null to the link fn if not found.
      • +
      +

      controllerAs

      +

      Controller alias at the directive scope. An alias for the controller so it +can be referenced at the directive template. The directive needs to define a scope for this +configuration to be used. Useful in the case when directive is used as component.

      +

      restrict

      +

      String of subset of EACM which restricts the directive to a specific directive +declaration style. If omitted, the default (attributes only) is used.

      +
        +
      • E - Element name: <my-directive></my-directive>
      • +
      • A - Attribute (default): <div my-directive="exp"></div>
      • +
      • C - Class: <div class="my-directive: exp;"></div>
      • +
      • M - Comment: <!-- directive: my-directive exp -->
      • +
      +

      template

      +

      HTML markup that may:

      +
        +
      • Replace the contents of the directive's element (default).
      • +
      • Replace the directive's element itself (if replace is true - DEPRECATED).
      • +
      • Wrap the contents of the directive's element (if transclude is true).
      • +
      +

      Value may be:

      +
        +
      • A string. For example <div red-on-hover>{{delete_str}}</div>.
      • +
      • A function which takes two arguments tElement and tAttrs (described in the compile +function api below) and returns a string value.
      • +
      +

      templateUrl

      +

      Same as template but the template is loaded from the specified URL. Because +the template loading is asynchronous the compilation/linking is suspended until the template +is loaded.

      +

      You can specify templateUrl as a string representing the URL or as a function which takes two +arguments tElement and tAttrs (described in the compile function api below) and returns +a string value representing the url. In either case, the template URL is passed through $sce.getTrustedResourceUrl.

      +

      replace ([DEPRECATED!], will be removed in next major release)

      +

      specify what the template should replace. Defaults to false.

      +
        +
      • true - the template will replace the directive's element.
      • +
      • false - the template will replace the contents of the directive's element.
      • +
      +

      The replacement process migrates all of the attributes / classes from the old element to the new +one. See the Directives Guide for an example.

      +

      transclude

      +

      compile the content of the element and make it available to the directive. +Typically used with ngTransclude. The advantage of transclusion is that the linking function receives a +transclusion function which is pre-bound to the correct scope. In a typical setup the widget +creates an isolate scope, but the transclusion is not a child, but a sibling of the isolate +scope. This makes it possible for the widget to have private state, and the transclusion to +be bound to the parent (pre-isolate) scope.

      +

      There are two kinds of transclusion depending upon whether you want to transclude just the contents of the +directive's element or the entire element:

      +
        +
      • true - transclude the content (i.e. the child nodes) of the directive's element.
      • +
      • 'element' - transclude the whole of the directive's element including any directives on this +element that defined at a lower priority than this directive. When used, the template +property is ignored.
      • +
      +
      +Note: When testing an element transclude directive you must not place the directive at the root of the +DOM fragment that is being compiled. See Testing Transclusion Directives. +
      + +

      compile

      +
      function compile(tElement, tAttrs, transclude) { ... }
      +
      +

      The compile function deals with transforming the template DOM. Since most directives do not do +template transformation, it is not used often. The compile function takes the following arguments:

      +
        +
      • tElement - template element - The element where the directive has been declared. It is +safe to do template transformation on the element and child elements only.

        +
      • +
      • tAttrs - template attributes - Normalized list of attributes declared on this element shared +between all directive compile functions.

        +
      • +
      • transclude - [DEPRECATED!] A transclude linking function: function(scope, cloneLinkingFn)

        +
      • +
      +
      +Note: The template instance and the link instance may be different objects if the template has +been cloned. For this reason it is not safe to do anything other than DOM transformations that +apply to all cloned DOM nodes within the compile function. Specifically, DOM listener registration +should be done in a linking function rather than in a compile function. +
      + +
      +Note: The compile function cannot handle directives that recursively use themselves in their +own templates or compile functions. Compiling these directives results in an infinite loop and a +stack overflow errors. + +This can be avoided by manually using $compile in the postLink function to imperatively compile +a directive's template instead of relying on automatic template compilation via template or +templateUrl declaration or manual compilation inside the compile function. +
      + +
      +Note: The transclude function that is passed to the compile function is deprecated, as it + e.g. does not know about the right outer scope. Please use the transclude function that is passed + to the link function instead. +
      + +

      A compile function can have a return value which can be either a function or an object.

      +
        +
      • returning a (post-link) function - is equivalent to registering the linking function via the +link property of the config object when the compile function is empty.

        +
      • +
      • returning an object with function(s) registered via pre and post properties - allows you to +control when a linking function should be called during the linking phase. See info about +pre-linking and post-linking functions below.

        +
      • +
      + +

      This property is used only if the compile property is not defined.

      +
      function link(scope, iElement, iAttrs, controller, transcludeFn) { ... }
      +
      +

      The link function is responsible for registering DOM listeners as well as updating the DOM. It is +executed after the template has been cloned. This is where most of the directive logic will be +put.

      +
        +
      • scope - Scope - The scope to be used by the +directive for registering watches.

        +
      • +
      • iElement - instance element - The element where the directive is to be used. It is safe to +manipulate the children of the element only in postLink function since the children have +already been linked.

        +
      • +
      • iAttrs - instance attributes - Normalized list of attributes declared on this element shared +between all directive linking functions.

        +
      • +
      • controller - a controller instance - A controller instance if at least one directive on the +element defines a controller. The controller is shared among all the directives, which allows +the directives to use the controllers as a communication channel.

        +
      • +
      • transcludeFn - A transclude linking function pre-bound to the correct transclusion scope. +The scope can be overridden by an optional first argument. This is the same as the $transclude +parameter of directive controllers. +function([scope], cloneLinkingFn).

        +
      • +
      +

      Pre-linking function

      +

      Executed before the child elements are linked. Not safe to do DOM transformation since the +compiler linking function will fail to locate the correct elements for linking.

      +

      Post-linking function

      +

      Executed after the child elements are linked. It is safe to do DOM transformation in the post-linking function.

      +

      +

      Attributes

      +

      The Attributes object - passed as a parameter in the +link() or compile() functions. It has a variety of uses.

      +

      accessing Normalized attribute names: +Directives like 'ngBind' can be expressed in many ways: 'ng:bind', data-ng-bind, or 'x-ng-bind'. +the attributes object allows for normalized access to + the attributes.

      +
        +
      • Directive inter-communication: All directives share the same instance of the attributes +object which allows the directives to use the attributes object as inter directive +communication.

        +
      • +
      • Supports interpolation: Interpolation attributes are assigned to the attribute object +allowing other directives to read the interpolated value.

        +
      • +
      • Observing interpolated attributes: Use $observe to observe the value changes of attributes +that contain interpolation (e.g. src="{{bar}}"). Not only is this very efficient but it's also +the only way to easily get the actual value because during the linking phase the interpolation +hasn't been evaluated yet and so the value is at this time set to undefined.

        +
      • +
      +
      function linkingFn(scope, elm, attrs, ctrl) {
      +// get the attribute value
      +console.log(attrs.ngModel);
      +
      +// change the attribute
      +attrs.$set('ngModel', 'new value');
      +
      +// observe changes to interpolated attribute
      +attrs.$observe('ngModel', function(value) {
      +  console.log('ngModel has changed value to ' + value);
      +});
      +}
      +
      +

      Example

      +
      +Note: Typically directives are registered with module.directive. The example below is +to illustrate how $compile works. +
      + +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('compileExample', [], function($compileProvider) {
          // configure new 'compile' directive by passing a directive
          // factory function. The factory function injects the '$compile'
          $compileProvider.directive('compile', function($compile) {
            // directive factory creates a link function
            return function(scope, element, attrs) {
              scope.$watch(
                function(scope) {
                   // watch the 'compile' expression for changes
                  return scope.$eval(attrs.compile);
                },
                function(value) {
                  // when the 'compile' expression changes
                  // assign it into the current DOM
                  element.html(value);
      
                  // compile the new DOM and link it to the current
                  // scope.
                  // NOTE: we only compile .childNodes so that
                  // we don't get into infinite loop compiling ourselves
                  $compile(element.contents())(scope);
                }
              );
            };
          });
        })
        .controller('GreeterController', ['$scope', function($scope) {
          $scope.name = 'Angular';
          $scope.html = 'Hello {{name}}';
        }]);
      </script>
      <div ng-controller="GreeterController">
        <input ng-model="name"> <br>
        <textarea ng-model="html"></textarea> <br>
        <div compile="html"></div>
      </div>
      +
      + +
      +
      it('should auto compile', function() {
        var textarea = $('textarea');
        var output = $('div[compile]');
        // The initial state reads 'Hello Angular'.
        expect(output.getText()).toBe('Hello Angular');
        textarea.clear();
        textarea.sendKeys('{{name}}!');
        expect(output.getText()).toBe('Angular!');
      });
      +
      + + + +
      +
      + + +

      + +
      + + + + +
      + + + + +

      Usage

      + +

      $compile(element, transclude, maxPriority);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + element + + + + stringDOMElement + +

      Element or HTML string to compile into a template function.

      + + +
      + transclude + + + + function(angular.Scope, cloneAttachFn=) + +

      function available to directives.

      + + +
      + maxPriority + + + + number + +

      only apply directives lower than given priority (Only effects the + root element(s), not their children)

      + + +
      + +
      + +

      Returns

      + + + + + +
      function(scope, cloneAttachFn=)

      a link function which is used to bind template +(a DOM element/tree) to a scope. Where:

      +
        +
      • scope - A Scope to bind to.
      • +
      • cloneAttachFn - If cloneAttachFn is provided, then the link function will clone the +template and call the cloneAttachFn function allowing the caller to attach the +cloned elements to the DOM document at the appropriate place. The cloneAttachFn is +called as:
        cloneAttachFn(clonedElement, scope) where:

        +
          +
        • clonedElement - is a clone of the original element passed into the compiler.
        • +
        • scope - is the current scope with which the linking function is working with.
        • +
        +
      • +
      +

      Calling the linking function returns the element of the template. It is either the original +element passed in, or the clone of the element if the cloneAttachFn is provided.

      +

      After linking the view is not updated until after a call to $digest which typically is done by +Angular automatically.

      +

      If you need access to the bound view, there are two ways to do it:

      +
        +
      • If you are not asking the linking function to clone the template, create the DOM element(s) +before you send them to the compiler and keep this reference around.

        +
        var element = $compile('<p>{{total}}</p>')(scope);
        +
        +
      • +
      • if on the other hand, you need the element to be cloned, the view reference from the original +example would not point to the clone, but rather to the original template that was cloned. In +this case, you can access the clone via the cloneAttachFn:

        +
        var templateElement = angular.element('<p>{{total}}</p>'),
        +    scope = ....;
        +
        +var clonedElement = $compile(templateElement)(scope, function(clonedElement, scope) {
        +  //attach the clone to DOM document at the right place
        +});
        +
        +//now we have reference to the cloned DOM via `clonedElement`
        +
        +
      • +
      +

      For information on how the compiler works, see the +Angular HTML Compiler section of the Developer Guide.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$controller.html b/1.2.30/docs/partials/api/ng/service/$controller.html new file mode 100644 index 0000000000..247fcf4bf5 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$controller.html @@ -0,0 +1,129 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $controller

      +
        + +
      1. + - $controllerProvider +
      2. + +
      3. + - service in module ng +
      4. +
      +
      + + + +
      +

      $controller service is responsible for instantiating controllers.

      +

      It's just a simple call to $injector, but extracted into +a service, so that one can override this service with BC version.

      + +
      + + + + +
      + +

      Dependencies

      + + + + + +

      Usage

      + +

      $controller(constructor, locals);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + constructor + + + + function()string + +

      If called with a function then it's considered to be the + controller constructor function. Otherwise it's considered to be a string which is used + to retrieve the controller constructor using the following steps:

      +
        +
      • check if a controller with given name is registered via $controllerProvider
      • +
      • check if evaluating the string on the current scope returns a constructor
      • +
      • check window[constructor] on the global window object
      • +
      + + +
      + locals + + + + Object + +

      Injection locals for Controller.

      + + +
      + +
      + +

      Returns

      + + + + + +
      Object

      Instance of given controller.

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$document.html b/1.2.30/docs/partials/api/ng/service/$document.html new file mode 100644 index 0000000000..b3f72f955d --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$document.html @@ -0,0 +1,87 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $document

      +
        + + + +
      1. + - service in module ng +
      2. +
      +
      + + + +
      +

      A jQuery or jqLite wrapper for the browser's window.document object.

      + +
      + + + + +
      + +

      Dependencies

      + + + + + + + + + + + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="ExampleController">
        <p>$document title: <b ng-bind="title"></b></p>
        <p>window.document title: <b ng-bind="windowTitle"></b></p>
      </div>
      +
      + +
      +
      angular.module('documentExample', [])
        .controller('ExampleController', ['$scope', '$document', function($scope, $document) {
          $scope.title = $document[0].title;
          $scope.windowTitle = angular.element(window.document)[0].title;
        }]);
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$exceptionHandler.html b/1.2.30/docs/partials/api/ng/service/$exceptionHandler.html new file mode 100644 index 0000000000..bfeb72cc41 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$exceptionHandler.html @@ -0,0 +1,126 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $exceptionHandler

      +
        + + + +
      1. + - service in module ng +
      2. +
      +
      + + + +
      +

      Any uncaught exception in angular expressions is delegated to this service. +The default implementation simply delegates to $log.error which logs it into +the browser console.

      +

      In unit tests, if angular-mocks.js is loaded, this service is overridden by +mock $exceptionHandler which aids in testing.

      +

      Example:

      +
      angular.module('exceptionOverride', []).factory('$exceptionHandler', function () {
      +  return function (exception, cause) {
      +    exception.message += ' (caused by "' + cause + '")';
      +    throw exception;
      +  };
      +});
      +
      +

      This example will override the normal action of $exceptionHandler, to make angular +exceptions fail hard when they happen, instead of just logging to the console.

      + +
      + + + + +
      + +

      Dependencies

      + + + + + +

      Usage

      + +

      $exceptionHandler(exception, [cause]);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + exception + + + + Error + +

      Exception associated with the error.

      + + +
      + cause + +
      (optional)
      +
      + string + +

      optional information about the context in which + the error was thrown.

      + + +
      + +
      + + + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$filter.html b/1.2.30/docs/partials/api/ng/service/$filter.html new file mode 100644 index 0000000000..8da58f9a44 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$filter.html @@ -0,0 +1,137 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $filter

      +
        + +
      1. + - $filterProvider +
      2. + +
      3. + - service in module ng +
      4. +
      +
      + + + +
      +

      Filters are used for formatting data displayed to the user.

      +

      The general syntax in templates is as follows:

      +
      {{ expression [| filter_name[:parameter_value] ... ] }}
      +
      + +
      + + + + +
      + + + + +

      Usage

      + +

      $filter(name);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + name + + + + String + +

      Name of the filter function to retrieve

      + + +
      + +
      + +

      Returns

      + + + + + +
      Function

      the filter function

      +
      + + + + + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="MainCtrl">
       <h3>{{ originalText }}</h3>
       <h3>{{ filteredText }}</h3>
      </div>
      +
      + +
      +
      angular.module('filterExample', [])
      .controller('MainCtrl', function($scope, $filter) {
        $scope.originalText = 'hello';
        $scope.filteredText = $filter('uppercase')($scope.originalText);
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$http.html b/1.2.30/docs/partials/api/ng/service/$http.html new file mode 100644 index 0000000000..f449e60002 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$http.html @@ -0,0 +1,1075 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $http

      +
        + +
      1. + - $httpProvider +
      2. + +
      3. + - service in module ng +
      4. +
      +
      + + + +
      +

      The $http service is a core Angular service that facilitates communication with the remote +HTTP servers via the browser's XMLHttpRequest +object or via JSONP.

      +

      For unit testing applications that use $http service, see +$httpBackend mock.

      +

      For a higher level of abstraction, please check out the $resource service.

      +

      The $http API is based on the deferred/promise APIs exposed by +the $q service. While for simple usage patterns this doesn't matter much, for advanced usage +it is important to familiarize yourself with these APIs and the guarantees they provide.

      +

      General usage

      +

      The $http service is a function which takes a single argument — a configuration object — +that is used to generate an HTTP request and returns a promise +with two $http specific methods: success and error.

      +
      $http({method: 'GET', url: '/someUrl'}).
      +  success(function(data, status, headers, config) {
      +    // this callback will be called asynchronously
      +    // when the response is available
      +  }).
      +  error(function(data, status, headers, config) {
      +    // called asynchronously if an error occurs
      +    // or server returns response with an error status.
      +  });
      +
      +

      Since the returned value of calling the $http function is a promise, you can also use +the then method to register callbacks, and these callbacks will receive a single argument – +an object representing the response. See the API signature and type info below for more +details.

      +

      A response status code between 200 and 299 is considered a success status and +will result in the success callback being called. Note that if the response is a redirect, +XMLHttpRequest will transparently follow it, meaning that the error callback will not be +called for such responses.

      +

      Writing Unit Tests that use $http

      +

      When unit testing (using ngMock), it is necessary to call +$httpBackend.flush() to flush each pending +request using trained responses.

      +
      $httpBackend.expectGET(...);
      +$http.get(...);
      +$httpBackend.flush();
      +
      +

      Shortcut methods

      +

      Shortcut methods are also available. All shortcut methods require passing in the URL, and +request data must be passed in for POST/PUT requests.

      +
      $http.get('/someUrl').success(successCallback);
      +$http.post('/someUrl', data).success(successCallback);
      +
      +

      Complete list of shortcut methods:

      + +

      Setting HTTP Headers

      +

      The $http service will automatically add certain HTTP headers to all requests. These defaults +can be fully configured by accessing the $httpProvider.defaults.headers configuration +object, which currently contains this default configuration:

      +
        +
      • $httpProvider.defaults.headers.common (headers that are common for all requests):
          +
        • Accept: application/json, text/plain, * / *
        • +
        +
      • +
      • $httpProvider.defaults.headers.post: (header defaults for POST requests)
          +
        • Content-Type: application/json
        • +
        +
      • +
      • $httpProvider.defaults.headers.put (header defaults for PUT requests)
          +
        • Content-Type: application/json
        • +
        +
      • +
      +

      To add or overwrite these defaults, simply add or remove a property from these configuration +objects. To add headers for an HTTP method other than POST or PUT, simply add a new object +with the lowercased HTTP method name as the key, e.g. +`$httpProvider.defaults.headers.get = { 'My-Header' : 'value' }.

      +

      The defaults can also be set at runtime via the $http.defaults object in the same +fashion. For example:

      +
      module.run(function($http) {
      +$http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w'
      +});
      +
      +

      In addition, you can supply a headers property in the config object passed when +calling $http(config), which overrides the defaults without changing them globally.

      +

      To explicitly remove a header automatically added via $httpProvider.defaults.headers on a per request basis, +Use the headers property, setting the desired header to undefined. For example:

      +
      var req = {
      +method: 'POST',
      +url: 'http://example.com',
      +headers: {
      +  'Content-Type': undefined
      +},
      +data: { test: 'test' },
      +}
      +
      +$http(req).success(function(){...}).error(function(){...});
      +
      +

      Transforming Requests and Responses

      +

      Both requests and responses can be transformed using transform functions. By default, Angular +applies these transformations:

      +

      Request transformations:

      +
        +
      • If the data property of the request configuration object contains an object, serialize it +into JSON format.
      • +
      +

      Response transformations:

      +
        +
      • If XSRF prefix is detected, strip it (see Security Considerations section below).
      • +
      • If JSON response is detected, deserialize it using a JSON parser.
      • +
      +

      To globally augment or override the default transforms, modify the +$httpProvider.defaults.transformRequest and $httpProvider.defaults.transformResponse +properties. These properties are by default an array of transform functions, which allows you +to push or unshift a new transformation function into the transformation chain. You can +also decide to completely override any default transformations by assigning your +transformation functions to these properties directly without the array wrapper. These defaults +are again available on the $http factory at run-time, which may be useful if you have run-time +services you wish to be involved in your transformations.

      +

      Similarly, to locally override the request/response transforms, augment the +transformRequest and/or transformResponse properties of the configuration object passed +into $http.

      +

      Caching

      +

      To enable caching, set the request configuration cache property to true (to use default +cache) or to a custom cache object (built with $cacheFactory). +When the cache is enabled, $http stores the response from the server in the specified +cache. The next time the same request is made, the response is served from the cache without +sending a request to the server.

      +

      Note that even if the response is served from cache, delivery of the data is asynchronous in +the same way that real requests are.

      +

      If there are multiple GET requests for the same URL that should be cached using the same +cache, but the cache is not populated yet, only one request to the server will be made and +the remaining requests will be fulfilled using the response from the first request.

      +

      You can change the default cache to a new object (built with +$cacheFactory) by updating the +$http.defaults.cache property. All requests who set +their cache property to true will now use this cache object.

      +

      If you set the default cache to false then only requests that specify their own custom +cache object will be cached.

      +

      Interceptors

      +

      Before you start creating interceptors, be sure to understand the +$q and deferred/promise APIs.

      +

      For purposes of global error handling, authentication, or any kind of synchronous or +asynchronous pre-processing of request or postprocessing of responses, it is desirable to be +able to intercept requests before they are handed to the server and +responses before they are handed over to the application code that +initiated these requests. The interceptors leverage the promise APIs to fulfill this need for both synchronous and asynchronous pre-processing.

      +

      The interceptors are service factories that are registered with the $httpProvider by +adding them to the $httpProvider.interceptors array. The factory is called and +injected with dependencies (if specified) and returns the interceptor.

      +

      There are two kinds of interceptors (and two kinds of rejection interceptors):

      +
        +
      • request: interceptors get called with a http config object. The function is free to +modify the config object or create a new one. The function needs to return the config +object directly, or a promise containing the config or a new config object.
      • +
      • requestError: interceptor gets called when a previous interceptor threw an error or +resolved with a rejection.
      • +
      • response: interceptors get called with http response object. The function is free to +modify the response object or create a new one. The function needs to return the response +object directly, or as a promise containing the response or a new response object.
      • +
      • responseError: interceptor gets called when a previous interceptor threw an error or +resolved with a rejection.
      • +
      +
      // register the interceptor as a service
      +$provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
      +  return {
      +    // optional method
      +    'request': function(config) {
      +      // do something on success
      +      return config;
      +    },
      +
      +    // optional method
      +   'requestError': function(rejection) {
      +      // do something on error
      +      if (canRecover(rejection)) {
      +        return responseOrNewPromise
      +      }
      +      return $q.reject(rejection);
      +    },
      +
      +
      +
      +    // optional method
      +    'response': function(response) {
      +      // do something on success
      +      return response;
      +    },
      +
      +    // optional method
      +   'responseError': function(rejection) {
      +      // do something on error
      +      if (canRecover(rejection)) {
      +        return responseOrNewPromise
      +      }
      +      return $q.reject(rejection);
      +    }
      +  };
      +});
      +
      +$httpProvider.interceptors.push('myHttpInterceptor');
      +
      +
      +// alternatively, register the interceptor via an anonymous factory
      +$httpProvider.interceptors.push(function($q, dependency1, dependency2) {
      +  return {
      +   'request': function(config) {
      +       // same as above
      +    },
      +
      +    'response': function(response) {
      +       // same as above
      +    }
      +  };
      +});
      +
      +

      Response interceptors (DEPRECATED)

      +

      Before you start creating interceptors, be sure to understand the +$q and deferred/promise APIs.

      +

      For purposes of global error handling, authentication or any kind of synchronous or +asynchronous preprocessing of received responses, it is desirable to be able to intercept +responses for http requests before they are handed over to the application code that +initiated these requests. The response interceptors leverage the promise apis to fulfil this need for both synchronous and asynchronous preprocessing.

      +

      The interceptors are service factories that are registered with the $httpProvider by +adding them to the $httpProvider.responseInterceptors array. The factory is called and +injected with dependencies (if specified) and returns the interceptor — a function that +takes a promise and returns the original or a new promise.

      +
      // register the interceptor as a service
      +$provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
      +  return function(promise) {
      +    return promise.then(function(response) {
      +      // do something on success
      +      return response;
      +    }, function(response) {
      +      // do something on error
      +      if (canRecover(response)) {
      +        return responseOrNewPromise
      +      }
      +      return $q.reject(response);
      +    });
      +  }
      +});
      +
      +$httpProvider.responseInterceptors.push('myHttpInterceptor');
      +
      +
      +// register the interceptor via an anonymous factory
      +$httpProvider.responseInterceptors.push(function($q, dependency1, dependency2) {
      +  return function(promise) {
      +    // same as above
      +  }
      +});
      +
      +

      Security Considerations

      +

      When designing web applications, consider security threats from:

      + +

      Both server and the client must cooperate in order to eliminate these threats. Angular comes +pre-configured with strategies that address these issues, but for this to work backend server +cooperation is required.

      +

      JSON Vulnerability Protection

      +

      A JSON vulnerability +allows third party website to turn your JSON resource URL into +JSONP request under some conditions. To +counter this your server can prefix all JSON requests with following string ")]}',\n". +Angular will automatically strip the prefix before processing it as JSON.

      +

      For example if your server needs to return:

      +
      ['one','two']
      +
      +

      which is vulnerable to attack, your server can return:

      +
      )]}',
      +['one','two']
      +
      +

      Angular will strip the prefix, before processing the JSON.

      +

      Cross Site Request Forgery (XSRF) Protection

      +

      XSRF is a technique by which +an unauthorized site can gain your user's private data. Angular provides a mechanism +to counter XSRF. When performing XHR requests, the $http service reads a token from a cookie +(by default, XSRF-TOKEN) and sets it as an HTTP header (X-XSRF-TOKEN). Since only +JavaScript that runs on your domain could read the cookie, your server can be assured that +the XHR came from JavaScript running on your domain. The header will not be set for +cross-domain requests.

      +

      To take advantage of this, your server needs to set a token in a JavaScript readable session +cookie called XSRF-TOKEN on the first HTTP GET request. On subsequent XHR requests the +server can verify that the cookie matches X-XSRF-TOKEN HTTP header, and therefore be sure +that only JavaScript running on your domain could have sent the request. The token must be +unique for each user and must be verifiable by the server (to prevent the JavaScript from +making up its own tokens). We recommend that the token is a digest of your site's +authentication cookie with a salt +for added security.

      +

      The name of the headers can be specified using the xsrfHeaderName and xsrfCookieName +properties of either $httpProvider.defaults at config-time, $http.defaults at run-time, +or the per-request config object.

      + +
      + + + + +
      + +

      Dependencies

      + + + + + +

      Usage

      + +

      $http(config);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + config + + + + object + +

      Object describing the request to be made and how it should be + processed. The object has following properties:

      +
        +
      • method{string} – HTTP method (e.g. 'GET', 'POST', etc)
      • +
      • url{string} – Absolute or relative URL of the resource that is being requested.
      • +
      • params{Object.<string|Object>} – Map of strings or objects which will be turned +to ?key1=value1&key2=value2 after the url. If the value is not a string, it will be +JSONified.
      • +
      • data{string|Object} – Data to be sent as the request message data.
      • +
      • headers{Object} – Map of strings or functions which return strings representing +HTTP headers to send to the server. If the return value of a function is null, the +header will not be sent.
      • +
      • xsrfHeaderName{string} – Name of HTTP header to populate with the XSRF token.
      • +
      • xsrfCookieName{string} – Name of cookie containing the XSRF token.
      • +
      • transformRequest – +{function(data, headersGetter)|Array.<function(data, headersGetter)>} – +transform function or an array of such functions. The transform function takes the http +request body and headers and returns its transformed (typically serialized) version.
      • +
      • transformResponse – +{function(data, headersGetter)|Array.<function(data, headersGetter)>} – +transform function or an array of such functions. The transform function takes the http +response body and headers and returns its transformed (typically deserialized) version.
      • +
      • cache{boolean|Cache} – If true, a default $http cache will be used to cache the +GET request, otherwise if a cache instance built with +$cacheFactory, this cache will be used for +caching.
      • +
      • timeout{number|Promise} – timeout in milliseconds, or promise +that should abort the request when resolved.
      • +
      • withCredentials - {boolean} - whether to set the withCredentials flag on the +XHR object. See requests with credentials +for more information.
      • +
      • responseType - {string} - see +requestType.
      • +
      + + +
      + +
      + +

      Returns

      + + + + + +
      HttpPromise

      Returns a promise object with the + standard then method and two http specific methods: success and error. The then + method takes two arguments a success and an error callback which will be called with a + response object. The success and error methods take a single argument - a function that + will be called when the request succeeds or fails respectively. The arguments passed into + these functions are destructured representation of the response object passed into the + then method. The response object has these properties:

      +
        +
      • data{string|Object} – The response body transformed with the transform +functions.
      • +
      • status{number} – HTTP status code of the response.
      • +
      • headers{function([headerName])} – Header getter function.
      • +
      • config{Object} – The configuration object that was used to generate the request.
      • +
      • statusText{string} – HTTP status text of the response.
      • +
      +
      + + +

      Methods

      +
        +
      • +

        get(url, [config]);

        + +

        +

        Shortcut method to perform GET request.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + string + +

        Relative or absolute URL specifying the destination of the request

        + + +
        + config + +
        (optional)
        +
        + Object + +

        Optional configuration object

        + + +
        + + + + + + +

        Returns

        + + + + + +
        HttpPromise

        Future object

        +
        + + +
      • + +
      • +

        delete(url, [config]);

        + +

        +

        Shortcut method to perform DELETE request.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + string + +

        Relative or absolute URL specifying the destination of the request

        + + +
        + config + +
        (optional)
        +
        + Object + +

        Optional configuration object

        + + +
        + + + + + + +

        Returns

        + + + + + +
        HttpPromise

        Future object

        +
        + + +
      • + + + +
      • +

        jsonp(url, [config]);

        + +

        +

        Shortcut method to perform JSONP request.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + string + +

        Relative or absolute URL specifying the destination of the request. + The name of the callback should be the string JSON_CALLBACK.

        + + +
        + config + +
        (optional)
        +
        + Object + +

        Optional configuration object

        + + +
        + + + + + + +

        Returns

        + + + + + +
        HttpPromise

        Future object

        +
        + + +
      • + +
      • +

        post(url, data, [config]);

        + +

        +

        Shortcut method to perform POST request.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + string + +

        Relative or absolute URL specifying the destination of the request

        + + +
        + data + + + + * + +

        Request content

        + + +
        + config + +
        (optional)
        +
        + Object + +

        Optional configuration object

        + + +
        + + + + + + +

        Returns

        + + + + + +
        HttpPromise

        Future object

        +
        + + +
      • + +
      • +

        put(url, data, [config]);

        + +

        +

        Shortcut method to perform PUT request.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + string + +

        Relative or absolute URL specifying the destination of the request

        + + +
        + data + + + + * + +

        Request content

        + + +
        + config + +
        (optional)
        +
        + Object + +

        Optional configuration object

        + + +
        + + + + + + +

        Returns

        + + + + + +
        HttpPromise

        Future object

        +
        + + +
      • + +
      • +

        patch(url, data, [config]);

        + +

        +

        Shortcut method to perform PATCH request.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + string + +

        Relative or absolute URL specifying the destination of the request

        + + +
        + data + + + + * + +

        Request content

        + + +
        + config + +
        (optional)
        +
        + Object + +

        Optional configuration object

        + + +
        + + + + + + +

        Returns

        + + + + + +
        HttpPromise

        Future object

        +
        + + +
      • +
      + + +

      Properties

      +
        +
      • +

        pendingRequests

        + + + + + +
        Array.<Object>

        Array of config objects for currently pending + requests. This is primarily meant to be used for debugging purposes.

        +
        +
      • + +
      • +

        defaults

        + + + + + +

        Runtime equivalent of the $httpProvider.defaults property. Allows configuration of +default headers, withCredentials as well as request and response transformations.

        +

        See "Setting HTTP Headers" and "Transforming Requests and Responses" sections above.

        +
        +
      • +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="FetchController">
      <select ng-model="method">
        <option>GET</option>
        <option>JSONP</option>
      </select>
      <input type="text" ng-model="url" size="80"/>
      <button id="fetchbtn" ng-click="fetch()">fetch</button><br>
      <button id="samplegetbtn" ng-click="updateModel('GET', 'http-hello.html')">Sample GET</button>
      <button id="samplejsonpbtn"
        ng-click="updateModel('JSONP',
                      'https://angularjs.org/greet.php?callback=JSON_CALLBACK&name=Super%20Hero')">
        Sample JSONP
      </button>
      <button id="invalidjsonpbtn"
        ng-click="updateModel('JSONP', 'https://angularjs.org/doesntexist&callback=JSON_CALLBACK')">
          Invalid JSONP
        </button>
      <pre>http status code: {{status}}</pre>
      <pre>http response data: {{data}}</pre>
      </div>
      +
      + +
      +
      angular.module('httpExample', [])
      .controller('FetchController', ['$scope', '$http', '$templateCache',
        function($scope, $http, $templateCache) {
          $scope.method = 'GET';
          $scope.url = 'http-hello.html';
      
          $scope.fetch = function() {
            $scope.code = null;
            $scope.response = null;
      
            $http({method: $scope.method, url: $scope.url, cache: $templateCache}).
              success(function(data, status) {
                $scope.status = status;
                $scope.data = data;
              }).
              error(function(data, status) {
                $scope.data = data || "Request failed";
                $scope.status = status;
            });
          };
      
          $scope.updateModel = function(method, url) {
            $scope.method = method;
            $scope.url = url;
          };
        }]);
      +
      + +
      +
      Hello, $http!
      +
      + +
      +
      var status = element(by.binding('status'));
      var data = element(by.binding('data'));
      var fetchBtn = element(by.id('fetchbtn'));
      var sampleGetBtn = element(by.id('samplegetbtn'));
      var sampleJsonpBtn = element(by.id('samplejsonpbtn'));
      var invalidJsonpBtn = element(by.id('invalidjsonpbtn'));
      
      it('should make an xhr GET request', function() {
        sampleGetBtn.click();
        fetchBtn.click();
        expect(status.getText()).toMatch('200');
        expect(data.getText()).toMatch(/Hello, \$http!/);
      });
      
      // Commented out due to flakes. See https://github.com/angular/angular.js/issues/9185
      // it('should make a JSONP request to angularjs.org', function() {
      //   sampleJsonpBtn.click();
      //   fetchBtn.click();
      //   expect(status.getText()).toMatch('200');
      //   expect(data.getText()).toMatch(/Super Hero!/);
      // });
      
      it('should make JSONP request to invalid URL and invoke the error handler',
          function() {
        invalidJsonpBtn.click();
        fetchBtn.click();
        expect(status.getText()).toMatch('0');
        expect(data.getText()).toMatch('Request failed');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$httpBackend.html b/1.2.30/docs/partials/api/ng/service/$httpBackend.html new file mode 100644 index 0000000000..bf384f0b0c --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$httpBackend.html @@ -0,0 +1,58 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $httpBackend

      +
        + + + +
      1. + - service in module ng +
      2. +
      +
      + + + +
      +

      HTTP backend used by the service that delegates to +XMLHttpRequest object or JSONP and deals with browser incompatibilities.

      +

      You should never need to use this service directly, instead use the higher-level abstractions: +$http or $resource.

      +

      During testing this implementation is swapped with mock +$httpBackend which can be trained with responses.

      + +
      + + + + +
      + +

      Dependencies

      + + + + + + + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$interpolate.html b/1.2.30/docs/partials/api/ng/service/$interpolate.html new file mode 100644 index 0000000000..373879882d --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$interpolate.html @@ -0,0 +1,207 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $interpolate

      +
        + +
      1. + - $interpolateProvider +
      2. + +
      3. + - service in module ng +
      4. +
      +
      + + + +
      +

      Compiles a string with markup into an interpolation function. This service is used by the +HTML $compile service for data binding. See +$interpolateProvider for configuring the +interpolation markup.

      +
      var $interpolate = ...; // injected
      +var exp = $interpolate('Hello {{name | uppercase}}!');
      +expect(exp({name:'Angular'}).toEqual('Hello ANGULAR!');
      +
      + +
      + + + + +
      + +

      Dependencies

      + + + + + +

      Usage

      + +

      $interpolate(text, [mustHaveExpression], [trustedContext]);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + text + + + + string + +

      The text with markup to interpolate.

      + + +
      + mustHaveExpression + +
      (optional)
      +
      + boolean + +

      if set to true then the interpolation string must have + embedded expression in order to return an interpolation function. Strings with no + embedded expression will return null for the interpolation function.

      + + +
      + trustedContext + +
      (optional)
      +
      + string + +

      when provided, the returned function passes the interpolated + result through $sce.getTrusted(interpolatedResult, + trustedContext) before returning it. Refer to the $sce service that + provides Strict Contextual Escaping for details.

      + + +
      + +
      + +

      Returns

      + + + + + +
      function(context)

      an interpolation function which is used to compute the + interpolated string. The function has these parameters:

      +
        +
      • context: an object against which any expressions embedded in the strings are evaluated +against.
      • +
      +
      + + +

      Methods

      +
        +
      • +

        startSymbol();

        + +

        +

        Symbol to denote the start of expression in the interpolated string. Defaults to {{.

        +

        Use $interpolateProvider.startSymbol to change +the symbol.

        +
        + + + + + + +

        Returns

        + + + + + +
        string

        start symbol.

        +
        + + +
      • + +
      • +

        endSymbol();

        + +

        +

        Symbol to denote the end of expression in the interpolated string. Defaults to }}.

        +

        Use $interpolateProvider.endSymbol to change +the symbol.

        +
        + + + + + + +

        Returns

        + + + + + +
        string

        end symbol.

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$interval.html b/1.2.30/docs/partials/api/ng/service/$interval.html new file mode 100644 index 0000000000..ee9159df29 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$interval.html @@ -0,0 +1,247 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $interval

      +
        + + + +
      1. + - service in module ng +
      2. +
      +
      + + + +
      +

      Angular's wrapper for window.setInterval. The fn function is executed every delay +milliseconds.

      +

      The return value of registering an interval function is a promise. This promise will be +notified upon each tick of the interval, and will be resolved after count iterations, or +run indefinitely if count is not defined. The value of the notification will be the +number of iterations that have run. +To cancel an interval, call $interval.cancel(promise).

      +

      In tests you can use $interval.flush(millis) to +move forward by millis milliseconds and trigger any functions scheduled to run in that +time.

      +
      +Note: Intervals created by this service must be explicitly destroyed when you are finished +with them. In particular they are not automatically destroyed when a controller's scope or a +directive's element are destroyed. +You should take this into consideration and make sure to always cancel the interval at the +appropriate moment. See the example below for more details on how and when to do this. +
      +
      + + + + +
      + + + + +

      Usage

      + +

      $interval(fn, delay, [count], [invokeApply]);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + fn + + + + function() + +

      A function that should be called repeatedly.

      + + +
      + delay + + + + number + +

      Number of milliseconds between each function call.

      + + +
      + count + +
      (optional)
      +
      + number + +

      Number of times to repeat. If not set, or 0, will repeat + indefinitely.

      + +

      (default: 0)

      +
      + invokeApply + +
      (optional)
      +
      + boolean + +

      If set to false skips model dirty checking, otherwise + will invoke fn within the $apply block.

      + +

      (default: true)

      +
      + +
      + +

      Returns

      + + + + + +
      promise

      A promise which will be notified on each iteration.

      +
      + + +

      Methods

      +
        +
      • +

        cancel(promise);

        + +

        +

        Cancels a task associated with the promise.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + promise + + + + promise + +

        returned by the $interval function.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        boolean

        Returns true if the task was successfully canceled.

        +
        + + +
      • +
      + + + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
      angular.module('intervalExample', [])
        .controller('ExampleController', ['$scope', '$interval',
          function($scope, $interval) {
            $scope.format = 'M/d/yy h:mm:ss a';
            $scope.blood_1 = 100;
            $scope.blood_2 = 120;
      
            var stop;
            $scope.fight = function() {
              // Don't start a new fight if we are already fighting
              if ( angular.isDefined(stop) ) return;
      
              stop = $interval(function() {
                if ($scope.blood_1 > 0 && $scope.blood_2 > 0) {
                  $scope.blood_1 = $scope.blood_1 - 3;
                  $scope.blood_2 = $scope.blood_2 - 4;
                } else {
                  $scope.stopFight();
                }
              }, 100);
            };
      
            $scope.stopFight = function() {
              if (angular.isDefined(stop)) {
                $interval.cancel(stop);
                stop = undefined;
              }
            };
      
            $scope.resetFight = function() {
              $scope.blood_1 = 100;
              $scope.blood_2 = 120;
            };
      
            $scope.$on('$destroy', function() {
              // Make sure that the interval is destroyed too
              $scope.stopFight();
            });
          }])
        // Register the 'myCurrentTime' directive factory method.
        // We inject $interval and dateFilter service since the factory method is DI.
        .directive('myCurrentTime', ['$interval', 'dateFilter',
          function($interval, dateFilter) {
            // return the directive link function. (compile function not needed)
            return function(scope, element, attrs) {
              var format,  // date format
                  stopTime; // so that we can cancel the time updates
      
              // used to update the UI
              function updateTime() {
                element.text(dateFilter(new Date(), format));
              }
      
              // watch the expression, and update the UI on change.
              scope.$watch(attrs.myCurrentTime, function(value) {
                format = value;
                updateTime();
              });
      
              stopTime = $interval(updateTime, 1000);
      
              // listen on DOM destroy (removal) event, and cancel the next UI update
              // to prevent updating time after the DOM element was removed.
              element.bind('$destroy', function() {
                $interval.cancel(stopTime);
              });
            }
          }]);
      </script>
      
      <div>
      <div ng-controller="ExampleController">
        Date format: <input ng-model="format"> <hr/>
        Current time is: <span my-current-time="format"></span>
        <hr/>
        Blood 1 : <font color='red'>{{blood_1}}</font>
        Blood 2 : <font color='red'>{{blood_2}}</font>
        <button type="button" data-ng-click="fight()">Fight</button>
        <button type="button" data-ng-click="stopFight()">StopFight</button>
        <button type="button" data-ng-click="resetFight()">resetFight</button>
      </div>
      </div>
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$locale.html b/1.2.30/docs/partials/api/ng/service/$locale.html new file mode 100644 index 0000000000..754f9dbdf2 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$locale.html @@ -0,0 +1,52 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $locale

      +
        + + + +
      1. + - service in module ng +
      2. +
      +
      + + + +
      +

      $locale service provides localization rules for various Angular components. As of right now the +only public api is:

      +
        +
      • id{string} – locale id formatted as languageId-countryId (e.g. en-us)
      • +
      + +
      + + + + +
      + + + + + + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$location.html b/1.2.30/docs/partials/api/ng/service/$location.html new file mode 100644 index 0000000000..be68ed7a2a --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$location.html @@ -0,0 +1,498 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $location

      +
        + +
      1. + - $locationProvider +
      2. + +
      3. + - service in module ng +
      4. +
      +
      + + + +
      +

      The $location service parses the URL in the browser address bar (based on the +window.location) and makes the URL +available to your application. Changes to the URL in the address bar are reflected into +$location service and changes to $location are reflected into the browser address bar.

      +

      The $location service:

      +
        +
      • Exposes the current URL in the browser address bar, so you can
          +
        • Watch and observe the URL.
        • +
        • Change the URL.
        • +
        +
      • +
      • Synchronizes the URL with the browser when the user
          +
        • Changes the address bar.
        • +
        • Clicks the back or forward button (or clicks a History link).
        • +
        • Clicks on a link.
        • +
        +
      • +
      • Represents the URL object as a set of methods (protocol, host, port, path, search, hash).
      • +
      +

      For more information see Developer Guide: Using $location

      + +
      + + + + +
      + +

      Dependencies

      + + + + + + + + +

      Methods

      +
        +
      • +

        absUrl();

        + +

        +

        This method is getter only.

        +

        Return full url representation with all segments encoded according to rules specified in +RFC 3986.

        +
        + + + + + + +

        Returns

        + + + + + +
        string

        full url

        +
        + + +
      • + +
      • +

        url([url]);

        + +

        +

        This method is getter / setter.

        +

        Return url (e.g. /path?a=b#hash) when called without any parameter.

        +

        Change path, search and hash, when called with parameter and return $location.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + +
        (optional)
        +
        + string + +

        New url without base prefix (e.g. /path?a=b#hash)

        + + +
        + + + + + + +

        Returns

        + + + + + +
        string

        url

        +
        + + +
      • + +
      • +

        protocol();

        + +

        +

        This method is getter only.

        +

        Return protocol of current url.

        +
        + + + + + + +

        Returns

        + + + + + +
        string

        protocol of current url

        +
        + + +
      • + +
      • +

        host();

        + +

        +

        This method is getter only.

        +

        Return host of current url.

        +
        + + + + + + +

        Returns

        + + + + + +
        string

        host of current url.

        +
        + + +
      • + +
      • +

        port();

        + +

        +

        This method is getter only.

        +

        Return port of current url.

        +
        + + + + + + +

        Returns

        + + + + + +
        Number

        port

        +
        + + +
      • + +
      • +

        path([path]);

        + +

        +

        This method is getter / setter.

        +

        Return path of current url when called without any parameter.

        +

        Change path when called with parameter and return $location.

        +

        Note: Path should always begin with forward slash (/), this method will add the forward slash +if it is missing.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + path + +
        (optional)
        +
        + stringnumber + +

        New path

        + + +
        + + + + + + +

        Returns

        + + + + + +
        string

        path

        +
        + + +
      • + + + +
      • +

        hash([hash]);

        + +

        +

        This method is getter / setter.

        +

        Return hash fragment when called without any parameter.

        +

        Change hash fragment when called with parameter and return $location.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + hash + +
        (optional)
        +
        + stringnumber + +

        New hash fragment

        + + +
        + + + + + + +

        Returns

        + + + + + +
        string

        hash

        +
        + + +
      • + +
      • +

        replace();

        + +

        +

        If called, all changes to $location during current $digest will be replacing current history +record, instead of adding new one.

        +
        + + + + + + + +
      • +
      + +

      Events

      +
        +
      • +

        $locationChangeStart

        +

        Broadcasted before a URL will change. This change can be prevented by calling +preventDefault method of the event. See $rootScope.Scope for more +details about event object. Upon successful change +$locationChangeSuccess is fired.

        +
        +
        +

        Type:

        +
        broadcast
        +
        +
        +

        Target:

        +
        root scope
        +
        +
      • + +
      • +

        $locationChangeSuccess

        +

        Broadcasted after a URL was changed.

        +
        +
        +

        Type:

        +
        broadcast
        +
        +
        +

        Target:

        +
        root scope
        +
        +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$log.html b/1.2.30/docs/partials/api/ng/service/$log.html new file mode 100644 index 0000000000..3e77058c76 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$log.html @@ -0,0 +1,170 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $log

      +
        + +
      1. + - $logProvider +
      2. + +
      3. + - service in module ng +
      4. +
      +
      + + + +
      +

      Simple service for logging. Default implementation safely writes the message +into the browser's console (if present).

      +

      The main purpose of this service is to simplify debugging and troubleshooting.

      +

      The default is to log debug messages. You can use +ng.$logProvider#debugEnabled to change this.

      + +
      + + + + +
      + +

      Dependencies

      + + + + + + + + +

      Methods

      +
        +
      • +

        log();

        + +

        +

        Write a log message

        +
        + + + + + + + +
      • + +
      • +

        info();

        + +

        +

        Write an information message

        +
        + + + + + + + +
      • + +
      • +

        warn();

        + +

        +

        Write a warning message

        +
        + + + + + + + +
      • + +
      • +

        error();

        + +

        +

        Write an error message

        +
        + + + + + + + +
      • + +
      • +

        debug();

        + +

        +

        Write a debug message

        +
        + + + + + + + +
      • +
      + + + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('logExample', [])
        .controller('LogController', ['$scope', '$log', function($scope, $log) {
          $scope.$log = $log;
          $scope.message = 'Hello World!';
        }]);
      +
      + +
      +
      <div ng-controller="LogController">
        <p>Reload this page with open console, enter text and hit the log button...</p>
        Message:
        <input type="text" ng-model="message"/>
        <button ng-click="$log.log(message)">log</button>
        <button ng-click="$log.warn(message)">warn</button>
        <button ng-click="$log.info(message)">info</button>
        <button ng-click="$log.error(message)">error</button>
      </div>
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$parse.html b/1.2.30/docs/partials/api/ng/service/$parse.html new file mode 100644 index 0000000000..540a20a01d --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$parse.html @@ -0,0 +1,125 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $parse

      +
        + +
      1. + - $parseProvider +
      2. + +
      3. + - service in module ng +
      4. +
      +
      + + + +
      +

      Converts Angular expression into a function.

      +
      var getter = $parse('user.name');
      +var setter = getter.assign;
      +var context = {user:{name:'angular'}};
      +var locals = {user:{name:'local'}};
      +
      +expect(getter(context)).toEqual('angular');
      +setter(context, 'newValue');
      +expect(context.user.name).toEqual('newValue');
      +expect(getter(context, locals)).toEqual('local');
      +
      + +
      + + + + +
      + + + + +

      Usage

      + +

      $parse(expression);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + expression + + + + string + +

      String expression to compile.

      + + +
      + +
      + +

      Returns

      + + + + + +
      function(context, locals)

      a function which represents the compiled expression:

      +
        +
      • context{object} – an object against which any expressions embedded in the strings +are evaluated against (typically a scope object).
      • +
      • locals{object=} – local variables context object, useful for overriding values in +context.

        +

        The returned function also has the following properties:

        +
          +
        • literal{boolean} – whether the expression's top-level node is a JavaScript +literal.
        • +
        • constant{boolean} – whether the expression is made entirely of JavaScript +constant literals.
        • +
        • assign{?function(context, value)} – if the expression is assignable, this will be +set to a function to change its value on the given context.
        • +
        +
      • +
      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$q.html b/1.2.30/docs/partials/api/ng/service/$q.html new file mode 100644 index 0000000000..e9595d2d42 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$q.html @@ -0,0 +1,413 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $q

      +
        + + + +
      1. + - service in module ng +
      2. +
      +
      + + + +
      +

      A service that helps you run functions asynchronously, and use their return values (or exceptions) +when they are done processing.

      +

      This is an implementation of promises/deferred objects inspired by +Kris Kowal's Q.

      +

      The CommonJS Promise proposal describes a promise as an +interface for interacting with an object that represents the result of an action that is +performed asynchronously, and may or may not be finished at any given point in time.

      +

      From the perspective of dealing with error handling, deferred and promise APIs are to +asynchronous programming what try, catch and throw keywords are to synchronous programming.

      +
      // for the purpose of this example let's assume that variables `$q`, `scope` and `okToGreet`
      +// are available in the current lexical scope (they could have been injected or passed in).
      +
      +function asyncGreet(name) {
      +  var deferred = $q.defer();
      +
      +  setTimeout(function() {
      +    deferred.notify('About to greet ' + name + '.');
      +
      +    if (okToGreet(name)) {
      +      deferred.resolve('Hello, ' + name + '!');
      +    } else {
      +      deferred.reject('Greeting ' + name + ' is not allowed.');
      +    }
      +  }, 1000);
      +
      +  return deferred.promise;
      +}
      +
      +var promise = asyncGreet('Robin Hood');
      +promise.then(function(greeting) {
      +  alert('Success: ' + greeting);
      +}, function(reason) {
      +  alert('Failed: ' + reason);
      +}, function(update) {
      +  alert('Got notification: ' + update);
      +});
      +
      +

      At first it might not be obvious why this extra complexity is worth the trouble. The payoff +comes in the way of guarantees that promise and deferred APIs make, see +https://github.com/kriskowal/uncommonjs/blob/master/promises/specification.md.

      +

      Additionally the promise api allows for composition that is very hard to do with the +traditional callback (CPS) approach. +For more on this please see the Q documentation especially the +section on serial or parallel joining of promises.

      +

      The Deferred API

      +

      A new instance of deferred is constructed by calling $q.defer().

      +

      The purpose of the deferred object is to expose the associated Promise instance as well as APIs +that can be used for signaling the successful or unsuccessful completion, as well as the status +of the task.

      +

      Methods

      +
        +
      • resolve(value) – resolves the derived promise with the value. If the value is a rejection +constructed via $q.reject, the promise will be rejected instead.
      • +
      • reject(reason) – rejects the derived promise with the reason. This is equivalent to +resolving it with a rejection constructed via $q.reject.
      • +
      • notify(value) - provides updates on the status of the promise's execution. This may be called +multiple times before the promise is either resolved or rejected.
      • +
      +

      Properties

      +
        +
      • promise – {Promise} – promise object associated with this deferred.
      • +
      +

      The Promise API

      +

      A new promise instance is created when a deferred instance is created and can be retrieved by +calling deferred.promise.

      +

      The purpose of the promise object is to allow for interested parties to get access to the result +of the deferred task when it completes.

      +

      Methods

      +
        +
      • then(successCallback, errorCallback, notifyCallback) – regardless of when the promise was or +will be resolved or rejected, then calls one of the success or error callbacks asynchronously +as soon as the result is available. The callbacks are called with a single argument: the result +or rejection reason. Additionally, the notify callback may be called zero or more times to +provide a progress indication, before the promise is resolved or rejected.

        +

        This method returns a new promise which is resolved or rejected via the return value of the +successCallback, errorCallback. It also notifies via the return value of the +notifyCallback method. The promise can not be resolved or rejected from the notifyCallback +method.

        +
      • +
      • catch(errorCallback) – shorthand for promise.then(null, errorCallback)

        +

        Because catch is a reserved word in JavaScript and reserved keywords are not supported as +property names by ES3, you'll need to invoke the method like promise['catch'](callback) or +promise.then(null, errorCallback) to make your code IE8 and Android 2.x compatible.

        +
      • +
      • finally(callback) – allows you to observe either the fulfillment or rejection of a promise, +but to do so without modifying the final value. This is useful to release resources or do some +clean-up that needs to be done whether the promise was rejected or resolved. See the full +specification for +more information.

        +

        Because finally is a reserved word in JavaScript and reserved keywords are not supported as +property names by ES3, you'll need to invoke the method like promise['finally'](callback) to +make your code IE8 and Android 2.x compatible.

        +
      • +
      +

      Chaining promises

      +

      Because calling the then method of a promise returns a new derived promise, it is easily +possible to create a chain of promises:

      +
      promiseB = promiseA.then(function(result) {
      +  return result + 1;
      +});
      +
      +// promiseB will be resolved immediately after promiseA is resolved and its value
      +// will be the result of promiseA incremented by 1
      +
      +

      It is possible to create chains of any length and since a promise can be resolved with another +promise (which will defer its resolution further), it is possible to pause/defer resolution of +the promises at any point in the chain. This makes it possible to implement powerful APIs like +$http's response interceptors.

      +

      Differences between Kris Kowal's Q and $q

      +

      There are two main differences:

      +
        +
      • $q is integrated with the $rootScope.Scope Scope model observation +mechanism in angular, which means faster propagation of resolution or rejection into your +models and avoiding unnecessary browser repaints, which would result in flickering UI.
      • +
      • Q has many more features than $q, but that comes at a cost of bytes. $q is tiny, but contains +all the important functionality needed for common async tasks.

        +

        Testing

        +
        it('should simulate promise', inject(function($q, $rootScope) {
        +  var deferred = $q.defer();
        +  var promise = deferred.promise;
        +  var resolvedValue;
        +
        +  promise.then(function(value) { resolvedValue = value; });
        +  expect(resolvedValue).toBeUndefined();
        +
        +  // Simulate resolving of promise
        +  deferred.resolve(123);
        +  // Note that the 'then' function does not get called synchronously.
        +  // This is because we want the promise API to always be async, whether or not
        +  // it got called synchronously or asynchronously.
        +  expect(resolvedValue).toBeUndefined();
        +
        +  // Propagate promise resolution to 'then' functions using $apply().
        +  $rootScope.$apply();
        +  expect(resolvedValue).toEqual(123);
        +}));
        +
        +
      • +
      + +
      + + + + +
      + +

      Dependencies

      + + + + + + + + +

      Methods

      +
        +
      • +

        defer();

        + +

        +

        Creates a Deferred object which represents a task which will finish in the future.

        +
        + + + + + + +

        Returns

        + + + + + +
        Deferred

        Returns a new instance of deferred.

        +
        + + +
      • + +
      • +

        reject(reason);

        + +

        +

        Creates a promise that is resolved as rejected with the specified reason. This api should be +used to forward rejection in a chain of promises. If you are dealing with the last promise in +a promise chain, you don't need to worry about it.

        +

        When comparing deferreds/promises to the familiar behavior of try/catch/throw, think of +reject as the throw keyword in JavaScript. This also means that if you "catch" an error via +a promise error callback and you want to forward the error to the promise derived from the +current promise, you have to "rethrow" the error by returning a rejection constructed via +reject.

        +
        promiseB = promiseA.then(function(result) {
        +  // success: do something and resolve promiseB
        +  //          with the old or a new result
        +  return result;
        +}, function(reason) {
        +  // error: handle the error if possible and
        +  //        resolve promiseB with newPromiseOrValue,
        +  //        otherwise forward the rejection to promiseB
        +  if (canHandle(reason)) {
        +   // handle the error and recover
        +   return newPromiseOrValue;
        +  }
        +  return $q.reject(reason);
        +});
        +
        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + reason + + + + * + +

        Constant, message, exception or an object representing the rejection reason.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        Promise

        Returns a promise that was already resolved as rejected with the reason.

        +
        + + +
      • + +
      • +

        when(value);

        + +

        +

        Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise. +This is useful when you are dealing with an object that might or might not be a promise, or if +the promise comes from a source that can't be trusted.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + + + + * + +

        Value or a promise

        + + +
        + + + + + + +

        Returns

        + + + + + +
        Promise

        Returns a promise of the passed value or promise

        +
        + + +
      • + +
      • +

        all(promises);

        + +

        +

        Combines multiple promises into a single promise that is resolved when all of the input +promises are resolved.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + promises + + + + Array.<Promise>Object.<Promise> + +

        An array or hash of promises.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        Promise

        Returns a single promise that will be resolved with an array/hash of values, + each value corresponding to the promise at the same index/key in the promises array/hash. + If any of the promises is resolved with a rejection, this resulting promise will be rejected + with the same rejection value.

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$rootElement.html b/1.2.30/docs/partials/api/ng/service/$rootElement.html new file mode 100644 index 0000000000..84476157fd --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$rootElement.html @@ -0,0 +1,51 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $rootElement

      +
        + + + +
      1. + - service in module ng +
      2. +
      +
      + + + +
      +

      The root element of Angular application. This is either the element where ngApp was declared or the element passed into +angular.bootstrap. The element represent the root element of application. It is also the +location where the applications $injector service gets +published, it can be retrieved using $rootElement.injector().

      + +
      + + + + +
      + + + + + + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$rootScope.html b/1.2.30/docs/partials/api/ng/service/$rootScope.html new file mode 100644 index 0000000000..adeb8d6ac8 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$rootScope.html @@ -0,0 +1,54 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $rootScope

      +
        + +
      1. + - $rootScopeProvider +
      2. + +
      3. + - service in module ng +
      4. +
      +
      + + + +
      +

      Every application has a single root scope. +All other scopes are descendant scopes of the root scope. Scopes provide separation +between the model and the view, via a mechanism for watching the model for changes. +They also provide an event emission/broadcast and subscription facility. See the +developer guide on scopes.

      + +
      + + + + +
      + + + + + + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$sce.html b/1.2.30/docs/partials/api/ng/service/$sce.html new file mode 100644 index 0000000000..dea43b5819 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$sce.html @@ -0,0 +1,1383 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $sce

      +
        + +
      1. + - $sceProvider +
      2. + +
      3. + - service in module ng +
      4. +
      +
      + + + +
      +

      $sce is a service that provides Strict Contextual Escaping services to AngularJS.

      +

      Strict Contextual Escaping

      +

      Strict Contextual Escaping (SCE) is a mode in which AngularJS requires bindings in certain +contexts to result in a value that is marked as safe to use for that context. One example of +such a context is binding arbitrary html controlled by the user via ng-bind-html. We refer +to these contexts as privileged or SCE contexts.

      +

      As of version 1.2, Angular ships with SCE enabled by default.

      +

      Note: When enabled (the default), IE8 in quirks mode is not supported. In this mode, IE8 allows +one to execute arbitrary javascript by the use of the expression() syntax. Refer +http://blogs.msdn.com/b/ie/archive/2008/10/16/ending-expressions.aspx to learn more about them. +You can ensure your document is in standards mode and not quirks mode by adding <!doctype html> +to the top of your HTML document.

      +

      SCE assists in writing code in way that (a) is secure by default and (b) makes auditing for +security vulnerabilities such as XSS, clickjacking, etc. a lot easier.

      +

      Here's an example of a binding in a privileged context:

      +
      <input ng-model="userHtml">
      +<div ng-bind-html="userHtml"></div>
      +
      +

      Notice that ng-bind-html is bound to userHtml controlled by the user. With SCE +disabled, this application allows the user to render arbitrary HTML into the DIV. +In a more realistic example, one may be rendering user comments, blog articles, etc. via +bindings. (HTML is just one example of a context where rendering user controlled input creates +security vulnerabilities.)

      +

      For the case of HTML, you might use a library, either on the client side, or on the server side, +to sanitize unsafe HTML before binding to the value and rendering it in the document.

      +

      How would you ensure that every place that used these types of bindings was bound to a value that +was sanitized by your library (or returned as safe for rendering by your server?) How can you +ensure that you didn't accidentally delete the line that sanitized the value, or renamed some +properties/fields and forgot to update the binding to the sanitized value?

      +

      To be secure by default, you want to ensure that any such bindings are disallowed unless you can +determine that something explicitly says it's safe to use a value for binding in that +context. You can then audit your code (a simple grep would do) to ensure that this is only done +for those values that you can easily tell are safe - because they were received from your server, +sanitized by your library, etc. You can organize your codebase to help with this - perhaps +allowing only the files in a specific directory to do this. Ensuring that the internal API +exposed by that code doesn't markup arbitrary values as safe then becomes a more manageable task.

      +

      In the case of AngularJS' SCE service, one uses $sce.trustAs +(and shorthand methods such as $sce.trustAsHtml, etc.) to +obtain values that will be accepted by SCE / privileged contexts.

      +

      How does it work?

      +

      In privileged contexts, directives and code will bind to the result of $sce.getTrusted(context, value) rather than to the value directly. Directives use $sce.parseAs rather than $parse to watch attribute bindings, which performs the +$sce.getTrusted behind the scenes on non-constant literals.

      +

      As an example, ngBindHtml uses $sce.parseAsHtml(binding expression). Here's the actual code (slightly +simplified):

      +
      var ngBindHtmlDirective = ['$sce', function($sce) {
      +return function(scope, element, attr) {
      +  scope.$watch($sce.parseAsHtml(attr.ngBindHtml), function(value) {
      +    element.html(value || '');
      +  });
      +};
      +}];
      +
      +

      Impact on loading templates

      +

      This applies both to the ng-include directive as well as +templateUrl's specified by directives.

      +

      By default, Angular only loads templates from the same domain and protocol as the application +document. This is done by calling $sce.getTrustedResourceUrl on the template URL. To load templates from other domains and/or +protocols, you may either either whitelist +them or wrap it into a trusted value.

      +

      Please note: +The browser's +Same Origin Policy +and Cross-Origin Resource Sharing (CORS) +policy apply in addition to this and may further restrict whether the template is successfully +loaded. This means that without the right CORS policy, loading templates from a different domain +won't work on all browsers. Also, loading templates from file:// URL does not work on some +browsers.

      +

      This feels like too much overhead for the developer?

      +

      It's important to remember that SCE only applies to interpolation expressions.

      +

      If your expressions are constant literals, they're automatically trusted and you don't need to +call $sce.trustAs on them (remember to include the ngSanitize module) (e.g. +<div ng-bind-html="'<b>implicitly trusted</b>'"></div>) just works.

      +

      Additionally, a[href] and img[src] automatically sanitize their URLs and do not pass them +through $sce.getTrusted. SCE doesn't play a role here.

      +

      The included $sceDelegate comes with sane defaults to allow you to load +templates in ng-include from your application's domain without having to even know about SCE. +It blocks loading templates from other domains or loading templates over http from an https +served document. You can change these by setting your own custom whitelists and blacklists for matching such URLs.

      +

      This significantly reduces the overhead. It is far easier to pay the small overhead and have an +application that's secure and can be audited to verify that with much more ease than bolting +security onto an application later.

      +

      +

      What trusted context types are supported?

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ContextNotes
      $sce.HTMLFor HTML that's safe to source into the application. The ngBindHtml directive uses this context for bindings. If an unsafe value is encountered and the $sanitize module is present this will sanitize the value instead of throwing an error.
      $sce.CSSFor CSS that's safe to source into the application. Currently unused. Feel free to use it in your own directives.
      $sce.URLFor URLs that are safe to follow as links. Currently unused (<a href= and <img src= sanitize their urls and don't constitute an SCE context.
      $sce.RESOURCE_URLFor URLs that are not only safe to follow as links, but whose contents are also safe to include in your application. Examples include ng-include, src / ngSrc bindings for tags other than IMG (e.g. IFRAME, OBJECT, etc.)

      Note that $sce.RESOURCE_URL makes a stronger statement about the URL than $sce.URL does and therefore contexts requiring values trusted for $sce.RESOURCE_URL can be used anywhere that values trusted for $sce.URL are required.
      $sce.JSFor JavaScript that is safe to execute in your application's context. Currently unused. Feel free to use it in your own directives.
      + +

      Each element in these arrays must be one of the following:

      +
        +
      • 'self'
          +
        • The special string, 'self', can be used to match against all URLs of the same +domain as the application document using the same protocol.
        • +
        +
      • +
      • String (except the special value 'self')
          +
        • The string is matched against the full normalized / absolute URL of the resource +being tested (substring matches are not good enough.)
        • +
        • There are exactly two wildcard sequences - * and **. All other characters +match themselves.
        • +
        • *: matches zero or more occurrences of any character other than one of the following 6 +characters: ':', '/', '.', '?', '&' and ';'. It's a useful wildcard for use +in a whitelist.
        • +
        • **: matches zero or more occurrences of any character. As such, it's not +not appropriate to use in for a scheme, domain, etc. as it would match too much. (e.g. +http://**.example.com/ would match http://evil.com/?ignore=.example.com/ and that might +not have been the intention.) Its usage at the very end of the path is ok. (e.g. +http://foo.example.com/templates/**).
        • +
        +
      • +
      • RegExp (see caveat below)
          +
        • Caveat: While regular expressions are powerful and offer great flexibility, their syntax +(and all the inevitable escaping) makes them harder to maintain. It's easy to +accidentally introduce a bug when one updates a complex expression (imho, all regexes should +have good test coverage.). For instance, the use of . in the regex is correct only in a +small number of cases. A . character in the regex used when matching the scheme or a +subdomain could be matched against a : or literal . that was likely not intended. It +is highly recommended to use the string patterns and only fall back to regular expressions +if they as a last resort.
        • +
        • The regular expression must be an instance of RegExp (i.e. not a string.) It is +matched against the entire normalized / absolute URL of the resource being tested +(even when the RegExp did not have the ^ and $ codes.) In addition, any flags +present on the RegExp (such as multiline, global, ignoreCase) are ignored.
        • +
        • If you are generating your JavaScript from some other templating engine (not +recommended, e.g. in issue #4006), +remember to escape your regular expression (and be aware that you might need more than +one level of escaping depending on your templating engine and the way you interpolated +the value.) Do make use of your platform's escaping mechanism as it might be good +enough before coding your own. e.g. Ruby has +Regexp.escape(str) +and Python has re.escape. +Javascript lacks a similar built in function for escaping. Take a look at Google +Closure library's goog.string.regExpEscape(s).
        • +
        +
      • +
      +

      Refer $sceDelegateProvider for an example.

      +

      Show me an example using SCE.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="myAppController as myCtrl">
      <i ng-bind-html="myCtrl.explicitlyTrustedHtml" id="explicitlyTrustedHtml"></i><br><br>
      <b>User comments</b><br>
      By default, HTML that isn't explicitly trusted (e.g. Alice's comment) is sanitized when
      $sanitize is available.  If $sanitize isn't available, this results in an error instead of an
      exploit.
      <div class="well">
        <div ng-repeat="userComment in myCtrl.userComments">
          <b>{{userComment.name}}</b>:
          <span ng-bind-html="userComment.htmlComment" class="htmlComment"></span>
          <br>
        </div>
      </div>
      </div>
      +
      + +
      +
      var mySceApp = angular.module('mySceApp', ['ngSanitize']);
      
      mySceApp.controller("myAppController", function myAppController($http, $templateCache, $sce) {
        var self = this;
        $http.get("test_data.json", {cache: $templateCache}).success(function(userComments) {
          self.userComments = userComments;
        });
        self.explicitlyTrustedHtml = $sce.trustAsHtml(
            '<span onmouseover="this.textContent=&quot;Explicitly trusted HTML bypasses ' +
            'sanitization.&quot;">Hover over this text.</span>');
      });
      +
      + +
      +
      [
      { "name": "Alice",
        "htmlComment":
            "<span onmouseover='this.textContent=\"PWN3D!\"'>Is <i>anyone</i> reading this?</span>"
      },
      { "name": "Bob",
        "htmlComment": "<i>Yes!</i>  Am I the only other one?"
      }
      ]
      +
      + +
      +
      describe('SCE doc demo', function() {
      it('should sanitize untrusted values', function() {
        expect(element.all(by.css('.htmlComment')).first().getInnerHtml())
            .toBe('<span>Is <i>anyone</i> reading this?</span>');
      });
      
      it('should NOT sanitize explicitly trusted values', function() {
        expect(element(by.id('explicitlyTrustedHtml')).getInnerHtml()).toBe(
            '<span onmouseover="this.textContent=&quot;Explicitly trusted HTML bypasses ' +
            'sanitization.&quot;">Hover over this text.</span>');
      });
      });
      +
      + + + +
      +
      + + +

      +

      Can I disable SCE completely?

      +

      Yes, you can. However, this is strongly discouraged. SCE gives you a lot of security benefits +for little coding overhead. It will be much harder to take an SCE disabled application and +either secure it on your own or enable SCE at a later stage. It might make sense to disable SCE +for cases where you have a lot of existing code that was written before SCE was introduced and +you're migrating them a module at a time.

      +

      That said, here's how you can completely disable SCE:

      +
      angular.module('myAppWithSceDisabledmyApp', []).config(function($sceProvider) {
      +// Completely disable SCE.  For demonstration purposes only!
      +// Do not use in new projects.
      +$sceProvider.enabled(false);
      +});
      +
      + +
      + + + + +
      + + + + +

      Usage

      + +

      $sce();

      + + + + + + + + + +

      Methods

      +
        +
      • +

        isEnabled();

        + +

        +

        Returns a boolean indicating if SCE is enabled.

        +
        + + + + + + +

        Returns

        + + + + + +
        Boolean

        true if SCE is enabled, false otherwise. If you want to set the value, you +have to do it at module config time on $sceProvider.

        +
        + + +
      • + +
      • +

        parseAs(type, expression);

        + +

        +

        Converts Angular expression into a function. This is like $parse and is identical when the expression is a literal constant. Otherwise, it +wraps the expression in a call to $sce.getTrusted(type, +result)

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + type + + + + string + +

        The kind of SCE context in which this result will be used.

        + + +
        + expression + + + + string + +

        String expression to compile.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        function(context, locals)

        a function which represents the compiled expression:

        +
          +
        • context{object} – an object against which any expressions embedded in the strings +are evaluated against (typically a scope object).
        • +
        • locals{object=} – local variables context object, useful for overriding values in +context.
        • +
        +
        + + +
      • + +
      • +

        trustAs(type, value);

        + +

        +

        Delegates to $sceDelegate.trustAs. As such, +returns an object that is trusted by angular for use in specified strict contextual +escaping contexts (such as ng-bind-html, ng-include, any src attribute +interpolation, any dom event binding attribute interpolation such as for onclick, etc.) +that uses the provided value. See * $sce for enabling strict contextual +escaping.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + type + + + + string + +

        The kind of context in which this value is safe for use. e.g. url, + resource_url, html, js and css.

        + + +
        + value + + + + * + +

        The value that that should be considered trusted/safe.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        A value that can be used to stand in for the provided value in places +where Angular expects a $sce.trustAs() return value.

        +
        + + +
      • + +
      • +

        trustAsHtml(value);

        + +

        +

        Shorthand method. $sce.trustAsHtml(value) → + $sceDelegate.trustAs($sce.HTML, value)

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + + + + * + +

        The value to trustAs.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        An object that can be passed to $sce.getTrustedHtml(value) to obtain the original value. (privileged directives + only accept expressions that are either literal constants or are the + return value of $sce.trustAs.)

        +
        + + +
      • + +
      • +

        trustAsUrl(value);

        + +

        +

        Shorthand method. $sce.trustAsUrl(value) → + $sceDelegate.trustAs($sce.URL, value)

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + + + + * + +

        The value to trustAs.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        An object that can be passed to $sce.getTrustedUrl(value) to obtain the original value. (privileged directives + only accept expressions that are either literal constants or are the + return value of $sce.trustAs.)

        +
        + + +
      • + +
      • +

        trustAsResourceUrl(value);

        + +

        +

        Shorthand method. $sce.trustAsResourceUrl(value) → + $sceDelegate.trustAs($sce.RESOURCE_URL, value)

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + + + + * + +

        The value to trustAs.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        An object that can be passed to $sce.getTrustedResourceUrl(value) to obtain the original value. (privileged directives + only accept expressions that are either literal constants or are the return + value of $sce.trustAs.)

        +
        + + +
      • + +
      • +

        trustAsJs(value);

        + +

        +

        Shorthand method. $sce.trustAsJs(value) → + $sceDelegate.trustAs($sce.JS, value)

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + + + + * + +

        The value to trustAs.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        An object that can be passed to $sce.getTrustedJs(value) to obtain the original value. (privileged directives + only accept expressions that are either literal constants or are the + return value of $sce.trustAs.)

        +
        + + +
      • + +
      • +

        getTrusted(type, maybeTrusted);

        + +

        +

        Delegates to $sceDelegate.getTrusted. As such, +takes the result of a $sce.trustAs() call and returns the +originally supplied value if the queried context type is a supertype of the created type. +If this condition isn't satisfied, throws an exception.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + type + + + + string + +

        The kind of context in which this value is to be used.

        + + +
        + maybeTrusted + + + + * + +

        The result of a prior $sce.trustAs + call.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        The value the was originally provided to + $sce.trustAs if valid in this context. + Otherwise, throws an exception.

        +
        + + +
      • + +
      • +

        getTrustedHtml(value);

        + +

        +

        Shorthand method. $sce.getTrustedHtml(value) → + $sceDelegate.getTrusted($sce.HTML, value)

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + + + + * + +

        The value to pass to $sce.getTrusted.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        The return value of $sce.getTrusted($sce.HTML, value)

        +
        + + +
      • + +
      • +

        getTrustedCss(value);

        + +

        +

        Shorthand method. $sce.getTrustedCss(value) → + $sceDelegate.getTrusted($sce.CSS, value)

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + + + + * + +

        The value to pass to $sce.getTrusted.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        The return value of $sce.getTrusted($sce.CSS, value)

        +
        + + +
      • + +
      • +

        getTrustedUrl(value);

        + +

        +

        Shorthand method. $sce.getTrustedUrl(value) → + $sceDelegate.getTrusted($sce.URL, value)

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + + + + * + +

        The value to pass to $sce.getTrusted.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        The return value of $sce.getTrusted($sce.URL, value)

        +
        + + +
      • + +
      • +

        getTrustedResourceUrl(value);

        + +

        +

        Shorthand method. $sce.getTrustedResourceUrl(value) → + $sceDelegate.getTrusted($sce.RESOURCE_URL, value)

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + + + + * + +

        The value to pass to $sceDelegate.getTrusted.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        The return value of $sce.getTrusted($sce.RESOURCE_URL, value)

        +
        + + +
      • + +
      • +

        getTrustedJs(value);

        + +

        +

        Shorthand method. $sce.getTrustedJs(value) → + $sceDelegate.getTrusted($sce.JS, value)

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + + + + * + +

        The value to pass to $sce.getTrusted.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        The return value of $sce.getTrusted($sce.JS, value)

        +
        + + +
      • + +
      • +

        parseAsHtml(expression);

        + +

        +

        Shorthand method. $sce.parseAsHtml(expression string) → + $sce.parseAs($sce.HTML, value)

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + expression + + + + string + +

        String expression to compile.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        function(context, locals)

        a function which represents the compiled expression:

        +
          +
        • context{object} – an object against which any expressions embedded in the strings +are evaluated against (typically a scope object).
        • +
        • locals{object=} – local variables context object, useful for overriding values in +context.
        • +
        +
        + + +
      • + +
      • +

        parseAsCss(expression);

        + +

        +

        Shorthand method. $sce.parseAsCss(value) → + $sce.parseAs($sce.CSS, value)

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + expression + + + + string + +

        String expression to compile.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        function(context, locals)

        a function which represents the compiled expression:

        +
          +
        • context{object} – an object against which any expressions embedded in the strings +are evaluated against (typically a scope object).
        • +
        • locals{object=} – local variables context object, useful for overriding values in +context.
        • +
        +
        + + +
      • + +
      • +

        parseAsUrl(expression);

        + +

        +

        Shorthand method. $sce.parseAsUrl(value) → + $sce.parseAs($sce.URL, value)

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + expression + + + + string + +

        String expression to compile.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        function(context, locals)

        a function which represents the compiled expression:

        +
          +
        • context{object} – an object against which any expressions embedded in the strings +are evaluated against (typically a scope object).
        • +
        • locals{object=} – local variables context object, useful for overriding values in +context.
        • +
        +
        + + +
      • + +
      • +

        parseAsResourceUrl(expression);

        + +

        +

        Shorthand method. $sce.parseAsResourceUrl(value) → + $sce.parseAs($sce.RESOURCE_URL, value)

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + expression + + + + string + +

        String expression to compile.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        function(context, locals)

        a function which represents the compiled expression:

        +
          +
        • context{object} – an object against which any expressions embedded in the strings +are evaluated against (typically a scope object).
        • +
        • locals{object=} – local variables context object, useful for overriding values in +context.
        • +
        +
        + + +
      • + +
      • +

        parseAsJs(expression);

        + +

        +

        Shorthand method. $sce.parseAsJs(value) → + $sce.parseAs($sce.JS, value)

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + expression + + + + string + +

        String expression to compile.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        function(context, locals)

        a function which represents the compiled expression:

        +
          +
        • context{object} – an object against which any expressions embedded in the strings +are evaluated against (typically a scope object).
        • +
        • locals{object=} – local variables context object, useful for overriding values in +context.
        • +
        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$sceDelegate.html b/1.2.30/docs/partials/api/ng/service/$sceDelegate.html new file mode 100644 index 0000000000..72c24b10fd --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$sceDelegate.html @@ -0,0 +1,284 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $sceDelegate

      +
        + +
      1. + - $sceDelegateProvider +
      2. + +
      3. + - service in module ng +
      4. +
      +
      + + + +
      +

      $sceDelegate is a service that is used by the $sce service to provide Strict +Contextual Escaping (SCE) services to AngularJS.

      +

      Typically, you would configure or override the $sceDelegate instead of +the $sce service to customize the way Strict Contextual Escaping works in AngularJS. This is +because, while the $sce provides numerous shorthand methods, etc., you really only need to +override 3 core functions (trustAs, getTrusted and valueOf) to replace the way things +work because $sce delegates to $sceDelegate for these operations.

      +

      Refer $sceDelegateProvider to configure this service.

      +

      The default instance of $sceDelegate should work out of the box with little pain. While you +can override it completely to change the behavior of $sce, the common case would +involve configuring the $sceDelegateProvider instead by setting +your own whitelists and blacklists for trusting URLs used for loading AngularJS resources such as +templates. Refer $sceDelegateProvider.resourceUrlWhitelist and $sceDelegateProvider.resourceUrlBlacklist

      + +
      + + + + +
      + + + + +

      Usage

      + +

      $sceDelegate();

      + + + + + + + + + +

      Methods

      +
        +
      • +

        trustAs(type, value);

        + +

        +

        Returns an object that is trusted by angular for use in specified strict +contextual escaping contexts (such as ng-bind-html, ng-include, any src +attribute interpolation, any dom event binding attribute interpolation +such as for onclick, etc.) that uses the provided value. +See $sce for enabling strict contextual escaping.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + type + + + + string + +

        The kind of context in which this value is safe for use. e.g. url, + resourceUrl, html, js and css.

        + + +
        + value + + + + * + +

        The value that that should be considered trusted/safe.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        A value that can be used to stand in for the provided value in places +where Angular expects a $sce.trustAs() return value.

        +
        + + +
      • + +
      • +

        valueOf(value);

        + +

        +

        If the passed parameter had been returned by a prior call to $sceDelegate.trustAs, returns the value that had been passed to $sceDelegate.trustAs.

        +

        If the passed parameter is not a value that had been returned by $sceDelegate.trustAs, returns it as-is.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + + + + * + +

        The result of a prior $sceDelegate.trustAs + call or anything else.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        The value that was originally provided to $sceDelegate.trustAs if value is the result of such a call. Otherwise, returns + value unchanged.

        +
        + + +
      • + +
      • +

        getTrusted(type, maybeTrusted);

        + +

        +

        Takes the result of a $sceDelegate.trustAs call and +returns the originally supplied value if the queried context type is a supertype of the +created type. If this condition isn't satisfied, throws an exception.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + type + + + + string + +

        The kind of context in which this value is to be used.

        + + +
        + maybeTrusted + + + + * + +

        The result of a prior $sceDelegate.trustAs call.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        The value the was originally provided to $sceDelegate.trustAs if valid in this context. Otherwise, throws an exception.

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$templateCache.html b/1.2.30/docs/partials/api/ng/service/$templateCache.html new file mode 100644 index 0000000000..b34ebbb789 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$templateCache.html @@ -0,0 +1,71 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $templateCache

      +
        + + + +
      1. + - service in module ng +
      2. +
      +
      + + + +
      +

      The first time a template is used, it is loaded in the template cache for quick retrieval. You +can load templates directly into the cache in a script tag, or by consuming the +$templateCache service directly.

      +

      Adding via the script tag:

      +
      <script type="text/ng-template" id="templateId.html">
      +  <p>This is the content of the template</p>
      +</script>
      +
      +

      Note: the script tag containing the template does not need to be included in the head of +the document, but it must be a descendent of the $rootElement (IE, +element with ng-app attribute), otherwise the template will be ignored.

      +

      Adding via the $templateCache service:

      +
      var myApp = angular.module('myApp', []);
      +myApp.run(function($templateCache) {
      +  $templateCache.put('templateId.html', 'This is the content of the template');
      +});
      +
      +

      To retrieve the template later, simply use it in your HTML:

      +
      <div ng-include=" 'templateId.html' "></div>
      +
      +

      or get it via Javascript:

      +
      $templateCache.get('templateId.html')
      +
      +

      See $cacheFactory.

      + +
      + + + + +
      + + + + + + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$timeout.html b/1.2.30/docs/partials/api/ng/service/$timeout.html new file mode 100644 index 0000000000..cdc7881690 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$timeout.html @@ -0,0 +1,198 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $timeout

      +
        + + + +
      1. + - service in module ng +
      2. +
      +
      + + + +
      +

      Angular's wrapper for window.setTimeout. The fn function is wrapped into a try/catch +block and delegates any exceptions to +$exceptionHandler service.

      +

      The return value of registering a timeout function is a promise, which will be resolved when +the timeout is reached and the timeout function is executed.

      +

      To cancel a timeout request, call $timeout.cancel(promise).

      +

      In tests you can use $timeout.flush() to +synchronously flush the queue of deferred functions.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      $timeout(fn, [delay], [invokeApply]);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + fn + + + + function() + +

      A function, whose execution should be delayed.

      + + +
      + delay + +
      (optional)
      +
      + number + +

      Delay in milliseconds.

      + +

      (default: 0)

      +
      + invokeApply + +
      (optional)
      +
      + boolean + +

      If set to false skips model dirty checking, otherwise + will invoke fn within the $apply block.

      + +

      (default: true)

      +
      + +
      + +

      Returns

      + + + + + +
      Promise

      Promise that will be resolved when the timeout is reached. The value this + promise will be resolved with is the return value of the fn function.

      +
      + + +

      Methods

      +
        +
      • +

        cancel([promise]);

        + +

        +

        Cancels a task associated with the promise. As a result of this, the promise will be +resolved with a rejection.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + promise + +
        (optional)
        +
        + Promise + +

        Promise returned by the $timeout function.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        boolean

        Returns true if the task hasn't executed yet and was successfully + canceled.

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/service/$window.html b/1.2.30/docs/partials/api/ng/service/$window.html new file mode 100644 index 0000000000..9cfe1fbc42 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/service/$window.html @@ -0,0 +1,89 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $window

      +
        + + + +
      1. + - service in module ng +
      2. +
      +
      + + + +
      +

      A reference to the browser's window object. While window +is globally available in JavaScript, it causes testability problems, because +it is a global variable. In angular we always refer to it through the +$window service, so it may be overridden, removed or mocked for testing.

      +

      Expressions, like the one defined for the ngClick directive in the example +below, are evaluated with respect to the current scope. Therefore, there is +no risk of inadvertently coding in a dependency on a global value in such an +expression.

      + +
      + + + + +
      + + + + + + + + + + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('windowExample', [])
          .controller('ExampleController', ['$scope', '$window', function ($scope, $window) {
            $scope.greeting = 'Hello, World!';
            $scope.doGreeting = function(greeting) {
              $window.alert(greeting);
            };
          }]);
      </script>
      <div ng-controller="ExampleController">
        <input type="text" ng-model="greeting" />
        <button ng-click="doGreeting(greeting)">ALERT</button>
      </div>
      +
      + +
      +
      it('should display the greeting in the input box', function() {
       element(by.model('greeting')).sendKeys('Hello, E2E Tests');
       // If we click the button it will block the test runner
       // element(':button').click();
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ng/type.html b/1.2.30/docs/partials/api/ng/type.html new file mode 100644 index 0000000000..5726165c9c --- /dev/null +++ b/1.2.30/docs/partials/api/ng/type.html @@ -0,0 +1,65 @@ + +

      Type components in ng

      + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      angular.Module

      Interface for configuring angular modules.

      +
      $cacheFactory.Cache

      A cache object used to store and retrieve data, primarily used by +$http and the script directive to cache +templates and other data.

      +
      $compile.directive.Attributes

      A shared object between directive compile / linking functions which contains normalized DOM +element attributes. The values reflect current binding state {{ }}. The normalization is +needed since all of these are treated as equivalent in Angular:

      +
      form.FormController

      FormController keeps track of all its controls and nested forms as well as the state of them, +such as being valid/invalid or dirty/pristine.

      +
      ngModel.NgModelController

      NgModelController provides API for the ng-model directive. The controller contains +services for data-binding, validation, CSS updates, and value formatting and parsing. It +purposefully does not contain any logic which deals with DOM rendering or listening to +DOM events. Such DOM related logic should be provided by other directives which make use of +NgModelController for data-binding.

      +
      $rootScope.Scope

      A root scope can be retrieved using the $rootScope key from the +$injector. Child scopes are created using the +$new() method. (Most scopes are created automatically when +compiled HTML template is executed.)

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ng/type/$cacheFactory.Cache.html b/1.2.30/docs/partials/api/ng/type/$cacheFactory.Cache.html new file mode 100644 index 0000000000..0b4dd96a83 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/type/$cacheFactory.Cache.html @@ -0,0 +1,316 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $cacheFactory.Cache

      +
        + +
      1. + - type in module ng +
      2. +
      +
      + + + +
      +

      A cache object used to store and retrieve data, primarily used by +$http and the script directive to cache +templates and other data.

      +
      angular.module('superCache')
      +  .factory('superCache', ['$cacheFactory', function($cacheFactory) {
      +    return $cacheFactory('super-cache');
      +  }]);
      +
      +

      Example test:

      +
      it('should behave like a cache', inject(function(superCache) {
      +  superCache.put('key', 'value');
      +  superCache.put('another key', 'another value');
      +
      +  expect(superCache.info()).toEqual({
      +    id: 'super-cache',
      +    size: 2
      +  });
      +
      +  superCache.remove('another key');
      +  expect(superCache.get('another key')).toBeUndefined();
      +
      +  superCache.removeAll();
      +  expect(superCache.info()).toEqual({
      +    id: 'super-cache',
      +    size: 0
      +  });
      +}));
      +
      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        put(key, value);

        + +

        +

        Inserts a named entry into the Cache object to be +retrieved later, and incrementing the size of the cache if the key was not already +present in the cache. If behaving like an LRU cache, it will also remove stale +entries from the set.

        +

        It will not insert undefined values into the cache.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + key + + + + string + +

        the key under which the cached data is stored.

        + + +
        + value + + + + * + +

        the value to store alongside the key. If it is undefined, the key + will not be stored.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        the value stored.

        +
        + + +
      • + +
      • +

        get(key);

        + +

        +

        Retrieves named data stored in the Cache object.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + key + + + + string + +

        the key of the data to be retrieved

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        the value stored.

        +
        + + +
      • + +
      • +

        remove(key);

        + +

        +

        Removes an entry from the Cache object.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + key + + + + string + +

        the key of the entry to be removed

        + + +
        + + + + + + + +
      • + +
      • +

        removeAll();

        + +

        +

        Clears the cache object of any entries.

        +
        + + + + + + + +
      • + +
      • +

        destroy();

        + +

        +

        Destroys the Cache object entirely, +removing it from the $cacheFactory set.

        +
        + + + + + + + +
      • + +
      • +

        info();

        + +

        +

        Retrieve information regarding a particular Cache.

        +
        + + + + + + +

        Returns

        + + + + + +
        object

        an object with the following properties: +

          +
        • id: the id of the cache instance
        • +
        • size: the number of entries kept in the cache instance
        • +
        • ...: any additional properties from the options object when creating the + cache.
        • +

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/type/$compile.directive.Attributes.html b/1.2.30/docs/partials/api/ng/type/$compile.directive.Attributes.html new file mode 100644 index 0000000000..3bba597140 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/type/$compile.directive.Attributes.html @@ -0,0 +1,418 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $compile.directive.Attributes

      +
        + +
      1. + - type in module ng +
      2. +
      +
      + + + +
      +

      A shared object between directive compile / linking functions which contains normalized DOM +element attributes. The values reflect current binding state {{ }}. The normalization is +needed since all of these are treated as equivalent in Angular:

      +
      <span ng:bind="a" ng-bind="a" data-ng-bind="a" x-ng-bind="a">
      +
      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        $normalize(name);

        + +

        +

        Converts an attribute name (e.g. dash/colon/underscore-delimited string, optionally prefixed with x- or +data-) to its normalized, camelCase form.

        +

        Also there is special case for Moz prefix starting with upper case letter.

        +

        For further information check out the guide on Matching Directives

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        Name to normalize

        + + +
        + + + + + + + +
      • + +
      • +

        $addClass(classVal);

        + +

        +

        Adds the CSS class value specified by the classVal parameter to the element. If animations +are enabled then an animation will be triggered for the class addition.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + classVal + + + + string + +

        The className value that will be added to the element

        + + +
        + + + + + + + +
      • + +
      • +

        $removeClass(classVal);

        + +

        +

        Removes the CSS class value specified by the classVal parameter from the element. If +animations are enabled then an animation will be triggered for the class removal.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + classVal + + + + string + +

        The className value that will be removed from the element

        + + +
        + + + + + + + +
      • + +
      • +

        $updateClass(newClasses, oldClasses);

        + +

        +

        Adds and removes the appropriate CSS class values to the element based on the difference +between the new and old CSS class values (specified as newClasses and oldClasses).

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + newClasses + + + + string + +

        The current CSS className value

        + + +
        + oldClasses + + + + string + +

        The former CSS className value

        + + +
        + + + + + + + +
      • + +
      • +

        $observe(key, fn);

        + +

        +

        Observes an interpolated attribute.

        +

        The observer function will be invoked once during the next $digest following +compilation. The observer is then invoked whenever the interpolated value +changes.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + key + + + + string + +

        Normalized key. (ie ngAttribute) .

        + + +
        + fn + + + + function(interpolatedValue) + +

        Function that will be called whenever + the interpolated value of the attribute changes. + See the Directives guide for more info.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        function()

        the fn parameter.

        +
        + + +
      • + +
      • +

        $set(name, value);

        + +

        +

        Set DOM element attribute value.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        Normalized element attribute name of the property to modify. The name is + reverse-translated using the $attr + property to the original name.

        + + +
        + value + + + + string + +

        Value to set the attribute to. The value can be an interpolated string.

        + + +
        + + + + + + + +
      • +
      + + +

      Properties

      +
        +
      • +

        $attr

        + + + + + +

        A map of DOM element attribute names to the normalized name. This is +needed to do reverse lookup from normalized name back to actual name.

        +
        +
      • +
      + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/type/$rootScope.Scope.html b/1.2.30/docs/partials/api/ng/type/$rootScope.Scope.html new file mode 100644 index 0000000000..8c6719b63a --- /dev/null +++ b/1.2.30/docs/partials/api/ng/type/$rootScope.Scope.html @@ -0,0 +1,1109 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $rootScope.Scope

      +
        + +
      1. + - type in module ng +
      2. +
      +
      + + + +
      +

      A root scope can be retrieved using the $rootScope key from the +$injector. Child scopes are created using the +$new() method. (Most scopes are created automatically when +compiled HTML template is executed.)

      +

      Here is a simple scope snippet to show how you can interact with the scope.

      +
      <file src="./test/ng/rootScopeSpec.js" tag="docs1" />
      +
      +

      Inheritance

      +

      A scope can inherit from a parent scope, as in this example:

      +
      var parent = $rootScope;
      +var child = parent.$new();
      +
      +parent.salutation = "Hello";
      +child.name = "World";
      +expect(child.salutation).toEqual('Hello');
      +
      +child.salutation = "Welcome";
      +expect(child.salutation).toEqual('Welcome');
      +expect(parent.salutation).toEqual('Hello');
      +
      + +
      + + + + +
      + + + + +

      Usage

      + +

      $rootScope.Scope([providers], [instanceCache]);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + providers + +
      (optional)
      +
      + Object.<string, function()>= + +

      Map of service factory which need to be + provided for the current scope. Defaults to ng.

      + + +
      + instanceCache + +
      (optional)
      +
      + Object.<string, *>= + +

      Provides pre-instantiated services which should + append/override services provided by providers. This is handy + when unit-testing and having the need to override a default + service.

      + + +
      + +
      + +

      Returns

      + + + + + +
      Object

      Newly created scope.

      +
      + + +

      Methods

      +
        +
      • +

        $new(isolate);

        + +

        +

        Creates a new child scope.

        +

        The parent scope will propagate the $digest() event. +The scope can be removed from the scope hierarchy using $destroy().

        +

        $destroy() must be called on a scope when it is +desired for the scope and its child scopes to be permanently detached from the parent and +thus stop participating in model change detection and listener notification by invoking.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + isolate + + + + boolean + +

        If true, then the scope does not prototypically inherit from the + parent scope. The scope is isolated, as it can not see parent scope properties. + When creating widgets, it is useful for the widget to not accidentally read parent + state.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        Object

        The newly created child scope.

        +
        + + +
      • + +
      • +

        $watch(watchExpression, [listener], [objectEquality]);

        + +

        +

        Registers a listener callback to be executed whenever the watchExpression changes.

        +
          +
        • The watchExpression is called on every call to $digest() and should return the value that will be watched. (Since +$digest() reruns when it detects changes the +watchExpression can execute multiple times per +$digest() and should be idempotent.)
        • +
        • The listener is called only when the value from the current watchExpression and the +previous call to watchExpression are not equal (with the exception of the initial run, +see below). Inequality is determined according to reference inequality, +strict comparison + via the !== Javascript operator, unless objectEquality == true +(see next point)
        • +
        • When objectEquality == true, inequality of the watchExpression is determined +according to the angular.equals function. To save the value of the object for +later comparison, the angular.copy function is used. This therefore means that +watching complex objects will have adverse memory and performance implications.
        • +
        • The watch listener may change the model, which may trigger other listeners to fire. +This is achieved by rerunning the watchers until no changes are detected. The rerun +iteration limit is 10 to prevent an infinite loop deadlock.
        • +
        +

        If you want to be notified whenever $digest is called, +you can register a watchExpression function with no listener. (Since watchExpression +can execute multiple times per $digest cycle when a +change is detected, be prepared for multiple calls to your listener.)

        +

        After a watcher is registered with the scope, the listener fn is called asynchronously +(via $evalAsync) to initialize the +watcher. In rare cases, this is undesirable because the listener is called when the result +of watchExpression didn't change. To detect this scenario within the listener fn, you +can compare the newVal and oldVal. If these two values are identical (===) then the +listener was called due to initialization.

        +

        The example below contains an illustration of using a function as your $watch listener

        +

        Example

        +
        // let's assume that scope was dependency injected as the $rootScope
        +var scope = $rootScope;
        +scope.name = 'misko';
        +scope.counter = 0;
        +
        +expect(scope.counter).toEqual(0);
        +scope.$watch('name', function(newValue, oldValue) {
        +  scope.counter = scope.counter + 1;
        +});
        +expect(scope.counter).toEqual(0);
        +
        +scope.$digest();
        +// the listener is always called during the first $digest loop after it was registered
        +expect(scope.counter).toEqual(1);
        +
        +scope.$digest();
        +// but now it will not be called unless the value changes
        +expect(scope.counter).toEqual(1);
        +
        +scope.name = 'adam';
        +scope.$digest();
        +expect(scope.counter).toEqual(2);
        +
        +
        +
        +// Using a listener function
        +var food;
        +scope.foodCounter = 0;
        +expect(scope.foodCounter).toEqual(0);
        +scope.$watch(
        +  // This is the listener function
        +  function() { return food; },
        +  // This is the change handler
        +  function(newValue, oldValue) {
        +    if ( newValue !== oldValue ) {
        +      // Only increment the counter if the value changed
        +      scope.foodCounter = scope.foodCounter + 1;
        +    }
        +  }
        +);
        +// No digest has been run so the counter will be zero
        +expect(scope.foodCounter).toEqual(0);
        +
        +// Run the digest but since food has not changed count will still be zero
        +scope.$digest();
        +expect(scope.foodCounter).toEqual(0);
        +
        +// Update food and run digest.  Now the counter will increment
        +food = 'cheeseburger';
        +scope.$digest();
        +expect(scope.foodCounter).toEqual(1);
        +
        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + watchExpression + + + + function()string + +

        Expression that is evaluated on each + $digest cycle. A change in the return value triggers + a call to the listener.

        +
          +
        • string: Evaluated as expression
        • +
        • function(scope): called with current scope as a parameter.
        • +
        + + +
        + listener + +
        (optional)
        +
        + function()string + +

        Callback called whenever the return value of + the watchExpression changes.

        +
          +
        • string: Evaluated as expression
        • +
        • function(newValue, oldValue, scope): called with current and previous values as +parameters.
        • +
        + + +
        + objectEquality + +
        (optional)
        +
        + boolean + +

        Compare for object equality using angular.equals instead of + comparing for reference equality.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        function()

        Returns a deregistration function for this listener.

        +
        + + +
      • + +
      • +

        $watchCollection(obj, listener);

        + +

        +

        Shallow watches the properties of an object and fires whenever any of the properties change +(for arrays, this implies watching the array items; for object maps, this implies watching +the properties). If a change is detected, the listener callback is fired.

        +
          +
        • The obj collection is observed via standard $watch operation and is examined on every +call to $digest() to see if any items have been added, removed, or moved.
        • +
        • The listener is called whenever anything within the obj has changed. Examples include +adding, removing, and moving items belonging to an object or array.
        • +
        +

        Example

        +
        $scope.names = ['igor', 'matias', 'misko', 'james'];
        +$scope.dataCount = 4;
        +
        +$scope.$watchCollection('names', function(newNames, oldNames) {
        +  $scope.dataCount = newNames.length;
        +});
        +
        +expect($scope.dataCount).toEqual(4);
        +$scope.$digest();
        +
        +//still at 4 ... no changes
        +expect($scope.dataCount).toEqual(4);
        +
        +$scope.names.pop();
        +$scope.$digest();
        +
        +//now there's been a change
        +expect($scope.dataCount).toEqual(3);
        +
        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + obj + + + + stringfunction(scope) + +

        Evaluated as expression. The + expression value should evaluate to an object or an array which is observed on each + $digest cycle. Any shallow change within the + collection will trigger a call to the listener.

        + + +
        + listener + + + + function(newCollection, oldCollection, scope) + +

        a callback function called + when a change is detected.

        +
          +
        • The newCollection object is the newly modified data obtained from the obj expression
        • +
        • The oldCollection object is a copy of the former collection data. +Due to performance considerations, theoldCollection value is computed only if the +listener function declares two or more arguments.
        • +
        • The scope argument refers to the current scope.
        • +
        + + +
        + + + + + + +

        Returns

        + + + + + +
        function()

        Returns a de-registration function for this listener. When the + de-registration function is executed, the internal watch operation is terminated.

        +
        + + +
      • + +
      • +

        $digest();

        + +

        +

        Processes all of the watchers of the current scope and +its children. Because a watcher's listener can change +the model, the $digest() keeps calling the watchers +until no more listeners are firing. This means that it is possible to get into an infinite +loop. This function will throw 'Maximum iteration limit exceeded.' if the number of +iterations exceeds 10.

        +

        Usually, you don't call $digest() directly in +controllers or in +directives. +Instead, you should call $apply() (typically from within +a directives), which will force a $digest().

        +

        If you want to be notified whenever $digest() is called, +you can register a watchExpression function with +$watch() with no listener.

        +

        In unit tests, you may need to call $digest() to simulate the scope life cycle.

        +

        Example

        +
        var scope = ...;
        +scope.name = 'misko';
        +scope.counter = 0;
        +
        +expect(scope.counter).toEqual(0);
        +scope.$watch('name', function(newValue, oldValue) {
        +  scope.counter = scope.counter + 1;
        +});
        +expect(scope.counter).toEqual(0);
        +
        +scope.$digest();
        +// the listener is always called during the first $digest loop after it was registered
        +expect(scope.counter).toEqual(1);
        +
        +scope.$digest();
        +// but now it will not be called unless the value changes
        +expect(scope.counter).toEqual(1);
        +
        +scope.name = 'adam';
        +scope.$digest();
        +expect(scope.counter).toEqual(2);
        +
        +
        + + + + + + + +
      • + +
      • +

        $destroy();

        + +

        +

        Removes the current scope (and all of its children) from the parent scope. Removal implies +that calls to $digest() will no longer +propagate to the current scope and its children. Removal also implies that the current +scope is eligible for garbage collection.

        +

        The $destroy() is usually used by directives such as +ngRepeat for managing the +unrolling of the loop.

        +

        Just before a scope is destroyed, a $destroy event is broadcasted on this scope. +Application code can register a $destroy event handler that will give it a chance to +perform any necessary cleanup.

        +

        Note that, in AngularJS, there is also a $destroy jQuery event, which can be used to +clean up DOM bindings before an element is removed from the DOM.

        +
        + + + + + + + +
      • + +
      • +

        $eval([expression], [locals]);

        + +

        +

        Executes the expression on the current scope and returns the result. Any exceptions in +the expression are propagated (uncaught). This is useful when evaluating Angular +expressions.

        +

        Example

        +
        var scope = ng.$rootScope.Scope();
        +scope.a = 1;
        +scope.b = 2;
        +
        +expect(scope.$eval('a+b')).toEqual(3);
        +expect(scope.$eval(function(scope){ return scope.a + scope.b; })).toEqual(3);
        +
        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + expression + +
        (optional)
        +
        + stringfunction() + +

        An angular expression to be executed.

        +
          +
        • string: execute using the rules as defined in expression.
        • +
        • function(scope): execute the function with the current scope parameter.
        • +
        + + +
        + locals + +
        (optional)
        +
        + object + +

        Local variables object, useful for overriding values in scope.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        The result of evaluating the expression.

        +
        + + +
      • + +
      • +

        $evalAsync([expression]);

        + +

        +

        Executes the expression on the current scope at a later point in time.

        +

        The $evalAsync makes no guarantees as to when the expression will be executed, only +that:

        +
          +
        • it will execute after the function that scheduled the evaluation (preferably before DOM +rendering).
        • +
        • at least one $digest cycle will be performed after +expression execution.
        • +
        +

        Any exceptions from the execution of the expression are forwarded to the +$exceptionHandler service.

        +

        Note: if this function is called outside of a $digest cycle, a new $digest cycle +will be scheduled. However, it is encouraged to always call code that changes the model +from within an $apply call. That includes code evaluated via $evalAsync.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + expression + +
        (optional)
        +
        + stringfunction() + +

        An angular expression to be executed.

        +
          +
        • string: execute using the rules as defined in expression.
        • +
        • function(scope): execute the function with the current scope parameter.
        • +
        + + +
        + + + + + + + +
      • + +
      • +

        $apply([exp]);

        + +

        +

        $apply() is used to execute an expression in angular from outside of the angular +framework. (For example from browser DOM events, setTimeout, XHR or third party libraries). +Because we are calling into the angular framework we need to perform proper scope life +cycle of exception handling, +executing watches.

        +

        Life cycle

        +

        Pseudo-Code of $apply()

        +
        function $apply(expr) {
        +  try {
        +    return $eval(expr);
        +  } catch (e) {
        +    $exceptionHandler(e);
        +  } finally {
        +    $root.$digest();
        +  }
        +}
        +
        +

        Scope's $apply() method transitions through the following stages:

        +
          +
        1. The expression is executed using the +$eval() method.
        2. +
        3. Any exceptions from the execution of the expression are forwarded to the +$exceptionHandler service.
        4. +
        5. The watch listeners are fired immediately after the +expression was executed using the $digest() method.
        6. +
        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + exp + +
        (optional)
        +
        + stringfunction() + +

        An angular expression to be executed.

        +
          +
        • string: execute using the rules as defined in expression.
        • +
        • function(scope): execute the function with current scope parameter.
        • +
        + + +
        + + + + + + +

        Returns

        + + + + + +
        *

        The result of evaluating the expression.

        +
        + + +
      • + +
      • +

        $on(name, listener);

        + +

        +

        Listens on events of a given type. See $emit for +discussion of event life cycle.

        +

        The event listener function format is: function(event, args...). The event object +passed into the listener has the following attributes:

        +
          +
        • targetScope - {Scope}: the scope on which the event was $emit-ed or +$broadcast-ed.
        • +
        • currentScope - {Scope}: the current scope which is handling the event.
        • +
        • name - {string}: name of the event.
        • +
        • stopPropagation - {function=}: calling stopPropagation function will cancel +further event propagation (available only for events that were $emit-ed).
        • +
        • preventDefault - {function}: calling preventDefault sets defaultPrevented flag +to true.
        • +
        • defaultPrevented - {boolean}: true if preventDefault was called.
        • +
        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        Event name to listen on.

        + + +
        + listener + + + + function(event, ...args) + +

        Function to call when the event is emitted.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        function()

        Returns a deregistration function for this listener.

        +
        + + +
      • + +
      • +

        $emit(name, args);

        + +

        +

        Dispatches an event name upwards through the scope hierarchy notifying the +registered $rootScope.Scope listeners.

        +

        The event life cycle starts at the scope on which $emit was called. All +listeners listening for name event on this scope get +notified. Afterwards, the event traverses upwards toward the root scope and calls all +registered listeners along the way. The event will stop propagating if one of the listeners +cancels it.

        +

        Any exception emitted from the listeners will be passed +onto the $exceptionHandler service.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        Event name to emit.

        + + +
        + args + + + + * + +

        Optional one or more arguments which will be passed onto the event listeners.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        Object

        Event object (see $rootScope.Scope).

        +
        + + +
      • + +
      • +

        $broadcast(name, args);

        + +

        +

        Dispatches an event name downwards to all child scopes (and their children) notifying the +registered $rootScope.Scope listeners.

        +

        The event life cycle starts at the scope on which $broadcast was called. All +listeners listening for name event on this scope get +notified. Afterwards, the event propagates to all direct and indirect scopes of the current +scope and calls all registered listeners along the way. The event cannot be canceled.

        +

        Any exception emitted from the listeners will be passed +onto the $exceptionHandler service.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        Event name to broadcast.

        + + +
        + args + + + + * + +

        Optional one or more arguments which will be passed onto the event listeners.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        Object

        Event object, see $rootScope.Scope

        +
        + + +
      • +
      + +

      Events

      +
        +
      • +

        $destroy

        +

        Broadcasted when a scope and its children are being destroyed.

        +

        Note that, in AngularJS, there is also a $destroy jQuery event, which can be used to +clean up DOM bindings before an element is removed from the DOM.

        +
        +
        +

        Type:

        +
        broadcast
        +
        +
        +

        Target:

        +
        scope being destroyed +
        +
        +
      • +
      + + +

      Properties

      +
        +
      • +

        $id

        + + + + + +

        Unique scope ID (monotonically increasing) useful for debugging.

        +
        +
      • + +
      • +

        $parent

        + + + + + +

        Reference to the parent scope.

        +
        +
      • + +
      • +

        $root

        + + + + + +

        Reference to the root scope.

        +
        +
      • +
      + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/type/angular.Module.html b/1.2.30/docs/partials/api/ng/type/angular.Module.html new file mode 100644 index 0000000000..87c0039011 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/type/angular.Module.html @@ -0,0 +1,761 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.Module

      +
        + +
      1. + - type in module ng +
      2. +
      +
      + + + +
      +

      Interface for configuring angular modules.

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        provider(name, providerType);

        + +

        + + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        service name

        + + +
        + providerType + + + + Function + +

        Construction function for creating new instance of the + service.

        + + +
        + + + + + + + +
      • + +
      • +

        factory(name, providerFunction);

        + +

        + + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        service name

        + + +
        + providerFunction + + + + Function + +

        Function for creating new instance of the service.

        + + +
        + + + + + + + +
      • + +
      • +

        service(name, constructor);

        + +

        + + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        service name

        + + +
        + constructor + + + + Function + +

        A constructor function that will be instantiated.

        + + +
        + + + + + + + +
      • + +
      • +

        value(name, object);

        + +

        + + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        service name

        + + +
        + object + + + + * + +

        Service instance object.

        + + +
        + + + + + + + +
      • + +
      • +

        constant(name, object);

        + +

        +

        Because the constant are fixed, they get applied before other provide methods. +See $provide.constant().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        constant name

        + + +
        + object + + + + * + +

        Constant value.

        + + +
        + + + + + + + +
      • + +
      • +

        animation(name, animationFactory);

        + +

        +

        NOTE: animations take effect only if the ngAnimate module is loaded.

        +

        Defines an animation hook that can be later used with +$animate service and directives that use this service.

        +
        module.animation('.animation-name', function($inject1, $inject2) {
        +return {
        +  eventName : function(element, done) {
        +    //code to run the animation
        +    //once complete, then run done()
        +    return function cancellationFunction(element) {
        +      //code to cancel the animation
        +    }
        +  }
        +}
        +})
        +
        +

        See $animateProvider.register() and +ngAnimate module for more information.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        animation name

        + + +
        + animationFactory + + + + Function + +

        Factory function for creating new instance of an + animation.

        + + +
        + + + + + + + +
      • + +
      • +

        filter(name, filterFactory);

        + +

        + + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + string + +

        Filter name.

        + + +
        + filterFactory + + + + Function + +

        Factory function for creating new instance of filter.

        + + +
        + + + + + + + +
      • + +
      • +

        controller(name, constructor);

        + +

        + + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + stringObject + +

        Controller name, or an object map of controllers where the + keys are the names and the values are the constructors.

        + + +
        + constructor + + + + Function + +

        Controller constructor function.

        + + +
        + + + + + + + +
      • + +
      • +

        directive(name, directiveFactory);

        + +

        + + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + name + + + + stringObject + +

        Directive name, or an object map of directives where the + keys are the names and the values are the factories.

        + + +
        + directiveFactory + + + + Function + +

        Factory function for creating new instance of +directives.

        + + +
        + + + + + + + +
      • + +
      • +

        config(configFn);

        + +

        +

        Use this method to register work which needs to be performed on module loading. +For more about how to configure services, see +Provider Recipe.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + configFn + + + + Function + +

        Execute this function on module load. Useful for service + configuration.

        + + +
        + + + + + + + +
      • + +
      • +

        run(initializationFn);

        + +

        +

        Use this method to register work which should be performed when the injector is done +loading all modules.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + initializationFn + + + + Function + +

        Execute this function after injector creation. + Useful for application initialization.

        + + +
        + + + + + + + +
      • +
      + + +

      Properties

      +
        +
      • +

        requires

        + + + + + +

        Holds the list of modules which the injector will load before the current module is +loaded.

        +
        +
      • + +
      • +

        name

        + + + + + +

        Name of the module.

        +
        +
      • +
      + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/type/form.FormController.html b/1.2.30/docs/partials/api/ng/type/form.FormController.html new file mode 100644 index 0000000000..1236453e90 --- /dev/null +++ b/1.2.30/docs/partials/api/ng/type/form.FormController.html @@ -0,0 +1,210 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      form.FormController

      +
        + +
      1. + - type in module ng +
      2. +
      +
      + + + +
      +

      FormController keeps track of all its controls and nested forms as well as the state of them, +such as being valid/invalid or dirty/pristine.

      +

      Each form directive creates an instance +of FormController.

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        $addControl();

        + +

        +

        Register a control with the form.

        +

        Input elements using ngModelController do this automatically when they are linked.

        +
        + + + + + + + +
      • + +
      • +

        $removeControl();

        + +

        +

        Deregister a control from the form.

        +

        Input elements using ngModelController do this automatically when they are destroyed.

        +
        + + + + + + + +
      • + +
      • +

        $setValidity();

        + +

        +

        Sets the validity of a form control.

        +

        This method will also propagate to parent forms.

        +
        + + + + + + + +
      • + +
      • +

        $setDirty();

        + +

        +

        Sets the form to a dirty state.

        +

        This method can be called to add the 'ng-dirty' class and set the form to a dirty +state (ng-dirty class). This method will also propagate to parent forms.

        +
        + + + + + + + +
      • + +
      • +

        $setPristine();

        + +

        +

        Sets the form to its pristine state.

        +

        This method can be called to remove the 'ng-dirty' class and set the form to its pristine +state (ng-pristine class). This method will also propagate to all the controls contained +in this form.

        +

        Setting a form back to a pristine state is often useful when we want to 'reuse' a form after +saving or resetting it.

        +
        + + + + + + + +
      • +
      + + +

      Properties

      +
        +
      • +

        $pristine

        + + + + + +
        boolean

        True if user has not interacted with the form yet.

        +
        +
      • + +
      • +

        $dirty

        + + + + + +
        boolean

        True if user has already interacted with the form.

        +
        +
      • + +
      • +

        $valid

        + + + + + +
        boolean

        True if all of the containing forms and controls are valid.

        +
        +
      • + +
      • +

        $invalid

        + + + + + +
        boolean

        True if at least one containing control or form is invalid.

        +
        +
      • + +
      • +

        $error

        + + + + + +
        Object

        Is an object hash, containing references to all invalid controls or + forms, where:

        +
          +
        • keys are validation tokens (error names),
        • +
        • values are arrays of controls or forms that are invalid for given error name.
        • +
        +

        Built-in validation tokens:

        +
          +
        • email
        • +
        • max
        • +
        • maxlength
        • +
        • min
        • +
        • minlength
        • +
        • number
        • +
        • pattern
        • +
        • required
        • +
        • url
        • +
        +
        +
      • +
      + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ng/type/ngModel.NgModelController.html b/1.2.30/docs/partials/api/ng/type/ngModel.NgModelController.html new file mode 100644 index 0000000000..561ae84d6a --- /dev/null +++ b/1.2.30/docs/partials/api/ng/type/ngModel.NgModelController.html @@ -0,0 +1,458 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngModel.NgModelController

      +
        + +
      1. + - type in module ng +
      2. +
      +
      + + + +
      +

      NgModelController provides API for the ng-model directive. The controller contains +services for data-binding, validation, CSS updates, and value formatting and parsing. It +purposefully does not contain any logic which deals with DOM rendering or listening to +DOM events. Such DOM related logic should be provided by other directives which make use of +NgModelController for data-binding.

      +

      Custom Control Example

      +

      This example shows how to use NgModelController with a custom control to achieve +data-binding. Notice how different directives (contenteditable, ng-model, and required) +collaborate together to achieve the desired result.

      +

      Note that contenteditable is an HTML5 attribute, which tells the browser to let the element +contents be edited in place by the user. This will not work on older browsers.

      +

      We are using the $sce service here and include the $sanitize +module to automatically remove "bad" content like inline event listener (e.g. <span onclick="...">). +However, as we are using $sce the model can still decide to provide unsafe content if it marks +that content using the $sce service.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      [contenteditable] {
        border: 1px solid black;
        background-color: white;
        min-height: 20px;
      }
      
      .ng-invalid {
        border: 1px solid red;
      }
      +
      + +
      +
      angular.module('customControl', ['ngSanitize']).
        directive('contenteditable', ['$sce', function($sce) {
          return {
            restrict: 'A', // only activate on element attribute
            require: '?ngModel', // get a hold of NgModelController
            link: function(scope, element, attrs, ngModel) {
              if(!ngModel) return; // do nothing if no ng-model
      
              // Specify how UI should be updated
              ngModel.$render = function() {
                element.html($sce.getTrustedHtml(ngModel.$viewValue || ''));
              };
      
              // Listen for change events to enable binding
              element.on('blur keyup change', function() {
                scope.$evalAsync(read);
              });
              read(); // initialize
      
              // Write data to the model
              function read() {
                var html = element.html();
                // When we clear the content editable the browser leaves a <br> behind
                // If strip-br attribute is provided then we strip this out
                if( attrs.stripBr && html == '<br>' ) {
                  html = '';
                }
                ngModel.$setViewValue(html);
              }
            }
          };
        }]);
      +
      + +
      +
      <form name="myForm">
       <div contenteditable
            name="myWidget" ng-model="userContent"
            strip-br="true"
            required>Change me!</div>
        <span ng-show="myForm.myWidget.$error.required">Required!</span>
       <hr>
       <textarea ng-model="userContent"></textarea>
      </form>
      +
      + +
      +
      it('should data-bind and become invalid', function() {
      if (browser.params.browser == 'safari' || browser.params.browser == 'firefox') {
        // SafariDriver can't handle contenteditable
        // and Firefox driver can't clear contenteditables very well
        return;
      }
      var contentEditable = element(by.css('[contenteditable]'));
      var content = 'Change me!';
      
      expect(contentEditable.getText()).toEqual(content);
      
      contentEditable.clear();
      contentEditable.sendKeys(protractor.Key.BACK_SPACE);
      expect(contentEditable.getText()).toEqual('');
      expect(contentEditable.getAttribute('class')).toMatch(/ng-invalid-required/);
      });
      +
      + + + +
      +
      + + +

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        $render();

        + +

        +

        Called when the view needs to be updated. It is expected that the user of the ng-model +directive will implement this method.

        +
        + + + + + + + +
      • + +
      • +

        $isEmpty(value);

        + +

        +

        This is called when we need to determine if the value of the input is empty.

        +

        For instance, the required directive does this to work out if the input has data or not. +The default $isEmpty function checks whether the value is undefined, '', null or NaN.

        +

        You can override this for input directives whose concept of being empty is different to the +default. The checkboxInputType directive does this because in its case a value of false +implies empty.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + + + + * + +

        Reference to check.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        boolean

        True if value is empty.

        +
        + + +
      • + +
      • +

        $setValidity(validationErrorKey, isValid);

        + +

        +

        Change the validity state, and notifies the form when the control changes validity. (i.e. it +does not notify form if given validator is already marked as invalid).

        +

        This method should be called by validators - i.e. the parser or formatter functions.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + validationErrorKey + + + + string + +

        Name of the validator. the validationErrorKey will assign + to $error[validationErrorKey]=!isValid so that it is available for data-binding. + The validationErrorKey should be in camelCase and will get converted into dash-case + for class name. Example: myError will result in ng-valid-my-error and ng-invalid-my-error + class and can be bound to as {{someForm.someControl.$error.myError}} .

        + + +
        + isValid + + + + boolean + +

        Whether the current state is valid (true) or invalid (false).

        + + +
        + + + + + + + +
      • + +
      • +

        $setPristine();

        + +

        +

        Sets the control to its pristine state.

        +

        This method can be called to remove the 'ng-dirty' class and set the control to its pristine +state (ng-pristine class).

        +
        + + + + + + + +
      • + +
      • +

        $setViewValue(value);

        + +

        +

        Update the view value.

        +

        This method should be called when the view value changes, typically from within a DOM event handler. +For example input and +select directives call it.

        +

        It will update the $viewValue, then pass this value through each of the functions in $parsers, +which includes any validators. The value that comes out of this $parsers pipeline, be applied to +$modelValue and the expression specified in the ng-model attribute.

        +

        Lastly, all the registered change listeners, in the $viewChangeListeners list, are called.

        +

        Note that calling this function does not trigger a $digest.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + + + + string + +

        Value from the view.

        + + +
        + + + + + + + +
      • +
      + + +

      Properties

      +
        +
      • +

        $viewValue

        + + + + + +
        string

        Actual string value in the view.

        +
        +
      • + +
      • +

        $modelValue

        + + + + + +
        *

        The value in the model, that the control is bound to.

        +
        +
      • + +
      • +

        $parsers

        + + + + + +
        Array.<Function>

        Array of functions to execute, as a pipeline, whenever + the control reads value from the DOM. Each function is called, in turn, passing the value + through to the next. The last return value is used to populate the model. + Used to sanitize / convert the value as well as validation. For validation, + the parsers should update the validity state using + $setValidity(), + and return undefined for invalid values.

        +
        +
      • + +
      • +

        $formatters

        + + + + + +
        Array.<Function>

        Array of functions to execute, as a pipeline, whenever + the model value changes. Each function is called, in turn, passing the value through to the + next. Used to format / convert values for display in the control and validation.

        +
        function formatter(value) {
        +if (value) {
        +  return value.toUpperCase();
        +}
        +}
        +ngModel.$formatters.push(formatter);
        +
        +
        +
      • + +
      • +

        $viewChangeListeners

        + + + + + +
        Array.<Function>

        Array of functions to execute whenever the + view value has changed. It is called with no arguments, and its return value is ignored. + This can be used in place of additional $watches against the model value.

        +
        +
      • + +
      • +

        $error

        + + + + + +
        Object

        An object hash with all errors as keys.

        +
        +
      • + +
      • +

        $pristine

        + + + + + +
        boolean

        True if user has not interacted with the control yet.

        +
        +
      • + +
      • +

        $dirty

        + + + + + +
        boolean

        True if user has already interacted with the control.

        +
        +
      • + +
      • +

        $valid

        + + + + + +
        boolean

        True if there is no error.

        +
        +
      • + +
      • +

        $invalid

        + + + + + +
        boolean

        True if at least one error on the control.

        +
        +
      • +
      + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ngAnimate.html b/1.2.30/docs/partials/api/ngAnimate.html new file mode 100644 index 0000000000..93971ace05 --- /dev/null +++ b/1.2.30/docs/partials/api/ngAnimate.html @@ -0,0 +1,322 @@ + Improve this Doc + + +

      + ngAnimate +

      + +

      ngAnimate

      +

      The ngAnimate module provides support for JavaScript, CSS3 transition and CSS3 keyframe animation hooks within existing core and custom directives.

      +
      + +

      Usage

      +

      To see animations in action, all that is required is to define the appropriate CSS classes +or to register a JavaScript animation via the myModule.animation() function. The directives that support animation automatically are: +ngRepeat, ngInclude, ngIf, ngSwitch, ngShow, ngHide, ngView and ngClass. Custom directives can take advantage of animation +by using the $animate service.

      +

      Below is a more detailed breakdown of the supported animation events provided by pre-existing ng directives:

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      DirectiveSupported Animations
      ngRepeatenter, leave and move
      ngViewenter and leave
      ngIncludeenter and leave
      ngSwitchenter and leave
      ngIfenter and leave
      ngClassadd and remove
      ngShow & ngHideadd and remove (the ng-hide class value)
      formadd and remove (dirty, pristine, valid, invalid & all other validations)
      ngModeladd and remove (dirty, pristine, valid, invalid & all other validations)
      +

      You can find out more information about animations upon visiting each directive page.

      +

      Below is an example of how to apply animations to a directive that supports animation hooks:

      +
      <style type="text/css">
      +.slide.ng-enter, .slide.ng-leave {
      +  -webkit-transition:0.5s linear all;
      +  transition:0.5s linear all;
      +}
      +
      +.slide.ng-enter { }        /* starting animations for enter */
      +.slide.ng-enter.ng-enter-active { } /* terminal animations for enter */
      +.slide.ng-leave { }        /* starting animations for leave */
      +.slide.ng-leave.ng-leave-active { } /* terminal animations for leave */
      +</style>
      +
      +<!--
      +the animate service will automatically add .ng-enter and .ng-leave to the element
      +to trigger the CSS transition/animations
      +-->
      +<ANY class="slide" ng-include="..."></ANY>
      +
      +

      Keep in mind that, by default, if an animation is running, any child elements cannot be animated +until the parent element's animation has completed. This blocking feature can be overridden by +placing the ng-animate-children attribute on a parent container tag.

      +
      <div class="slide-animation" ng-if="on" ng-animate-children>
      +<div class="fade-animation" ng-if="on">
      +  <div class="explode-animation" ng-if="on">
      +     ...
      +  </div>
      +</div>
      +</div>
      +
      +

      When the on expression value changes and an animation is triggered then each of the elements within +will all animate without the block being applied to child elements.

      +

      CSS-defined Animations

      +The animate service will automatically apply two CSS classes to the animated element and these two CSS classes +are designed to contain the start and end CSS styling. Both CSS transitions and keyframe animations are supported +and can be used to play along with this naming structure.

      +

      The following code below demonstrates how to perform animations using CSS transitions with Angular:

      +
      <style type="text/css">
      +/*
      + The animate class is apart of the element and the ng-enter class
      + is attached to the element once the enter animation event is triggered
      +*/
      +.reveal-animation.ng-enter {
      + -webkit-transition: 1s linear all; /* Safari/Chrome */
      + transition: 1s linear all; /* All other modern browsers and IE10+ */
      +
      + /* The animation preparation code */
      + opacity: 0;
      +}
      +
      +/*
      + Keep in mind that you want to combine both CSS
      + classes together to avoid any CSS-specificity
      + conflicts
      +*/
      +.reveal-animation.ng-enter.ng-enter-active {
      + /* The animation code itself */
      + opacity: 1;
      +}
      +</style>
      +
      +<div class="view-container">
      +  <div ng-view class="reveal-animation"></div>
      +</div>
      +
      +

      The following code below demonstrates how to perform animations using CSS animations with Angular:

      +
      <style type="text/css">
      +.reveal-animation.ng-enter {
      +  -webkit-animation: enter_sequence 1s linear; /* Safari/Chrome */
      +  animation: enter_sequence 1s linear; /* IE10+ and Future Browsers */
      +}
      +@-webkit-keyframes enter_sequence {
      +  from { opacity:0; }
      +  to { opacity:1; }
      +}
      +@keyframes enter_sequence {
      +  from { opacity:0; }
      +  to { opacity:1; }
      +}
      +</style>
      +
      +<div class="view-container">
      +  <div ng-view class="reveal-animation"></div>
      +</div>
      +
      +

      Both CSS3 animations and transitions can be used together and the animate service will figure out the correct duration and delay timing.

      +

      Upon DOM mutation, the event class is added first (something like ng-enter), then the browser prepares itself to add +the active class (in this case ng-enter-active) which then triggers the animation. The animation module will automatically +detect the CSS code to determine when the animation ends. Once the animation is over then both CSS classes will be +removed from the DOM. If a browser does not support CSS transitions or CSS animations then the animation will start and end +immediately resulting in a DOM element that is at its final state. This final state is when the DOM element +has no CSS transition/animation classes applied to it.

      +

      CSS Staggering Animations

      +A Staggering animation is a collection of animations that are issued with a slight delay in between each successive operation resulting in a +curtain-like effect. The ngAnimate module, as of 1.2.0, supports staggering animations and the stagger effect can be +performed by creating a ng-EVENT-stagger CSS class and attaching that class to the base CSS class used for +the animation. The style property expected within the stagger class can either be a transition-delay or an +animation-delay property (or both if your animation contains both transitions and keyframe animations).

      +
      .my-animation.ng-enter {
      +/* standard transition code */
      +-webkit-transition: 1s linear all;
      +transition: 1s linear all;
      +opacity:0;
      +}
      +.my-animation.ng-enter-stagger {
      +/* this will have a 100ms delay between each successive leave animation */
      +-webkit-transition-delay: 0.1s;
      +transition-delay: 0.1s;
      +
      +/* in case the stagger doesn't work then these two values
      + must be set to 0 to avoid an accidental CSS inheritance */
      +-webkit-transition-duration: 0s;
      +transition-duration: 0s;
      +}
      +.my-animation.ng-enter.ng-enter-active {
      +/* standard transition styles */
      +opacity:1;
      +}
      +
      +

      Staggering animations work by default in ngRepeat (so long as the CSS class is defined). Outside of ngRepeat, to use staggering animations +on your own, they can be triggered by firing multiple calls to the same event on $animate. However, the restrictions surrounding this +are that each of the elements must have the same CSS className value as well as the same parent element. A stagger operation +will also be reset if more than 10ms has passed after the last animation has been fired.

      +

      The following code will issue the ng-leave-stagger event on the element provided:

      +
      var kids = parent.children();
      +
      +$animate.leave(kids[0]); //stagger index=0
      +$animate.leave(kids[1]); //stagger index=1
      +$animate.leave(kids[2]); //stagger index=2
      +$animate.leave(kids[3]); //stagger index=3
      +$animate.leave(kids[4]); //stagger index=4
      +
      +$timeout(function() {
      +  //stagger has reset itself
      +  $animate.leave(kids[5]); //stagger index=0
      +  $animate.leave(kids[6]); //stagger index=1
      +}, 100, false);
      +
      +

      Stagger animations are currently only supported within CSS-defined animations.

      +

      JavaScript-defined Animations

      +In the event that you do not want to use CSS3 transitions or CSS3 animations or if you wish to offer animations on browsers that do not +yet support CSS transitions/animations, then you can make use of JavaScript animations defined inside of your AngularJS module.

      +
      //!annotate="YourApp" Your AngularJS Module|Replace this or ngModule with the module that you used to define your application.
      +var ngModule = angular.module('YourApp', ['ngAnimate']);
      +ngModule.animation('.my-crazy-animation', function() {
      +  return {
      +    enter: function(element, done) {
      +      //run the animation here and call done when the animation is complete
      +      return function(cancelled) {
      +        //this (optional) function will be called when the animation
      +        //completes or when the animation is cancelled (the cancelled
      +        //flag will be set to true if cancelled).
      +      };
      +    },
      +    leave: function(element, done) { },
      +    move: function(element, done) { },
      +
      +    //animation that can be triggered before the class is added
      +    beforeAddClass: function(element, className, done) { },
      +
      +    //animation that can be triggered after the class is added
      +    addClass: function(element, className, done) { },
      +
      +    //animation that can be triggered before the class is removed
      +    beforeRemoveClass: function(element, className, done) { },
      +
      +    //animation that can be triggered after the class is removed
      +    removeClass: function(element, className, done) { }
      +  };
      +});
      +
      +

      JavaScript-defined animations are created with a CSS-like class selector and a collection of events which are set to run +a javascript callback function. When an animation is triggered, $animate will look for a matching animation which fits +the element's CSS class attribute value and then run the matching animation event function (if found). +In other words, if the CSS classes present on the animated element match any of the JavaScript animations then the callback function will +be executed. It should be also noted that only simple, single class selectors are allowed (compound class selectors are not supported).

      +

      Within a JavaScript animation, an object containing various event callback animation functions is expected to be returned. +As explained above, these callbacks are triggered based on the animation event. Therefore if an enter animation is run, +and the JavaScript animation is found, then the enter callback will handle that animation (in addition to the CSS keyframe animation +or transition code that is defined via a stylesheet).

      + + + +

      Installation

      + +

      First include angular-animate.js in your HTML:

      + +
          <script src="angular.js">
          <script src="angular-animate.js">
      + +

      You can download this file from the following places:

      +
        +
      • + Google CDN
        + e.g. //ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-animate.js +
      • +
      • + Bower
        + e.g.
        bower install angular-animate@X.Y.Z
        +
      • +
      • + code.angularjs.org
        + e.g.
        "//code.angularjs.org/X.Y.Z/angular-animate.js"
        +
      • +
      +

      where X.Y.Z is the AngularJS version you are running.

      +

      Then load the module in your application by adding it as a dependent module:

      +
        angular.module('app', ['ngAnimate']);
      + +

      With that you're ready to get started!

      + + +
      +

      Module Components

      + +
      +

      Provider

      + + + + + + + + + + + +
      NameDescription
      $animateProvider

      The $animateProvider allows developers to register JavaScript animation event handlers directly inside of a module. +When an animation is triggered, the $animate service will query the $animate service to find any animations that match +the provided name value.

      +
      +
      + +
      +

      Service

      + + + + + + + + + + + +
      NameDescription
      $animate

      The $animate service provides animation detection support while performing DOM operations (enter, leave and move) as well as during addClass and removeClass operations. +When any of these operations are run, the $animate service +will examine any JavaScript-defined animations (which are defined by using the $animateProvider provider object) +as well as any CSS-defined animations against the CSS classes present on the element once the DOM operation is run.

      +
      +
      + +
      + + + + diff --git a/1.2.30/docs/partials/api/ngAnimate/provider.html b/1.2.30/docs/partials/api/ngAnimate/provider.html new file mode 100644 index 0000000000..4ab71d7f37 --- /dev/null +++ b/1.2.30/docs/partials/api/ngAnimate/provider.html @@ -0,0 +1,25 @@ + +

      Provider components in ngAnimate

      + + + +
      +
      + + + + + + + + + + + +
      NameDescription
      $animateProvider

      The $animateProvider allows developers to register JavaScript animation event handlers directly inside of a module. +When an animation is triggered, the $animate service will query the $animate service to find any animations that match +the provided name value.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngAnimate/provider/$animateProvider.html b/1.2.30/docs/partials/api/ngAnimate/provider/$animateProvider.html new file mode 100644 index 0000000000..5dae5b2885 --- /dev/null +++ b/1.2.30/docs/partials/api/ngAnimate/provider/$animateProvider.html @@ -0,0 +1,54 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $animateProvider

      +
        + +
      1. + - $animate +
      2. + +
      3. + - provider in module ngAnimate +
      4. +
      +
      + + + +
      +

      The $animateProvider allows developers to register JavaScript animation event handlers directly inside of a module. +When an animation is triggered, the $animate service will query the $animate service to find any animations that match +the provided name value.

      +

      Requires the ngAnimate module to be installed.

      +

      Please visit the ngAnimate module overview page learn more about how to use animations in your application.

      + +
      + + + + +
      + + + + + + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ngAnimate/service.html b/1.2.30/docs/partials/api/ngAnimate/service.html new file mode 100644 index 0000000000..316ee77283 --- /dev/null +++ b/1.2.30/docs/partials/api/ngAnimate/service.html @@ -0,0 +1,26 @@ + +

      Service components in ngAnimate

      + + + +
      +
      + + + + + + + + + + + +
      NameDescription
      $animate

      The $animate service provides animation detection support while performing DOM operations (enter, leave and move) as well as during addClass and removeClass operations. +When any of these operations are run, the $animate service +will examine any JavaScript-defined animations (which are defined by using the $animateProvider provider object) +as well as any CSS-defined animations against the CSS classes present on the element once the DOM operation is run.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngAnimate/service/$animate.html b/1.2.30/docs/partials/api/ngAnimate/service/$animate.html new file mode 100644 index 0000000000..f0a21ffb30 --- /dev/null +++ b/1.2.30/docs/partials/api/ngAnimate/service/$animate.html @@ -0,0 +1,812 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $animate

      +
        + +
      1. + - $animateProvider +
      2. + +
      3. + - service in module ngAnimate +
      4. +
      +
      + + + +
      +

      The $animate service provides animation detection support while performing DOM operations (enter, leave and move) as well as during addClass and removeClass operations. +When any of these operations are run, the $animate service +will examine any JavaScript-defined animations (which are defined by using the $animateProvider provider object) +as well as any CSS-defined animations against the CSS classes present on the element once the DOM operation is run.

      +

      The $animate service is used behind the scenes with pre-existing directives and animation with these directives +will work out of the box without any extra configuration.

      +

      Requires the ngAnimate module to be installed.

      +

      Please visit the ngAnimate module overview page learn more about how to use animations in your application.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      $animate();

      + + + + + + + + + +

      Methods

      +
        +
      • +

        enter(element, parentElement, afterElement, [doneCallback]);

        + +

        +

        Appends the element to the parentElement element that resides in the document and then runs the enter animation. Once +the animation is started, the following CSS classes will be present on the element for the duration of the animation:

        +

        Below is a breakdown of each step that occurs during enter animation:

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Animation StepWhat the element class attribute looks like
        1. $animate.enter(...) is calledclass="my-animation"
        2. element is inserted into the parentElement element or beside the afterElement elementclass="my-animation"
        3. $animate runs any JavaScript-defined animations on the elementclass="my-animation ng-animate"
        4. the .ng-enter class is added to the elementclass="my-animation ng-animate ng-enter"
        5. $animate scans the element styles to get the CSS transition/animation duration and delayclass="my-animation ng-animate ng-enter"
        6. $animate waits for 10ms (this performs a reflow)class="my-animation ng-animate ng-enter"
        7. the .ng-enter-active and .ng-animate-active classes are added (this triggers the CSS transition/animation)class="my-animation ng-animate ng-animate-active ng-enter ng-enter-active"
        8. $animate waits for X milliseconds for the animation to completeclass="my-animation ng-animate ng-animate-active ng-enter ng-enter-active"
        9. The animation ends and all generated CSS classes are removed from the elementclass="my-animation"
        10. The doneCallback() callback is fired (if provided)class="my-animation"
        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + element + + + + DOMElement + +

        the element that will be the focus of the enter animation

        + + +
        + parentElement + + + + DOMElement + +

        the parent element of the element that will be the focus of the enter animation

        + + +
        + afterElement + + + + DOMElement + +

        the sibling element (which is the previous element) of the element that will be the focus of the enter animation

        + + +
        + doneCallback + +
        (optional)
        +
        + function()= + +

        the callback function that will be called once the animation is complete

        + + +
        + + + + + + + +
      • + +
      • +

        leave(element, [doneCallback]);

        + +

        +

        Runs the leave animation operation and, upon completion, removes the element from the DOM. Once +the animation is started, the following CSS classes will be added for the duration of the animation:

        +

        Below is a breakdown of each step that occurs during leave animation:

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Animation StepWhat the element class attribute looks like
        1. $animate.leave(...) is calledclass="my-animation"
        2. $animate runs any JavaScript-defined animations on the elementclass="my-animation ng-animate"
        3. the .ng-leave class is added to the elementclass="my-animation ng-animate ng-leave"
        4. $animate scans the element styles to get the CSS transition/animation duration and delayclass="my-animation ng-animate ng-leave"
        5. $animate waits for 10ms (this performs a reflow)class="my-animation ng-animate ng-leave"
        6. the .ng-leave-active and .ng-animate-active classes is added (this triggers the CSS transition/animation)class="my-animation ng-animate ng-animate-active ng-leave ng-leave-active"
        7. $animate waits for X milliseconds for the animation to completeclass="my-animation ng-animate ng-animate-active ng-leave ng-leave-active"
        8. The animation ends and all generated CSS classes are removed from the elementclass="my-animation"
        9. The element is removed from the DOM...
        10. The doneCallback() callback is fired (if provided)...
        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + element + + + + DOMElement + +

        the element that will be the focus of the leave animation

        + + +
        + doneCallback + +
        (optional)
        +
        + function()= + +

        the callback function that will be called once the animation is complete

        + + +
        + + + + + + + +
      • + +
      • +

        move(element, parentElement, afterElement, [doneCallback]);

        + +

        +

        Fires the move DOM operation. Just before the animation starts, the animate service will either append it into the parentElement container or +add the element directly after the afterElement element if present. Then the move animation will be run. Once +the animation is started, the following CSS classes will be added for the duration of the animation:

        +

        Below is a breakdown of each step that occurs during move animation:

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Animation StepWhat the element class attribute looks like
        1. $animate.move(...) is calledclass="my-animation"
        2. element is moved into the parentElement element or beside the afterElement elementclass="my-animation"
        3. $animate runs any JavaScript-defined animations on the elementclass="my-animation ng-animate"
        4. the .ng-move class is added to the elementclass="my-animation ng-animate ng-move"
        5. $animate scans the element styles to get the CSS transition/animation duration and delayclass="my-animation ng-animate ng-move"
        6. $animate waits for 10ms (this performs a reflow)class="my-animation ng-animate ng-move"
        7. the .ng-move-active and .ng-animate-active classes is added (this triggers the CSS transition/animation)class="my-animation ng-animate ng-animate-active ng-move ng-move-active"
        8. $animate waits for X milliseconds for the animation to completeclass="my-animation ng-animate ng-animate-active ng-move ng-move-active"
        9. The animation ends and all generated CSS classes are removed from the elementclass="my-animation"
        10. The doneCallback() callback is fired (if provided)class="my-animation"
        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + element + + + + DOMElement + +

        the element that will be the focus of the move animation

        + + +
        + parentElement + + + + DOMElement + +

        the parentElement element of the element that will be the focus of the move animation

        + + +
        + afterElement + + + + DOMElement + +

        the sibling element (which is the previous element) of the element that will be the focus of the move animation

        + + +
        + doneCallback + +
        (optional)
        +
        + function()= + +

        the callback function that will be called once the animation is complete

        + + +
        + + + + + + + +
      • + +
      • +

        addClass(element, className, [doneCallback]);

        + +

        +

        Triggers a custom animation event based off the className variable and then attaches the className value to the element as a CSS class. +Unlike the other animation methods, the animate service will suffix the className value with -add in order to provide +the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if no CSS transitions +or keyframes are defined on the -add or base CSS class).

        +

        Below is a breakdown of each step that occurs during addClass animation:

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Animation StepWhat the element class attribute looks like
        1. $animate.addClass(element, 'super') is calledclass="my-animation"
        2. $animate runs any JavaScript-defined animations on the elementclass="my-animation ng-animate"
        3. the .super-add class are added to the elementclass="my-animation ng-animate super-add"
        4. $animate scans the element styles to get the CSS transition/animation duration and delayclass="my-animation ng-animate super-add"
        5. $animate waits for 10ms (this performs a reflow)class="my-animation ng-animate super-add"
        6. the .super, .super-add-active and .ng-animate-active classes are added (this triggers the CSS transition/animation)class="my-animation ng-animate ng-animate-active super super-add super-add-active"
        7. $animate waits for X milliseconds for the animation to completeclass="my-animation super super-add super-add-active"
        8. The animation ends and all generated CSS classes are removed from the elementclass="my-animation super"
        9. The super class is kept on the elementclass="my-animation super"
        10. The doneCallback() callback is fired (if provided)class="my-animation super"
        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + element + + + + DOMElement + +

        the element that will be animated

        + + +
        + className + + + + string + +

        the CSS class that will be added to the element and then animated

        + + +
        + doneCallback + +
        (optional)
        +
        + function()= + +

        the callback function that will be called once the animation is complete

        + + +
        + + + + + + + +
      • + +
      • +

        removeClass(element, className, [doneCallback]);

        + +

        +

        Triggers a custom animation event based off the className variable and then removes the CSS class provided by the className value +from the element. Unlike the other animation methods, the animate service will suffix the className value with -remove in +order to provide the animate service the setup and active CSS classes in order to trigger the animation (this will be skipped if +no CSS transitions or keyframes are defined on the -remove or base CSS classes).

        +

        Below is a breakdown of each step that occurs during removeClass animation:

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Animation StepWhat the element class attribute looks like
        1. $animate.removeClass(element, 'super') is calledclass="my-animation super"
        2. $animate runs any JavaScript-defined animations on the elementclass="my-animation super ng-animate"
        3. the .super-remove class are added to the elementclass="my-animation super ng-animate super-remove"
        4. $animate scans the element styles to get the CSS transition/animation duration and delayclass="my-animation super ng-animate super-remove"
        5. $animate waits for 10ms (this performs a reflow)class="my-animation super ng-animate super-remove"
        6. the .super-remove-active and .ng-animate-active classes are added and .super is removed (this triggers the CSS transition/animation)class="my-animation ng-animate ng-animate-active super-remove super-remove-active"
        7. $animate waits for X milliseconds for the animation to completeclass="my-animation ng-animate ng-animate-active super-remove super-remove-active"
        8. The animation ends and all generated CSS classes are removed from the elementclass="my-animation"
        9. The doneCallback() callback is fired (if provided)class="my-animation"
        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + element + + + + DOMElement + +

        the element that will be animated

        + + +
        + className + + + + string + +

        the CSS class that will be animated and then removed from the element

        + + +
        + doneCallback + +
        (optional)
        +
        + function()= + +

        the callback function that will be called once the animation is complete

        + + +
        + + + + + + + +
      • + +
      • +

        enabled([value], [element]);

        + +

        +

        Globally enables/disables animations.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + value + +
        (optional)
        +
        + boolean + +

        If provided then set the animation on or off.

        + + +
        + element + +
        (optional)
        +
        + DOMElement + +

        If provided then the element will be used to represent the enable/disable operation

        + + +
        + + + + + + +

        Returns

        + + + + + +
        boolean

        Current animation state.

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ngCookies.html b/1.2.30/docs/partials/api/ngCookies.html new file mode 100644 index 0000000000..c8642af4c7 --- /dev/null +++ b/1.2.30/docs/partials/api/ngCookies.html @@ -0,0 +1,77 @@ + Improve this Doc + + +

      + ngCookies +

      + +

      ngCookies

      +

      The ngCookies module provides a convenient wrapper for reading and writing browser cookies.

      +
      + +

      See $cookies and +$cookieStore for usage.

      + + + +

      Installation

      + +

      First include angular-cookies.js in your HTML:

      + +
          <script src="angular.js">
          <script src="angular-cookies.js">
      + +

      You can download this file from the following places:

      +
        +
      • + Google CDN
        + e.g. //ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-cookies.js +
      • +
      • + Bower
        + e.g.
        bower install angular-cookies@X.Y.Z
        +
      • +
      • + code.angularjs.org
        + e.g.
        "//code.angularjs.org/X.Y.Z/angular-cookies.js"
        +
      • +
      +

      where X.Y.Z is the AngularJS version you are running.

      +

      Then load the module in your application by adding it as a dependent module:

      +
        angular.module('app', ['ngCookies']);
      + +

      With that you're ready to get started!

      + + +
      +

      Module Components

      + +
      +

      Service

      + + + + + + + + + + + + + + + + +
      NameDescription
      $cookies

      Provides read/write access to browser's cookies.

      +
      $cookieStore

      Provides a key-value (string-object) storage, that is backed by session cookies. +Objects put or retrieved from this storage are automatically serialized or +deserialized by angular's toJson/fromJson.

      +
      +
      + +
      + + + + diff --git a/1.2.30/docs/partials/api/ngCookies/service.html b/1.2.30/docs/partials/api/ngCookies/service.html new file mode 100644 index 0000000000..2da6d29389 --- /dev/null +++ b/1.2.30/docs/partials/api/ngCookies/service.html @@ -0,0 +1,31 @@ + +

      Service components in ngCookies

      + + + +
      +
      + + + + + + + + + + + + + + + + +
      NameDescription
      $cookies

      Provides read/write access to browser's cookies.

      +
      $cookieStore

      Provides a key-value (string-object) storage, that is backed by session cookies. +Objects put or retrieved from this storage are automatically serialized or +deserialized by angular's toJson/fromJson.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngCookies/service/$cookieStore.html b/1.2.30/docs/partials/api/ngCookies/service/$cookieStore.html new file mode 100644 index 0000000000..28262a7e6a --- /dev/null +++ b/1.2.30/docs/partials/api/ngCookies/service/$cookieStore.html @@ -0,0 +1,235 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $cookieStore

      +
        + + + +
      1. + - service in module ngCookies +
      2. +
      +
      + + + +
      +

      Provides a key-value (string-object) storage, that is backed by session cookies. +Objects put or retrieved from this storage are automatically serialized or +deserialized by angular's toJson/fromJson.

      +

      Requires the ngCookies module to be installed.

      + +
      + + + + +
      + +

      Dependencies

      + + + + + + + + +

      Methods

      +
        +
      • +

        get(key);

        + +

        +

        Returns the value of given cookie key

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + key + + + + string + +

        Id to use for lookup.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        Object

        Deserialized cookie value.

        +
        + + +
      • + +
      • +

        put(key, value);

        + +

        +

        Sets a value for given cookie key

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + key + + + + string + +

        Id for the value.

        + + +
        + value + + + + Object + +

        Value to be stored.

        + + +
        + + + + + + + +
      • + +
      • +

        remove(key);

        + +

        +

        Remove given cookie

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + key + + + + string + +

        Id of the key-value pair to delete.

        + + +
        + + + + + + + +
      • +
      + + + + + + +

      Example

      angular.module('cookieStoreExample', ['ngCookies'])
      +.controller('ExampleController', ['$cookieStore', function($cookieStore) {
      +  // Put cookie
      +  $cookieStore.put('myFavorite','oatmeal');
      +  // Get cookie
      +  var favoriteCookie = $cookieStore.get('myFavorite');
      +  // Removing a cookie
      +  $cookieStore.remove('myFavorite');
      +}]);
      +
      + +
      + + diff --git a/1.2.30/docs/partials/api/ngCookies/service/$cookies.html b/1.2.30/docs/partials/api/ngCookies/service/$cookies.html new file mode 100644 index 0000000000..b839803af5 --- /dev/null +++ b/1.2.30/docs/partials/api/ngCookies/service/$cookies.html @@ -0,0 +1,61 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $cookies

      +
        + + + +
      1. + - service in module ngCookies +
      2. +
      +
      + + + +
      +

      Provides read/write access to browser's cookies.

      +

      Only a simple Object is exposed and by adding or removing properties to/from this object, new +cookies are created/deleted at the end of current $eval. +The object's properties can only be strings.

      +

      Requires the ngCookies module to be installed.

      + +
      + + + + +
      + + + + + + + + + + + + + +

      Example

      angular.module('cookiesExample', ['ngCookies'])
      +.controller('ExampleController', ['$cookies', function($cookies) {
      +  // Retrieving a cookie
      +  var favoriteCookie = $cookies.myFavorite;
      +  // Setting a cookie
      +  $cookies.myFavorite = 'oatmeal';
      +}]);
      +
      + +
      + + diff --git a/1.2.30/docs/partials/api/ngMock.html b/1.2.30/docs/partials/api/ngMock.html new file mode 100644 index 0000000000..6134df886f --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock.html @@ -0,0 +1,180 @@ + Improve this Doc + + +

      + ngMock +

      + +

      ngMock

      +

      The ngMock module provides support to inject and mock Angular services into unit tests. +In addition, ngMock also extends various core ng services such that they can be +inspected and controlled in a synchronous manner within test code.

      +
      + + +

      Installation

      + +

      First include angular-mocks.js in your HTML:

      + +
          <script src="angular.js">
          <script src="angular-mocks.js">
      + +

      You can download this file from the following places:

      +
        +
      • + Google CDN
        + e.g. //ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-mocks.js +
      • +
      • + Bower
        + e.g.
        bower install angular-mocks@X.Y.Z
        +
      • +
      • + code.angularjs.org
        + e.g.
        "//code.angularjs.org/X.Y.Z/angular-mocks.js"
        +
      • +
      +

      where X.Y.Z is the AngularJS version you are running.

      +

      Then load the module in your application by adding it as a dependent module:

      +
        angular.module('app', ['ngMock']);
      + +

      With that you're ready to get started!

      + + +
      +

      Module Components

      + +
      +

      Object

      + + + + + + + + + + + +
      NameDescription
      angular.mock

      Namespace from 'angular-mocks.js' which contains testing related code.

      +
      +
      + +
      +

      Provider

      + + + + + + + + + + + +
      NameDescription
      $exceptionHandlerProvider

      Configures the mock implementation of $exceptionHandler to rethrow or to log errors +passed into the $exceptionHandler.

      +
      +
      + +
      +

      Service

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      $exceptionHandler

      Mock implementation of $exceptionHandler that rethrows or logs errors passed +into it. See $exceptionHandlerProvider for configuration +information.

      +
      $log

      Mock implementation of $log that gathers all logged messages in arrays +(one array per logging level). These arrays are exposed as logs property of each of the +level-specific log function, e.g. for level error the array is exposed as $log.error.logs.

      +
      $interval

      Mock implementation of the $interval service.

      +
      $httpBackend

      Fake HTTP backend implementation suitable for unit testing applications that use the +$http service.

      +
      $timeout

      This service is just a simple decorator for $timeout service +that adds a "flush" and "verifyNoPendingTasks" methods.

      +
      +
      + +
      +

      Type

      + + + + + + + + + + + +
      NameDescription
      angular.mock.TzDate

      NOTE: this is not an injectable instance, just a globally available mock class of Date.

      +
      +
      + +
      +

      Function

      + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      angular.mock.dump

      NOTE: this is not an injectable instance, just a globally available function.

      +
      angular.mock.module

      NOTE: This function is also published on window for easy access.
      +NOTE: This function is declared ONLY WHEN running tests with jasmine or mocha

      +
      angular.mock.inject

      NOTE: This function is also published on window for easy access.
      +NOTE: This function is declared ONLY WHEN running tests with jasmine or mocha

      +
      +
      + +
      + + + + diff --git a/1.2.30/docs/partials/api/ngMock/function.html b/1.2.30/docs/partials/api/ngMock/function.html new file mode 100644 index 0000000000..fe6147aed3 --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/function.html @@ -0,0 +1,37 @@ + +

      Function components in ngMock

      + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      angular.mock.dump

      NOTE: this is not an injectable instance, just a globally available function.

      +
      angular.mock.module

      NOTE: This function is also published on window for easy access.
      +NOTE: This function is declared ONLY WHEN running tests with jasmine or mocha

      +
      angular.mock.inject

      NOTE: This function is also published on window for easy access.
      +NOTE: This function is declared ONLY WHEN running tests with jasmine or mocha

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngMock/function/angular.mock.dump.html b/1.2.30/docs/partials/api/ngMock/function/angular.mock.dump.html new file mode 100644 index 0000000000..30c9329c43 --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/function/angular.mock.dump.html @@ -0,0 +1,99 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.mock.dump

      +
        + +
      1. + - function in module ngMock +
      2. +
      +
      + + + +
      +

      NOTE: this is not an injectable instance, just a globally available function.

      +

      Method for serializing common angular objects (scope, elements, etc..) into strings, useful for +debugging.

      +

      This method is also available on window, where it can be used to display objects on debug +console.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.mock.dump(object);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + object + + + + * + +

      any object to turn into string.

      + + +
      + +
      + +

      Returns

      + + + + + +
      string

      a serialized string of the argument

      +
      + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ngMock/function/angular.mock.inject.html b/1.2.30/docs/partials/api/ngMock/function/angular.mock.inject.html new file mode 100644 index 0000000000..7f1a2b6d81 --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/function/angular.mock.inject.html @@ -0,0 +1,151 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.mock.inject

      +
        + +
      1. + - function in module ngMock +
      2. +
      +
      + + + +
      +

      NOTE: This function is also published on window for easy access.
      +NOTE: This function is declared ONLY WHEN running tests with jasmine or mocha

      +

      The inject function wraps a function into an injectable function. The inject() creates new +instance of $injector per test, which is then used for +resolving references.

      +

      Resolving References (Underscore Wrapping)

      +

      Often, we would like to inject a reference once, in a beforeEach() block and reuse this +in multiple it() clauses. To be able to do this we must assign the reference to a variable +that is declared in the scope of the describe() block. Since we would, most likely, want +the variable to have the same name of the reference we have a problem, since the parameter +to the inject() function would hide the outer variable.

      +

      To help with this, the injected parameters can, optionally, be enclosed with underscores. +These are ignored by the injector when the reference name is resolved.

      +

      For example, the parameter _myService_ would be resolved as the reference myService. +Since it is available in the function body as myService, we can then assign it to a variable +defined in an outer scope.

      +
      // Defined out reference variable outside
      +var myService;
      +
      +// Wrap the parameter in underscores
      +beforeEach( inject( function(_myService_){
      +  myService = _myService_;
      +}));
      +
      +// Use myService in a series of tests.
      +it('makes use of myService', function() {
      +  myService.doStuff();
      +});
      +
      +

      See also angular.mock.module

      +

      Example

      +

      Example of what a typical jasmine tests looks like with the inject method.

      +
      angular.module('myApplicationModule', [])
      +    .value('mode', 'app')
      +    .value('version', 'v1.0.1');
      +
      +
      +describe('MyApp', function() {
      +
      +  // You need to load modules that you want to test,
      +  // it loads only the "ng" module by default.
      +  beforeEach(module('myApplicationModule'));
      +
      +
      +  // inject() is used to inject arguments of all given functions
      +  it('should provide a version', inject(function(mode, version) {
      +    expect(version).toEqual('v1.0.1');
      +    expect(mode).toEqual('app');
      +  }));
      +
      +
      +  // The inject and module method can also be used inside of the it or beforeEach
      +  it('should override a version and test the new version is injected', function() {
      +    // module() takes functions or strings (module aliases)
      +    module(function($provide) {
      +      $provide.value('version', 'overridden'); // override version here
      +    });
      +
      +    inject(function(version) {
      +      expect(version).toEqual('overridden');
      +    });
      +  });
      +});
      +
      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.mock.inject(fns);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + fns + + + + ...Function + +

      any number of functions which will be injected using the injector.

      + + +
      + +
      + + + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ngMock/function/angular.mock.module.html b/1.2.30/docs/partials/api/ngMock/function/angular.mock.module.html new file mode 100644 index 0000000000..1f339af72a --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/function/angular.mock.module.html @@ -0,0 +1,96 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.mock.module

      +
        + +
      1. + - function in module ngMock +
      2. +
      +
      + + + +
      +

      NOTE: This function is also published on window for easy access.
      +NOTE: This function is declared ONLY WHEN running tests with jasmine or mocha

      +

      This function registers a module configuration code. It collects the configuration information +which will be used when the injector is created by inject.

      +

      See inject for usage example

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.mock.module(fns);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + fns + + + + stringfunction()Object + +

      any number of modules which are represented as string + aliases or as anonymous module initialization functions. The modules are used to + configure the injector. The 'ng' and 'ngMock' modules are automatically loaded. If an + object literal is passed they will be registered as values in the module, the key being + the module name and the value being what is returned.

      + + +
      + +
      + + + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ngMock/object.html b/1.2.30/docs/partials/api/ngMock/object.html new file mode 100644 index 0000000000..7576f74dcc --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/object.html @@ -0,0 +1,23 @@ + +

      Object components in ngMock

      + + + +
      +
      + + + + + + + + + + + +
      NameDescription
      angular.mock

      Namespace from 'angular-mocks.js' which contains testing related code.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngMock/object/angular.mock.html b/1.2.30/docs/partials/api/ngMock/object/angular.mock.html new file mode 100644 index 0000000000..cb2a5ce1d5 --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/object/angular.mock.html @@ -0,0 +1,46 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.mock

      +
        + +
      1. + - object in module ngMock +
      2. +
      +
      + + + +
      +

      Namespace from 'angular-mocks.js' which contains testing related code.

      + +
      + + + + +
      + + + + + + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ngMock/provider.html b/1.2.30/docs/partials/api/ngMock/provider.html new file mode 100644 index 0000000000..c28d050bdb --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/provider.html @@ -0,0 +1,24 @@ + +

      Provider components in ngMock

      + + + +
      +
      + + + + + + + + + + + +
      NameDescription
      $exceptionHandlerProvider

      Configures the mock implementation of $exceptionHandler to rethrow or to log errors +passed into the $exceptionHandler.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngMock/provider/$exceptionHandlerProvider.html b/1.2.30/docs/partials/api/ngMock/provider/$exceptionHandlerProvider.html new file mode 100644 index 0000000000..f866b2663b --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/provider/$exceptionHandlerProvider.html @@ -0,0 +1,111 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $exceptionHandlerProvider

      +
        + +
      1. + - $exceptionHandler +
      2. + +
      3. + - provider in module ngMock +
      4. +
      +
      + + + +
      +

      Configures the mock implementation of $exceptionHandler to rethrow or to log errors +passed into the $exceptionHandler.

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        mode(mode);

        + +

        +

        Sets the logging mode.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + mode + + + + string + +

        Mode of operation, defaults to rethrow.

        +
          +
        • rethrow: If any errors are passed into the handler in tests, it typically
          means that there is a bug in the application or test, so this mock will
          +make these tests fail.
          +
          +
        • +
        • log: Sometimes it is desirable to test that an error is thrown, for this case the log
          mode stores an array of errors in `$exceptionHandler.errors`, to allow later
          +assertion of them. See assertEmpty() and
          +reset()
          +
          +
        • +
        + + +
        + + + + + + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ngMock/service.html b/1.2.30/docs/partials/api/ngMock/service.html new file mode 100644 index 0000000000..34a9e85aa2 --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/service.html @@ -0,0 +1,53 @@ + +

      Service components in ngMock

      + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      $exceptionHandler

      Mock implementation of $exceptionHandler that rethrows or logs errors passed +into it. See $exceptionHandlerProvider for configuration +information.

      +
      $log

      Mock implementation of $log that gathers all logged messages in arrays +(one array per logging level). These arrays are exposed as logs property of each of the +level-specific log function, e.g. for level error the array is exposed as $log.error.logs.

      +
      $interval

      Mock implementation of the $interval service.

      +
      $httpBackend

      Fake HTTP backend implementation suitable for unit testing applications that use the +$http service.

      +
      $timeout

      This service is just a simple decorator for $timeout service +that adds a "flush" and "verifyNoPendingTasks" methods.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngMock/service/$exceptionHandler.html b/1.2.30/docs/partials/api/ngMock/service/$exceptionHandler.html new file mode 100644 index 0000000000..5abc28058d --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/service/$exceptionHandler.html @@ -0,0 +1,73 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $exceptionHandler

      +
        + +
      1. + - $exceptionHandlerProvider +
      2. + +
      3. + - service in module ngMock +
      4. +
      +
      + + + +
      +

      Mock implementation of $exceptionHandler that rethrows or logs errors passed +into it. See $exceptionHandlerProvider for configuration +information.

      +
      describe('$exceptionHandlerProvider', function() {
      +
      +  it('should capture log messages and exceptions', function() {
      +
      +    module(function($exceptionHandlerProvider) {
      +      $exceptionHandlerProvider.mode('log');
      +    });
      +
      +    inject(function($log, $exceptionHandler, $timeout) {
      +      $timeout(function() { $log.log(1); });
      +      $timeout(function() { $log.log(2); throw 'banana peel'; });
      +      $timeout(function() { $log.log(3); });
      +      expect($exceptionHandler.errors).toEqual([]);
      +      expect($log.assertEmpty());
      +      $timeout.flush();
      +      expect($exceptionHandler.errors).toEqual(['banana peel']);
      +      expect($log.log.logs).toEqual([[1], [2], [3]]);
      +    });
      +  });
      +});
      +
      + +
      + + + + +
      + + + + + + + + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ngMock/service/$httpBackend.html b/1.2.30/docs/partials/api/ngMock/service/$httpBackend.html new file mode 100644 index 0000000000..861ec976df --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/service/$httpBackend.html @@ -0,0 +1,1648 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $httpBackend

      +
        + + + +
      1. + - service in module ngMock +
      2. +
      +
      + + + +
      +

      Fake HTTP backend implementation suitable for unit testing applications that use the +$http service.

      +

      Note: For fake HTTP backend implementation suitable for end-to-end testing or backend-less +development please see e2e $httpBackend mock.

      +

      During unit testing, we want our unit tests to run quickly and have no external dependencies so +we don’t want to send XHR or +JSONP requests to a real server. All we really need is +to verify whether a certain request has been sent or not, or alternatively just let the +application make requests, respond with pre-trained responses and assert that the end result is +what we expect it to be.

      +

      This mock implementation can be used to respond with static or dynamic responses via the +expect and when apis and their shortcuts (expectGET, whenPOST, etc).

      +

      When an Angular application needs some data from a server, it calls the $http service, which +sends the request to a real server using $httpBackend service. With dependency injection, it is +easy to inject $httpBackend mock (which has the same API as $httpBackend) and use it to verify +the requests and respond with some testing data without sending a request to a real server.

      +

      There are two ways to specify what test data should be returned as http responses by the mock +backend when the code under test makes http requests:

      +
        +
      • $httpBackend.expect - specifies a request expectation
      • +
      • $httpBackend.when - specifies a backend definition
      • +
      +

      Request Expectations vs Backend Definitions

      +

      Request expectations provide a way to make assertions about requests made by the application and +to define responses for those requests. The test will fail if the expected requests are not made +or they are made in the wrong order.

      +

      Backend definitions allow you to define a fake backend for your application which doesn't assert +if a particular request was made or not, it just returns a trained response if a request is made. +The test will pass whether or not the request gets made during testing.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Request expectationsBackend definitions
      Syntax.expect(...).respond(...).when(...).respond(...)
      Typical usagestrict unit testsloose (black-box) unit testing
      Fulfills multiple requestsNOYES
      Order of requests mattersYESNO
      Request requiredYESNO
      Response requiredoptional (see below)YES
      + +

      In cases where both backend definitions and request expectations are specified during unit +testing, the request expectations are evaluated first.

      +

      If a request expectation has no response specified, the algorithm will search your backend +definitions for an appropriate response.

      +

      If a request didn't match any expectation or if the expectation doesn't have the response +defined, the backend definitions are evaluated in sequential order to see if any of them match +the request. The response from the first matched definition is returned.

      +

      Flushing HTTP requests

      +

      The $httpBackend used in production always responds to requests asynchronously. If we preserved +this behavior in unit testing, we'd have to create async unit tests, which are hard to write, +to follow and to maintain. But neither can the testing mock respond synchronously; that would +change the execution of the code under test. For this reason, the mock $httpBackend has a +flush() method, which allows the test to explicitly flush pending requests. This preserves +the async api of the backend, while allowing the test to execute synchronously.

      +

      Unit testing with mock $httpBackend

      +

      The following code shows how to setup and use the mock backend when unit testing a controller. +First we create the controller under test:

      +
      // The controller code
      +function MyController($scope, $http) {
      +  var authToken;
      +
      +  $http.get('/auth.py').success(function(data, status, headers) {
      +    authToken = headers('A-Token');
      +    $scope.user = data;
      +  });
      +
      +  $scope.saveMessage = function(message) {
      +    var headers = { 'Authorization': authToken };
      +    $scope.status = 'Saving...';
      +
      +    $http.post('/add-msg.py', message, { headers: headers } ).success(function(response) {
      +      $scope.status = '';
      +    }).error(function() {
      +      $scope.status = 'ERROR!';
      +    });
      +  };
      +}
      +
      +

      Now we setup the mock backend and create the test specs:

      +
      // testing controller
      +describe('MyController', function() {
      +   var $httpBackend, $rootScope, createController;
      +
      +   beforeEach(inject(function($injector) {
      +     // Set up the mock http service responses
      +     $httpBackend = $injector.get('$httpBackend');
      +     // backend definition common for all tests
      +     $httpBackend.when('GET', '/auth.py').respond({userId: 'userX'}, {'A-Token': 'xxx'});
      +
      +     // Get hold of a scope (i.e. the root scope)
      +     $rootScope = $injector.get('$rootScope');
      +     // The $controller service is used to create instances of controllers
      +     var $controller = $injector.get('$controller');
      +
      +     createController = function() {
      +       return $controller('MyController', {'$scope' : $rootScope });
      +     };
      +   }));
      +
      +
      +   afterEach(function() {
      +     $httpBackend.verifyNoOutstandingExpectation();
      +     $httpBackend.verifyNoOutstandingRequest();
      +   });
      +
      +
      +   it('should fetch authentication token', function() {
      +     $httpBackend.expectGET('/auth.py');
      +     var controller = createController();
      +     $httpBackend.flush();
      +   });
      +
      +
      +   it('should send msg to server', function() {
      +     var controller = createController();
      +     $httpBackend.flush();
      +
      +     // now you don’t care about the authentication, but
      +     // the controller will still send the request and
      +     // $httpBackend will respond without you having to
      +     // specify the expectation and response for this request
      +
      +     $httpBackend.expectPOST('/add-msg.py', 'message content').respond(201, '');
      +     $rootScope.saveMessage('message content');
      +     expect($rootScope.status).toBe('Saving...');
      +     $httpBackend.flush();
      +     expect($rootScope.status).toBe('');
      +   });
      +
      +
      +   it('should send auth header', function() {
      +     var controller = createController();
      +     $httpBackend.flush();
      +
      +     $httpBackend.expectPOST('/add-msg.py', undefined, function(headers) {
      +       // check if the header was send, if it wasn't the expectation won't
      +       // match the request and the test will fail
      +       return headers['Authorization'] == 'xxx';
      +     }).respond(201, '');
      +
      +     $rootScope.saveMessage('whatever');
      +     $httpBackend.flush();
      +   });
      +});
      +
      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        when(method, url, [data], [headers]);

        + +

        +

        Creates a new backend definition.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + method + + + + string + +

        HTTP method.

        + + +
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + data + +
        (optional)
        +
        + stringRegExpfunction(string) + +

        HTTP request body or function that receives + data string and returns true if the data is as expected.

        + + +
        + headers + +
        (optional)
        +
        + Objectfunction(Object) + +

        HTTP headers or function that receives http header + object and returns true if the headers match the current definition.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched + request is handled.

        +
          +
        • respond – + {function([status,] data[, headers, statusText]) + | function(function(method, url, data, headers)} +– The respond method takes a set of static data to be returned or a function that can +return an array containing response status (number), response data (string), response +headers (Object), and the text for the status (string).
        • +
        +
        + + +
      • + +
      • +

        whenGET(url, [headers]);

        + +

        +

        Creates a new backend definition for GET requests. For more info see when().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + headers + +
        (optional)
        +
        + Objectfunction(Object) + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched +request is handled.

        +
        + + +
      • + +
      • +

        whenHEAD(url, [headers]);

        + +

        +

        Creates a new backend definition for HEAD requests. For more info see when().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + headers + +
        (optional)
        +
        + Objectfunction(Object) + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched +request is handled.

        +
        + + +
      • + +
      • +

        whenDELETE(url, [headers]);

        + +

        +

        Creates a new backend definition for DELETE requests. For more info see when().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + headers + +
        (optional)
        +
        + Objectfunction(Object) + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched +request is handled.

        +
        + + +
      • + +
      • +

        whenPOST(url, [data], [headers]);

        + +

        +

        Creates a new backend definition for POST requests. For more info see when().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + data + +
        (optional)
        +
        + stringRegExpfunction(string) + +

        HTTP request body or function that receives + data string and returns true if the data is as expected.

        + + +
        + headers + +
        (optional)
        +
        + Objectfunction(Object) + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched +request is handled.

        +
        + + +
      • + +
      • +

        whenPUT(url, [data], [headers]);

        + +

        +

        Creates a new backend definition for PUT requests. For more info see when().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + data + +
        (optional)
        +
        + stringRegExpfunction(string) + +

        HTTP request body or function that receives + data string and returns true if the data is as expected.

        + + +
        + headers + +
        (optional)
        +
        + Objectfunction(Object) + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched +request is handled.

        +
        + + +
      • + +
      • +

        whenPATCH(url, [data], [headers]);

        + +

        +

        Creates a new backend definition for PATCH requests. For more info see when().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + data + +
        (optional)
        +
        + stringRegExpfunction(string) + +

        HTTP request body or function that receives + data string and returns true if the data is as expected.

        + + +
        + headers + +
        (optional)
        +
        + Objectfunction(Object) + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched +request is handled.

        +
        + + +
      • + +
      • +

        whenJSONP(url);

        + +

        +

        Creates a new backend definition for JSONP requests. For more info see when().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched +request is handled.

        +
        + + +
      • + +
      • +

        expect(method, url, [data], [headers]);

        + +

        +

        Creates a new request expectation.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + method + + + + string + +

        HTTP method.

        + + +
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + data + +
        (optional)
        +
        + stringRegExpfunction(string)Object + +

        HTTP request body or function that + receives data string and returns true if the data is as expected, or Object if request body + is in JSON format.

        + + +
        + headers + +
        (optional)
        +
        + Objectfunction(Object) + +

        HTTP headers or function that receives http header + object and returns true if the headers match the current expectation.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched + request is handled.

        +
          +
        • respond – +{function([status,] data[, headers, statusText]) +| function(function(method, url, data, headers)} +– The respond method takes a set of static data to be returned or a function that can +return an array containing response status (number), response data (string), response +headers (Object), and the text for the status (string).
        • +
        +
        + + +
      • + +
      • +

        expectGET(url, [headers]);

        + +

        +

        Creates a new request expectation for GET requests. For more info see expect().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + headers + +
        (optional)
        +
        + Object + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched +request is handled. See #expect for more info.

        +
        + + +
      • + +
      • +

        expectHEAD(url, [headers]);

        + +

        +

        Creates a new request expectation for HEAD requests. For more info see expect().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + headers + +
        (optional)
        +
        + Object + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched + request is handled.

        +
        + + +
      • + +
      • +

        expectDELETE(url, [headers]);

        + +

        +

        Creates a new request expectation for DELETE requests. For more info see expect().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + headers + +
        (optional)
        +
        + Object + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched + request is handled.

        +
        + + +
      • + +
      • +

        expectPOST(url, [data], [headers]);

        + +

        +

        Creates a new request expectation for POST requests. For more info see expect().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + data + +
        (optional)
        +
        + stringRegExpfunction(string)Object + +

        HTTP request body or function that + receives data string and returns true if the data is as expected, or Object if request body + is in JSON format.

        + + +
        + headers + +
        (optional)
        +
        + Object + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched + request is handled.

        +
        + + +
      • + +
      • +

        expectPUT(url, [data], [headers]);

        + +

        +

        Creates a new request expectation for PUT requests. For more info see expect().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + data + +
        (optional)
        +
        + stringRegExpfunction(string)Object + +

        HTTP request body or function that + receives data string and returns true if the data is as expected, or Object if request body + is in JSON format.

        + + +
        + headers + +
        (optional)
        +
        + Object + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched + request is handled.

        +
        + + +
      • + +
      • +

        expectPATCH(url, [data], [headers]);

        + +

        +

        Creates a new request expectation for PATCH requests. For more info see expect().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + data + +
        (optional)
        +
        + stringRegExpfunction(string)Object + +

        HTTP request body or function that + receives data string and returns true if the data is as expected, or Object if request body + is in JSON format.

        + + +
        + headers + +
        (optional)
        +
        + Object + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched + request is handled.

        +
        + + +
      • + +
      • +

        expectJSONP(url);

        + +

        +

        Creates a new request expectation for JSONP requests. For more info see expect().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with a respond method that controls how a matched + request is handled.

        +
        + + +
      • + +
      • +

        flush([count]);

        + +

        +

        Flushes all pending requests using the trained responses.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + count + +
        (optional)
        +
        + number + +

        Number of responses to flush (in the order they arrived). If undefined, + all pending requests will be flushed. If there are no pending requests when the flush method + is called an exception is thrown (as this typically a sign of programming error).

        + + +
        + + + + + + + +
      • + +
      • +

        verifyNoOutstandingExpectation();

        + +

        +

        Verifies that all of the requests defined via the expect api were made. If any of the +requests were not made, verifyNoOutstandingExpectation throws an exception.

        +

        Typically, you would call this method following each test case that asserts requests using an +"afterEach" clause.

        +
        afterEach($httpBackend.verifyNoOutstandingExpectation);
        +
        +
        + + + + + + + +
      • + +
      • +

        verifyNoOutstandingRequest();

        + +

        +

        Verifies that there are no outstanding requests that need to be flushed.

        +

        Typically, you would call this method following each test case that asserts requests using an +"afterEach" clause.

        +
        afterEach($httpBackend.verifyNoOutstandingRequest);
        +
        +
        + + + + + + + +
      • + +
      • +

        resetExpectations();

        + +

        +

        Resets all request expectations, but preserves all backend definitions. Typically, you would +call resetExpectations during a multiple-phase test when you want to reuse the same instance of +$httpBackend mock.

        +
        + + + + + + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ngMock/service/$interval.html b/1.2.30/docs/partials/api/ngMock/service/$interval.html new file mode 100644 index 0000000000..228ccbaae2 --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/service/$interval.html @@ -0,0 +1,264 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $interval

      +
        + + + +
      1. + - service in module ngMock +
      2. +
      +
      + + + +
      +

      Mock implementation of the $interval service.

      +

      Use $interval.flush(millis) to +move forward by millis milliseconds and trigger any functions scheduled to run in that +time.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      $interval(fn, delay, [count], [invokeApply]);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + fn + + + + function() + +

      A function that should be called repeatedly.

      + + +
      + delay + + + + number + +

      Number of milliseconds between each function call.

      + + +
      + count + +
      (optional)
      +
      + number + +

      Number of times to repeat. If not set, or 0, will repeat + indefinitely.

      + +

      (default: 0)

      +
      + invokeApply + +
      (optional)
      +
      + boolean + +

      If set to false skips model dirty checking, otherwise + will invoke fn within the $apply block.

      + +

      (default: true)

      +
      + +
      + +

      Returns

      + + + + + +
      promise

      A promise which will be notified on each iteration.

      +
      + + +

      Methods

      +
        +
      • +

        cancel(promise);

        + +

        +

        Cancels a task associated with the promise.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + promise + + + + promise + +

        A promise from calling the $interval function.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        boolean

        Returns true if the task was successfully cancelled.

        +
        + + +
      • + +
      • +

        flush([millis]);

        + +

        +

        Runs interval tasks scheduled to be run in the next millis milliseconds.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + millis + +
        (optional)
        +
        + number + +

        maximum timeout amount to flush up until.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        number

        The amount of time moved forward.

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ngMock/service/$log.html b/1.2.30/docs/partials/api/ngMock/service/$log.html new file mode 100644 index 0000000000..86c93ac56e --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/service/$log.html @@ -0,0 +1,140 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $log

      +
        + + + +
      1. + - service in module ngMock +
      2. +
      +
      + + + +
      +

      Mock implementation of $log that gathers all logged messages in arrays +(one array per logging level). These arrays are exposed as logs property of each of the +level-specific log function, e.g. for level error the array is exposed as $log.error.logs.

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        reset();

        + +

        +

        Reset all of the logging arrays to empty.

        +
        + + + + + + + +
      • + +
      • +

        assertEmpty();

        + +

        +

        Assert that the all of the logging methods have no logged messages. If messages present, an +exception is thrown.

        +
        + + + + + + + +
      • +
      + + +

      Properties

      +
        +
      • +

        log.logs

        + + + + + +

        Array of messages logged using $log.

        +
        +
      • + +
      • +

        info.logs

        + + + + + +

        Array of messages logged using $log.

        +
        +
      • + +
      • +

        warn.logs

        + + + + + +

        Array of messages logged using $log.

        +
        +
      • + +
      • +

        error.logs

        + + + + + +

        Array of messages logged using $log.

        +
        +
      • + +
      • +

        debug.logs

        + + + + + +

        Array of messages logged using $log.

        +
        +
      • +
      + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ngMock/service/$timeout.html b/1.2.30/docs/partials/api/ngMock/service/$timeout.html new file mode 100644 index 0000000000..dbfa6f0007 --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/service/$timeout.html @@ -0,0 +1,113 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $timeout

      +
        + + + +
      1. + - service in module ngMock +
      2. +
      +
      + + + +
      +

      This service is just a simple decorator for $timeout service +that adds a "flush" and "verifyNoPendingTasks" methods.

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        flush([delay]);

        + +

        +

        Flushes the queue of pending tasks.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + delay + +
        (optional)
        +
        + number + +

        maximum timeout amount to flush up until

        + + +
        + + + + + + + +
      • + +
      • +

        verifyNoPendingTasks();

        + +

        +

        Verifies that there are no pending tasks that need to be flushed.

        +
        + + + + + + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ngMock/type.html b/1.2.30/docs/partials/api/ngMock/type.html new file mode 100644 index 0000000000..41255a3905 --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/type.html @@ -0,0 +1,23 @@ + +

      Type components in ngMock

      + + + +
      +
      + + + + + + + + + + + +
      NameDescription
      angular.mock.TzDate

      NOTE: this is not an injectable instance, just a globally available mock class of Date.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngMock/type/angular.mock.TzDate.html b/1.2.30/docs/partials/api/ngMock/type/angular.mock.TzDate.html new file mode 100644 index 0000000000..dece39d161 --- /dev/null +++ b/1.2.30/docs/partials/api/ngMock/type/angular.mock.TzDate.html @@ -0,0 +1,124 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      angular.mock.TzDate

      +
        + +
      1. + - type in module ngMock +
      2. +
      +
      + + + +
      +

      NOTE: this is not an injectable instance, just a globally available mock class of Date.

      +

      Mock of the Date type which has its timezone specified via constructor arg.

      +

      The main purpose is to create Date-like instances with timezone fixed to the specified timezone +offset, so that we can test code that depends on local timezone settings without dependency on +the time zone settings of the machine where the code is running.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      angular.mock.TzDate(offset, timestamp);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + offset + + + + number + +

      Offset of the desired timezone in hours (fractions will be honored)

      + + +
      + timestamp + + + + numberstring + +

      Timestamp representing the desired time in UTC

      + + +
      + +
      + + + + + + + + + + +

      Example

      !!!! WARNING !!!!! +This is not a complete Date object so only methods that were implemented can be called safely. +To make matters worse, TzDate instances inherit stuff from Date via a prototype.

      +

      We do our best to intercept calls to "unimplemented" methods, but since the list of methods is +incomplete we might be missing some non-standard methods. This can result in errors like: +"Date.prototype.foo called on incompatible Object".

      +
      var newYearInBratislava = new TzDate(-1, '2009-12-31T23:00:00Z');
      +newYearInBratislava.getTimezoneOffset() => -60;
      +newYearInBratislava.getFullYear() => 2010;
      +newYearInBratislava.getMonth() => 0;
      +newYearInBratislava.getDate() => 1;
      +newYearInBratislava.getHours() => 0;
      +newYearInBratislava.getMinutes() => 0;
      +newYearInBratislava.getSeconds() => 0;
      +
      + +
      + + diff --git a/1.2.30/docs/partials/api/ngMockE2E.html b/1.2.30/docs/partials/api/ngMockE2E.html new file mode 100644 index 0000000000..cd8450a291 --- /dev/null +++ b/1.2.30/docs/partials/api/ngMockE2E.html @@ -0,0 +1,67 @@ + Improve this Doc + + +

      + ngMockE2E +

      + +

      The ngMockE2E is an angular module which contains mocks suitable for end-to-end testing. +Currently there is only one mock present in this module - +the e2e $httpBackend mock.

      + + + +

      Installation

      + +

      First include angular-mocks.js in your HTML:

      + +
          <script src="angular.js">
          <script src="angular-mocks.js">
      + +

      You can download this file from the following places:

      +
        +
      • + Google CDN
        + e.g. //ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-mocks.js +
      • +
      • + Bower
        + e.g.
        bower install angular-mocks@X.Y.Z
        +
      • +
      • + code.angularjs.org
        + e.g.
        "//code.angularjs.org/X.Y.Z/angular-mocks.js"
        +
      • +
      +

      where X.Y.Z is the AngularJS version you are running.

      +

      Then load the module in your application by adding it as a dependent module:

      +
        angular.module('app', ['ngMockE2E']);
      + +

      With that you're ready to get started!

      + + +
      +

      Module Components

      + +
      +

      Service

      + + + + + + + + + + + +
      NameDescription
      $httpBackend

      Fake HTTP backend implementation suitable for end-to-end testing or backend-less development of +applications that use the $http service.

      +
      +
      + +
      + + + + diff --git a/1.2.30/docs/partials/api/ngMockE2E/service.html b/1.2.30/docs/partials/api/ngMockE2E/service.html new file mode 100644 index 0000000000..01e6db6041 --- /dev/null +++ b/1.2.30/docs/partials/api/ngMockE2E/service.html @@ -0,0 +1,24 @@ + +

      Service components in ngMockE2E

      + + + +
      +
      + + + + + + + + + + + +
      NameDescription
      $httpBackend

      Fake HTTP backend implementation suitable for end-to-end testing or backend-less development of +applications that use the $http service.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngMockE2E/service/$httpBackend.html b/1.2.30/docs/partials/api/ngMockE2E/service/$httpBackend.html new file mode 100644 index 0000000000..375f1ac401 --- /dev/null +++ b/1.2.30/docs/partials/api/ngMockE2E/service/$httpBackend.html @@ -0,0 +1,745 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $httpBackend

      +
        + + + +
      1. + - service in module ngMockE2E +
      2. +
      +
      + + + +
      +

      Fake HTTP backend implementation suitable for end-to-end testing or backend-less development of +applications that use the $http service.

      +

      Note: For fake http backend implementation suitable for unit testing please see +unit-testing $httpBackend mock.

      +

      This implementation can be used to respond with static or dynamic responses via the when api +and its shortcuts (whenGET, whenPOST, etc) and optionally pass through requests to the +real $httpBackend for specific requests (e.g. to interact with certain remote apis or to fetch +templates from a webserver).

      +

      As opposed to unit-testing, in an end-to-end testing scenario or in scenario when an application +is being developed with the real backend api replaced with a mock, it is often desirable for +certain category of requests to bypass the mock and issue a real http request (e.g. to fetch +templates or static files from the webserver). To configure the backend with this behavior +use the passThrough request handler of when instead of respond.

      +

      Additionally, we don't want to manually have to flush mocked out requests like we do during unit +testing. For this reason the e2e $httpBackend flushes mocked out requests +automatically, closely simulating the behavior of the XMLHttpRequest object.

      +

      To setup the application to run with this http backend, you have to create a module that depends +on the ngMockE2E and your application modules and defines the fake backend:

      +
      myAppDev = angular.module('myAppDev', ['myApp', 'ngMockE2E']);
      +myAppDev.run(function($httpBackend) {
      +  phones = [{name: 'phone1'}, {name: 'phone2'}];
      +
      +  // returns the current list of phones
      +  $httpBackend.whenGET('/phones').respond(phones);
      +
      +  // adds a new phone to the phones array
      +  $httpBackend.whenPOST('/phones').respond(function(method, url, data) {
      +    var phone = angular.fromJson(data);
      +    phones.push(phone);
      +    return [200, phone, {}];
      +  });
      +  $httpBackend.whenGET(/^\/templates\//).passThrough();
      +  //...
      +});
      +
      +

      Afterwards, bootstrap your app with this new module.

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        when(method, url, [data], [headers]);

        + +

        +

        Creates a new backend definition.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + method + + + + string + +

        HTTP method.

        + + +
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + data + +
        (optional)
        +
        + stringRegExp + +

        HTTP request body.

        + + +
        + headers + +
        (optional)
        +
        + Objectfunction(Object) + +

        HTTP headers or function that receives http header + object and returns true if the headers match the current definition.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with respond and passThrough methods that + controls how a matched request is handled.

        +
          +
        • respond – +{function([status,] data[, headers, statusText]) +| function(function(method, url, data, headers)} +– The respond method takes a set of static data to be returned or a function that can return +an array containing response status (number), response data (string), response headers +(Object), and the text for the status (string).
        • +
        • passThrough – {function()} – Any request matching a backend definition with +passThrough handler will be passed through to the real backend (an XHR request will be made +to the server.)
        • +
        +
        + + +
      • + +
      • +

        whenGET(url, [headers]);

        + +

        +

        Creates a new backend definition for GET requests. For more info see when().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + headers + +
        (optional)
        +
        + Objectfunction(Object) + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with respond and passThrough methods that + controls how a matched request is handled.

        +
        + + +
      • + +
      • +

        whenHEAD(url, [headers]);

        + +

        +

        Creates a new backend definition for HEAD requests. For more info see when().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + headers + +
        (optional)
        +
        + Objectfunction(Object) + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with respond and passThrough methods that + controls how a matched request is handled.

        +
        + + +
      • + +
      • +

        whenDELETE(url, [headers]);

        + +

        +

        Creates a new backend definition for DELETE requests. For more info see when().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + headers + +
        (optional)
        +
        + Objectfunction(Object) + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with respond and passThrough methods that + controls how a matched request is handled.

        +
        + + +
      • + +
      • +

        whenPOST(url, [data], [headers]);

        + +

        +

        Creates a new backend definition for POST requests. For more info see when().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + data + +
        (optional)
        +
        + stringRegExp + +

        HTTP request body.

        + + +
        + headers + +
        (optional)
        +
        + Objectfunction(Object) + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with respond and passThrough methods that + controls how a matched request is handled.

        +
        + + +
      • + +
      • +

        whenPUT(url, [data], [headers]);

        + +

        +

        Creates a new backend definition for PUT requests. For more info see when().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + data + +
        (optional)
        +
        + stringRegExp + +

        HTTP request body.

        + + +
        + headers + +
        (optional)
        +
        + Objectfunction(Object) + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with respond and passThrough methods that + controls how a matched request is handled.

        +
        + + +
      • + +
      • +

        whenPATCH(url, [data], [headers]);

        + +

        +

        Creates a new backend definition for PATCH requests. For more info see when().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + data + +
        (optional)
        +
        + stringRegExp + +

        HTTP request body.

        + + +
        + headers + +
        (optional)
        +
        + Objectfunction(Object) + +

        HTTP headers.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with respond and passThrough methods that + controls how a matched request is handled.

        +
        + + +
      • + +
      • +

        whenJSONP(url);

        + +

        +

        Creates a new backend definition for JSONP requests. For more info see when().

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + url + + + + stringRegExp + +

        HTTP url.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        requestHandler

        Returns an object with respond and passThrough methods that + controls how a matched request is handled.

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ngResource.html b/1.2.30/docs/partials/api/ngResource.html new file mode 100644 index 0000000000..7d7971a264 --- /dev/null +++ b/1.2.30/docs/partials/api/ngResource.html @@ -0,0 +1,70 @@ + Improve this Doc + + +

      + ngResource +

      + +

      ngResource

      +

      The ngResource module provides interaction support with RESTful services +via the $resource service.

      +
      + +

      See $resource for usage.

      + + + +

      Installation

      + +

      First include angular-resource.js in your HTML:

      + +
          <script src="angular.js">
          <script src="angular-resource.js">
      + +

      You can download this file from the following places:

      +
        +
      • + Google CDN
        + e.g. //ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-resource.js +
      • +
      • + Bower
        + e.g.
        bower install angular-resource@X.Y.Z
        +
      • +
      • + code.angularjs.org
        + e.g.
        "//code.angularjs.org/X.Y.Z/angular-resource.js"
        +
      • +
      +

      where X.Y.Z is the AngularJS version you are running.

      +

      Then load the module in your application by adding it as a dependent module:

      +
        angular.module('app', ['ngResource']);
      + +

      With that you're ready to get started!

      + + +
      +

      Module Components

      + +
      +

      Service

      + + + + + + + + + + + +
      NameDescription
      $resource

      A factory which creates a resource object that lets you interact with +RESTful server-side data sources.

      +
      +
      + +
      + + + + diff --git a/1.2.30/docs/partials/api/ngResource/service.html b/1.2.30/docs/partials/api/ngResource/service.html new file mode 100644 index 0000000000..14f3d2e8c3 --- /dev/null +++ b/1.2.30/docs/partials/api/ngResource/service.html @@ -0,0 +1,24 @@ + +

      Service components in ngResource

      + + + +
      +
      + + + + + + + + + + + +
      NameDescription
      $resource

      A factory which creates a resource object that lets you interact with +RESTful server-side data sources.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngResource/service/$resource.html b/1.2.30/docs/partials/api/ngResource/service/$resource.html new file mode 100644 index 0000000000..8f811b05d0 --- /dev/null +++ b/1.2.30/docs/partials/api/ngResource/service/$resource.html @@ -0,0 +1,351 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $resource

      +
        + + + +
      1. + - service in module ngResource +
      2. +
      +
      + + + +
      +

      A factory which creates a resource object that lets you interact with +RESTful server-side data sources.

      +

      The returned resource object has action methods which provide high-level behaviors without +the need to interact with the low level $http service.

      +

      Requires the ngResource module to be installed.

      + +
      + + + + +
      + +

      Dependencies

      + + + + + +

      Usage

      + +

      $resource(url, [paramDefaults], [actions]);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + url + + + + string + +

      A parametrized URL template with parameters prefixed by : as in + /user/:username. If you are using a URL with a port number (e.g. + http://example.com:8080/api), it will be respected.

      +

      If you are using a url with a suffix, just add the suffix, like this: + $resource('http://example.com/resource.json') or $resource('http://example.com/:id.json') + or even $resource('http://example.com/resource/:resource_id.:format') + If the parameter before the suffix is empty, :resource_id in this case, then the /. will be + collapsed down to a single .. If you need this sequence to appear and not collapse then you + can escape it with /\..

      + + +
      + paramDefaults + +
      (optional)
      +
      + Object + +

      Default values for url parameters. These can be overridden in + actions methods. If any of the parameter value is a function, it will be executed every time + when a param value needs to be obtained for a request (unless the param was overridden).

      +

      Each key value in the parameter object is first bound to url template if present and then any + excess keys are appended to the url search query after the ?.

      +

      Given a template /path/:verb and parameter {verb:'greet', salutation:'Hello'} results in + URL /path/greet?salutation=Hello.

      +

      If the parameter value is prefixed with @ then the value for that parameter will be extracted + from the corresponding property on the data object (provided when calling an action method). For + example, if the defaultParam object is {someParam: '@someProp'} then the value of someParam + will be data.someProp.

      + + +
      + actions + +
      (optional)
      +
      + Object.<Object>= + +

      Hash with declaration of custom action that should extend + the default set of resource actions. The declaration should be created in the format of $http.config:

      +
      {action1: {method:?, params:?, isArray:?, headers:?, ...},
      + action2: {method:?, params:?, isArray:?, headers:?, ...},
      + ...}
      +
      +

      Where:

      +
        +
      • action – {string} – The name of action. This name becomes the name of the method on +your resource object.
      • +
      • method – {string} – Case insensitive HTTP method (e.g. GET, POST, PUT, +DELETE, JSONP, etc).
      • +
      • params – {Object=} – Optional set of pre-bound parameters for this action. If any of +the parameter value is a function, it will be executed every time when a param value needs to +be obtained for a request (unless the param was overridden).
      • +
      • url – {string} – action specific url override. The url templating is supported just +like for the resource-level urls.
      • +
      • isArray – {boolean=} – If true then the returned object for this action is an array, +see returns section.
      • +
      • transformRequest – +{function(data, headersGetter)|Array.<function(data, headersGetter)>} – +transform function or an array of such functions. The transform function takes the http +request body and headers and returns its transformed (typically serialized) version. +By default, transformRequest will contain one function that checks if the request data is +an object and serializes to using angular.toJson. To prevent this behavior, set +transformRequest to an empty array: transformRequest: []
      • +
      • transformResponse – +{function(data, headersGetter)|Array.<function(data, headersGetter)>} – +transform function or an array of such functions. The transform function takes the http +response body and headers and returns its transformed (typically deserialized) version. +By default, transformResponse will contain one function that checks if the response looks like +a JSON string and deserializes it using angular.fromJson. To prevent this behavior, set +transformResponse to an empty array: transformResponse: []
      • +
      • cache{boolean|Cache} – If true, a default $http cache will be used to cache the +GET request, otherwise if a cache instance built with +$cacheFactory, this cache will be used for +caching.
      • +
      • timeout{number|Promise} – timeout in milliseconds, or promise that +should abort the request when resolved.
      • +
      • withCredentials - {boolean} - whether to set the withCredentials flag on the +XHR object. See +requests with credentials +for more information.
      • +
      • responseType - {string} - see +requestType.
      • +
      • interceptor - {Object=} - The interceptor object has two optional methods - +response and responseError. Both response and responseError interceptors get called +with http response object. See $http interceptors.
      • +
      + + +
      + +
      + +

      Returns

      + + + + + +
      Object

      A resource "class" object with methods for the default set of resource actions + optionally extended with custom actions. The default set contains these actions:

      +
      { 'get':    {method:'GET'},
      +  'save':   {method:'POST'},
      +  'query':  {method:'GET', isArray:true},
      +  'remove': {method:'DELETE'},
      +  'delete': {method:'DELETE'} };
      +
      +

      Calling these methods invoke an $http with the specified http method, + destination and parameters. When the data is returned from the server then the object is an + instance of the resource class. The actions save, remove and delete are available on it + as methods with the $ prefix. This allows you to easily perform CRUD operations (create, + read, update, delete) on server-side data like this:

      +
      var User = $resource('/user/:userId', {userId:'@id'});
      +var user = User.get({userId:123}, function() {
      +  user.abc = true;
      +  user.$save();
      +});
      +
      +

      It is important to realize that invoking a $resource object method immediately returns an + empty reference (object or array depending on isArray). Once the data is returned from the + server the existing reference is populated with the actual data. This is a useful trick since + usually the resource is assigned to a model which is then rendered by the view. Having an empty + object results in no rendering, once the data arrives from the server then the object is + populated with the data and the view automatically re-renders itself showing the new data. This + means that in most cases one never has to write a callback function for the action methods.

      +

      The action methods on the class object or instance object can be invoked with the following + parameters:

      +
        +
      • HTTP GET "class" actions: Resource.action([parameters], [success], [error])
      • +
      • non-GET "class" actions: Resource.action([parameters], postData, [success], [error])
      • +
      • non-GET instance actions: instance.$action([parameters], [success], [error])

        +

        Success callback is called with (value, responseHeaders) arguments. Error callback is called +with (httpResponse) argument.

        +

        Class actions return empty instance (with additional properties below). +Instance actions return promise of the action.

        +

        The Resource instances and collection have these additional properties:

        +
      • +
      • $promise: the promise of the original server interaction that created this +instance or collection.

        +

        On success, the promise is resolved with the same resource instance or collection object, +updated with data from server. This makes it easy to use in +resolve section of $routeProvider.when() to defer view +rendering until the resource(s) are loaded.

        +

        On failure, the promise is resolved with the http response object, without +the resource property.

        +

        If an interceptor object was provided, the promise will instead be resolved with the value +returned by the interceptor.

        +
      • +
      • $resolved: true after first server interaction is completed (either with success or + rejection), false before that. Knowing if the Resource has been resolved is useful in + data-binding.

        +
      • +
      +
      + + + + + + + + +

      Example

      Credit card resource

      +
      // Define CreditCard class
      +var CreditCard = $resource('/user/:userId/card/:cardId',
      + {userId:123, cardId:'@id'}, {
      +  charge: {method:'POST', params:{charge:true}}
      + });
      +
      +// We can retrieve a collection from the server
      +var cards = CreditCard.query(function() {
      +  // GET: /user/123/card
      +  // server returns: [ {id:456, number:'1234', name:'Smith'} ];
      +
      +  var card = cards[0];
      +  // each item is an instance of CreditCard
      +  expect(card instanceof CreditCard).toEqual(true);
      +  card.name = "J. Smith";
      +  // non GET methods are mapped onto the instances
      +  card.$save();
      +  // POST: /user/123/card/456 {id:456, number:'1234', name:'J. Smith'}
      +  // server returns: {id:456, number:'1234', name: 'J. Smith'};
      +
      +  // our custom method is mapped as well.
      +  card.$charge({amount:9.99});
      +  // POST: /user/123/card/456?amount=9.99&charge=true {id:456, number:'1234', name:'J. Smith'}
      +});
      +
      +// we can create an instance as well
      +var newCard = new CreditCard({number:'0123'});
      +newCard.name = "Mike Smith";
      +newCard.$save();
      +// POST: /user/123/card {number:'0123', name:'Mike Smith'}
      +// server returns: {id:789, number:'0123', name: 'Mike Smith'};
      +expect(newCard.id).toEqual(789);
      +
      +

      The object returned from this function execution is a resource "class" which has "static" method +for each action in the definition.

      +

      Calling these methods invoke $http on the url template with the given method, params and +headers. +When the data is returned from the server then the object is an instance of the resource type and +all of the non-GET methods are available with $ prefix. This allows you to easily support CRUD +operations (create, read, update, delete) on server-side data.

      +
      var User = $resource('/user/:userId', {userId:'@id'});
      +User.get({userId:123}, function(user) {
      +  user.abc = true;
      +  user.$save();
      +});
      +
      +

      It's worth noting that the success callback for get, query and other methods gets passed +in the response that came from the server as well as $http header getter function, so one +could rewrite the above example and get access to http headers as:

      +
      var User = $resource('/user/:userId', {userId:'@id'});
      +User.get({userId:123}, function(u, getResponseHeaders){
      +  u.abc = true;
      +  u.$save(function(u, putResponseHeaders) {
      +    //u => saved user object
      +    //putResponseHeaders => $http header getter
      +  });
      +});
      +
      +

      You can also access the raw $http promise via the $promise property on the object returned

      +
      var User = $resource('/user/:userId', {userId:'@id'});
      +User.get({userId:123})
      +    .$promise.then(function(user) {
      +      $scope.user = user;
      +    });
      +
      +

      Creating a custom 'PUT' request

      +

      In this example we create a custom method on our resource to make a PUT request

      +
      var app = angular.module('app', ['ngResource', 'ngRoute']);
      +
      +// Some APIs expect a PUT request in the format URL/object/ID
      +// Here we are creating an 'update' method
      +app.factory('Notes', ['$resource', function($resource) {
      +return $resource('/notes/:id', null,
      +    {
      +        'update': { method:'PUT' }
      +    });
      +}]);
      +
      +// In our controller we get the ID from the URL using ngRoute and $routeParams
      +// We pass in $routeParams and our Notes factory along with $scope
      +app.controller('NotesCtrl', ['$scope', '$routeParams', 'Notes',
      +                                   function($scope, $routeParams, Notes) {
      +// First get a note object from the factory
      +var note = Notes.get({ id:$routeParams.id });
      +$id = note.id;
      +
      +// Now call update passing in the ID first then the object you are updating
      +Notes.update({ id:$id }, note);
      +
      +// This will PUT /notes/ID with the note object in the request payload
      +}]);
      +
      + +
      + + diff --git a/1.2.30/docs/partials/api/ngRoute.html b/1.2.30/docs/partials/api/ngRoute.html new file mode 100644 index 0000000000..1da2f0cfad --- /dev/null +++ b/1.2.30/docs/partials/api/ngRoute.html @@ -0,0 +1,112 @@ + Improve this Doc + + +

      + ngRoute +

      + +

      ngRoute

      +

      The ngRoute module provides routing and deeplinking services and directives for angular apps.

      +

      Example

      +

      See $route for an example of configuring and using ngRoute.

      +
      + + +

      Installation

      + +

      First include angular-route.js in your HTML:

      + +
          <script src="angular.js">
          <script src="angular-route.js">
      + +

      You can download this file from the following places:

      +
        +
      • + Google CDN
        + e.g. //ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-route.js +
      • +
      • + Bower
        + e.g.
        bower install angular-route@X.Y.Z
        +
      • +
      • + code.angularjs.org
        + e.g.
        "//code.angularjs.org/X.Y.Z/angular-route.js"
        +
      • +
      +

      where X.Y.Z is the AngularJS version you are running.

      +

      Then load the module in your application by adding it as a dependent module:

      +
        angular.module('app', ['ngRoute']);
      + +

      With that you're ready to get started!

      + + +
      +

      Module Components

      + +
      +

      Directive

      + + + + + + + + + + + +
      NameDescription
      ngView

      Overview

      +

      ngView is a directive that complements the $route service by +including the rendered template of the current route into the main layout (index.html) file. +Every time the current route changes, the included view changes with it according to the +configuration of the $route service.

      +
      +
      + +
      +

      Provider

      + + + + + + + + + + + +
      NameDescription
      $routeProvider

      Used for configuring routes.

      +
      +
      + +
      +

      Service

      + + + + + + + + + + + + + + + + +
      NameDescription
      $route

      $route is used for deep-linking URLs to controllers and views (HTML partials). +It watches $location.url() and tries to map the path to an existing route definition.

      +
      $routeParams

      The $routeParams service allows you to retrieve the current set of route parameters.

      +
      +
      + +
      + + + + diff --git a/1.2.30/docs/partials/api/ngRoute/directive.html b/1.2.30/docs/partials/api/ngRoute/directive.html new file mode 100644 index 0000000000..75b9f809d8 --- /dev/null +++ b/1.2.30/docs/partials/api/ngRoute/directive.html @@ -0,0 +1,27 @@ + +

      Directive components in ngRoute

      + + + +
      +
      + + + + + + + + + + + +
      NameDescription
      ngView

      Overview

      +

      ngView is a directive that complements the $route service by +including the rendered template of the current route into the main layout (index.html) file. +Every time the current route changes, the included view changes with it according to the +configuration of the $route service.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngRoute/directive/ngView.html b/1.2.30/docs/partials/api/ngRoute/directive/ngView.html new file mode 100644 index 0000000000..77232d5f56 --- /dev/null +++ b/1.2.30/docs/partials/api/ngRoute/directive/ngView.html @@ -0,0 +1,213 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngView

      +
        + +
      1. + - directive in module ngRoute +
      2. +
      +
      + + + +
      +

      Overview

      +

      ngView is a directive that complements the $route service by +including the rendered template of the current route into the main layout (index.html) file. +Every time the current route changes, the included view changes with it according to the +configuration of the $route service.

      +

      Requires the ngRoute module to be installed.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        +
      • This directive creates new scope.
      • +
      • This directive executes at priority level 400.
      • +
      + + +

      Usage

      +
      + +
        + +
      • as element: + (This directive can be used as custom element, but be aware of IE restrictions). +
        <ng-view
          [onload=""]
          [autoscroll=""]>
        ...
        </ng-view>
        +
      • +
      • as attribute: +
        <ANY
          [onload=""]
          [autoscroll=""]>
        ...
        </ANY>
        +
      • +
      • as CSS class: +
        <ANY class="[onload: ;] [autoscroll: ;]"> ... </ANY>
        +
      • + +
      + +

      Animations

      +

      enter - animation is used to bring new content into the browser. +leave - animation is used to animate existing content away.

      +

      The enter and leave animation occur concurrently.

      + + Click here to learn more about the steps involved in the animation. +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + onload + +
      (optional)
      +
      + string + +

      Expression to evaluate whenever the view updates.

      + + +
      + autoscroll + +
      (optional)
      +
      + string + +

      Whether ngView should call $anchorScroll to scroll the viewport after the view is updated.

      +
      - If the attribute is not set, disable scrolling.
      +- If the attribute is set without value, enable scrolling.
      +- Otherwise enable scrolling only if the `autoscroll` attribute value evaluated
      +  as an expression yields a truthy value.
      +
      + + +
      + +
      + +

      Events

      +
        +
      • +

        $viewContentLoaded

        +

        Emitted every time the ngView content is reloaded.

        +
        +
        +

        Type:

        +
        emit
        +
        +
        +

        Target:

        +
        the current ngView scope
        +
        +
      • +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="MainCtrl as main">
        Choose:
        <a href="Book/Moby">Moby</a> |
        <a href="Book/Moby/ch/1">Moby: Ch1</a> |
        <a href="Book/Gatsby">Gatsby</a> |
        <a href="Book/Gatsby/ch/4?key=value">Gatsby: Ch4</a> |
        <a href="Book/Scarlet">Scarlet Letter</a><br/>
      
        <div class="view-animate-container">
          <div ng-view class="view-animate"></div>
        </div>
        <hr />
      
        <pre>$location.path() = {{main.$location.path()}}</pre>
        <pre>$route.current.templateUrl = {{main.$route.current.templateUrl}}</pre>
        <pre>$route.current.params = {{main.$route.current.params}}</pre>
        <pre>$route.current.scope.name = {{main.$route.current.scope.name}}</pre>
        <pre>$routeParams = {{main.$routeParams}}</pre>
      </div>
      +
      + +
      +
      <div>
        controller: {{book.name}}<br />
        Book Id: {{book.params.bookId}}<br />
      </div>
      +
      + +
      +
      <div>
        controller: {{chapter.name}}<br />
        Book Id: {{chapter.params.bookId}}<br />
        Chapter Id: {{chapter.params.chapterId}}
      </div>
      +
      + +
      +
      .view-animate-container {
        position:relative;
        height:100px!important;
        position:relative;
        background:white;
        border:1px solid black;
        height:40px;
        overflow:hidden;
      }
      
      .view-animate {
        padding:10px;
      }
      
      .view-animate.ng-enter, .view-animate.ng-leave {
        -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s;
        transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s;
      
        display:block;
        width:100%;
        border-left:1px solid black;
      
        position:absolute;
        top:0;
        left:0;
        right:0;
        bottom:0;
        padding:10px;
      }
      
      .view-animate.ng-enter {
        left:100%;
      }
      .view-animate.ng-enter.ng-enter-active {
        left:0;
      }
      .view-animate.ng-leave.ng-leave-active {
        left:-100%;
      }
      +
      + +
      +
      angular.module('ngViewExample', ['ngRoute', 'ngAnimate'])
        .config(['$routeProvider', '$locationProvider',
          function($routeProvider, $locationProvider) {
            $routeProvider
              .when('/Book/:bookId', {
                templateUrl: 'book.html',
                controller: 'BookCtrl',
                controllerAs: 'book'
              })
              .when('/Book/:bookId/ch/:chapterId', {
                templateUrl: 'chapter.html',
                controller: 'ChapterCtrl',
                controllerAs: 'chapter'
              });
      
            $locationProvider.html5Mode(true);
        }])
        .controller('MainCtrl', ['$route', '$routeParams', '$location',
          function($route, $routeParams, $location) {
            this.$route = $route;
            this.$location = $location;
            this.$routeParams = $routeParams;
        }])
        .controller('BookCtrl', ['$routeParams', function($routeParams) {
          this.name = "BookCtrl";
          this.params = $routeParams;
        }])
        .controller('ChapterCtrl', ['$routeParams', function($routeParams) {
          this.name = "ChapterCtrl";
          this.params = $routeParams;
        }]);
      +
      + +
      +
      it('should load and compile correct template', function() {
        element(by.linkText('Moby: Ch1')).click();
        var content = element(by.css('[ng-view]')).getText();
        expect(content).toMatch(/controller\: ChapterCtrl/);
        expect(content).toMatch(/Book Id\: Moby/);
        expect(content).toMatch(/Chapter Id\: 1/);
      
        element(by.partialLinkText('Scarlet')).click();
      
        content = element(by.css('[ng-view]')).getText();
        expect(content).toMatch(/controller\: BookCtrl/);
        expect(content).toMatch(/Book Id\: Scarlet/);
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ngRoute/provider.html b/1.2.30/docs/partials/api/ngRoute/provider.html new file mode 100644 index 0000000000..971959757e --- /dev/null +++ b/1.2.30/docs/partials/api/ngRoute/provider.html @@ -0,0 +1,23 @@ + +

      Provider components in ngRoute

      + + + +
      +
      + + + + + + + + + + + +
      NameDescription
      $routeProvider

      Used for configuring routes.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngRoute/provider/$routeProvider.html b/1.2.30/docs/partials/api/ngRoute/provider/$routeProvider.html new file mode 100644 index 0000000000..fd0ea20925 --- /dev/null +++ b/1.2.30/docs/partials/api/ngRoute/provider/$routeProvider.html @@ -0,0 +1,278 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $routeProvider

      +
        + +
      1. + - $route +
      2. + +
      3. + - provider in module ngRoute +
      4. +
      +
      + + + +
      +

      Used for configuring routes.

      +

      Example

      +

      See $route for an example of configuring and using ngRoute.

      +

      Dependencies

      +

      Requires the ngRoute module to be installed.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      $routeProvider();

      + + + + + + + + + +

      Methods

      +
        +
      • +

        when(path, route);

        + +

        +

        Adds a new route definition to the $route service.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + path + + + + string + +

        Route path (matched against $location.path). If $location.path + contains redundant trailing slash or is missing one, the route will still match and the + $location.path will be updated to add or drop the trailing slash to exactly match the + route definition.

        +
          +
        • path can contain named groups starting with a colon: e.g. :name. All characters up + to the next slash are matched and stored in $routeParams under the given name + when the route matches.
        • +
        • path can contain named groups starting with a colon and ending with a star: + e.g.:name*. All characters are eagerly stored in $routeParams under the given name + when the route matches.
        • +
        • path can contain optional named groups with a question mark: e.g.:name?.

          +

          For example, routes like /color/:color/largecode/:largecode*\/edit will match +/color/brown/largecode/code/with/slashes/edit and extract:

          +
        • +
        • color: brown

          +
        • +
        • largecode: code/with/slashes.
        • +
        + + +
        + route + + + + Object + +

        Mapping information to be assigned to $route.current on route + match.

        +

        Object properties:

        +
          +
        • controller{(string|function()=} – Controller fn that should be associated with +newly created scope or the name of a registered +controller if passed as a string.
        • +
        • controllerAs{string=} – A controller alias name. If present the controller will be +published to scope under the controllerAs name.
        • +
        • template{string=|function()=} – html template as a string or a function that +returns an html template as a string which should be used by ngView or ngInclude directives. +This property takes precedence over templateUrl.

          +

          If template is a function, it will be called with the following parameters:

          +
            +
          • {Array.<Object>} - route parameters extracted from the current +$location.path() by applying the current route
          • +
          +
        • +
        • templateUrl{string=|function()=} – path or function that returns a path to an html +template that should be used by ngView.

          +

          If templateUrl is a function, it will be called with the following parameters:

          +
            +
          • {Array.<Object>} - route parameters extracted from the current +$location.path() by applying the current route
          • +
          +
        • +
        • resolve - {Object.<string, function>=} - An optional map of dependencies which should +be injected into the controller. If any of these dependencies are promises, the router +will wait for them all to be resolved or one to be rejected before the controller is +instantiated. +If all the promises are resolved successfully, the values of the resolved promises are +injected and $routeChangeSuccess event is +fired. If any of the promises are rejected the +$routeChangeError event is fired. The map object +is:

          +
            +
          • key{string}: a name of a dependency to be injected into the controller.
          • +
          • factory - {string|function}: If string then it is an alias for a service. +Otherwise if function, then it is injected +and the return value is treated as the dependency. If the result is a promise, it is +resolved before its value is injected into the controller. Be aware that +ngRoute.$routeParams will still refer to the previous route within these resolve +functions. Use $route.current.params to access the new route parameters, instead.
          • +
          +
        • +
        • redirectTo – {(string|function())=} – value to update +$location path with and trigger route redirection.

          +

          If redirectTo is a function, it will be called with the following parameters:

          +
            +
          • {Object.<string>} - route parameters extracted from the current +$location.path() by applying the current route templateUrl.
          • +
          • {string} - current $location.path()
          • +
          • {Object} - current $location.search()
          • +
          +

          The custom redirectTo function is expected to return a string which will be used +to update $location.path() and $location.search().

          +
        • +
        • [reloadOnSearch=true] - {boolean=} - reload route when only $location.search() +or $location.hash() changes.

          +

          If the option is set to false and url in the browser changes, then +$routeUpdate event is broadcasted on the root scope.

          +
        • +
        • [caseInsensitiveMatch=false] - {boolean=} - match routes without being case sensitive

          +

          If the option is set to true, then the particular route can be matched without being +case sensitive

          +
        • +
        + + +
        + + + + + + +

        Returns

        + + + + + +
        Object

        self

        +
        + + +
      • + +
      • +

        otherwise(params);

        + +

        +

        Sets route definition that will be used on route change when no other route definition +is matched.

        +
        + + +

        Parameters

        + + + + + + + + + + + + + + + + + + +
        ParamTypeDetails
        + params + + + + Object + +

        Mapping information to be assigned to $route.current.

        + + +
        + + + + + + +

        Returns

        + + + + + +
        Object

        self

        +
        + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/api/ngRoute/service.html b/1.2.30/docs/partials/api/ngRoute/service.html new file mode 100644 index 0000000000..18e3c75cd2 --- /dev/null +++ b/1.2.30/docs/partials/api/ngRoute/service.html @@ -0,0 +1,30 @@ + +

      Service components in ngRoute

      + + + +
      +
      + + + + + + + + + + + + + + + + +
      NameDescription
      $route

      $route is used for deep-linking URLs to controllers and views (HTML partials). +It watches $location.url() and tries to map the path to an existing route definition.

      +
      $routeParams

      The $routeParams service allows you to retrieve the current set of route parameters.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngRoute/service/$route.html b/1.2.30/docs/partials/api/ngRoute/service/$route.html new file mode 100644 index 0000000000..99d0e57261 --- /dev/null +++ b/1.2.30/docs/partials/api/ngRoute/service/$route.html @@ -0,0 +1,243 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $route

      +
        + +
      1. + - $routeProvider +
      2. + +
      3. + - service in module ngRoute +
      4. +
      +
      + + + +
      +

      $route is used for deep-linking URLs to controllers and views (HTML partials). +It watches $location.url() and tries to map the path to an existing route definition.

      +

      Requires the ngRoute module to be installed.

      +

      You can define routes through $routeProvider's API.

      +

      The $route service is typically used in conjunction with the +ngView directive and the +$routeParams service.

      + +
      + + + + +
      + +

      Dependencies

      + + + + + + + + +

      Methods

      +
        +
      • +

        reload();

        + +

        +

        Causes $route service to reload the current route even if +$location hasn't changed.

        +

        As a result of that, ngView +creates new scope, reinstantiates the controller.

        +
        + + + + + + + +
      • +
      + +

      Events

      +
        +
      • +

        $routeChangeStart

        +

        Broadcasted before a route change. At this point the route services starts +resolving all of the dependencies needed for the route change to occur. +Typically this involves fetching the view template as well as any dependencies +defined in resolve route property. Once all of the dependencies are resolved +$routeChangeSuccess is fired.

        +
        +
        +

        Type:

        +
        broadcast
        +
        +
        +

        Target:

        +
        root scope
        +
        +
      • + +
      • +

        $routeChangeSuccess

        +

        Broadcasted after a route dependencies are resolved. +ngView listens for the directive +to instantiate the controller and render the view.

        +
        +
        +

        Type:

        +
        broadcast
        +
        +
        +

        Target:

        +
        root scope
        +
        +
      • + +
      • +

        $routeChangeError

        +

        Broadcasted if any of the resolve promises are rejected.

        +
        +
        +

        Type:

        +
        broadcast
        +
        +
        +

        Target:

        +
        root scope
        +
        +
      • + +
      • +

        $routeUpdate

        +

        The reloadOnSearch property has been set to false, and we are reusing the same +instance of the Controller.

        +
        +
        +

        Type:

        +
        broadcast
        +
        +
        +

        Target:

        +
        root scope
        +
        +
      • +
      + + +

      Properties

      +
        +
      • +

        current

        + + + + + +
        Object

        Reference to the current route definition. +The route definition contains:

        +
          +
        • controller: The controller constructor as define in route definition.
        • +
        • locals: A map of locals which is used by $controller service for +controller instantiation. The locals contain +the resolved values of the resolve map. Additionally the locals also contain:

          +
            +
          • $scope - The current route scope.
          • +
          • $template - The current route template HTML.
          • +
          +
        • +
        +
        +
      • + +
      • +

        routes

        + + + + + +
        Object

        Object with all route configuration Objects as its properties.

        +
        +
      • +
      + + + + +

      Example

      This example shows how changing the URL hash causes the $route to match a route against the +URL, and the ngView pulls in the partial.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="MainController">
        Choose:
        <a href="Book/Moby">Moby</a> |
        <a href="Book/Moby/ch/1">Moby: Ch1</a> |
        <a href="Book/Gatsby">Gatsby</a> |
        <a href="Book/Gatsby/ch/4?key=value">Gatsby: Ch4</a> |
        <a href="Book/Scarlet">Scarlet Letter</a><br/>
      
        <div ng-view></div>
      
        <hr />
      
        <pre>$location.path() = {{$location.path()}}</pre>
        <pre>$route.current.templateUrl = {{$route.current.templateUrl}}</pre>
        <pre>$route.current.params = {{$route.current.params}}</pre>
        <pre>$route.current.scope.name = {{$route.current.scope.name}}</pre>
        <pre>$routeParams = {{$routeParams}}</pre>
      </div>
      +
      + +
      +
      controller: {{name}}<br />
      Book Id: {{params.bookId}}<br />
      +
      + +
      +
      controller: {{name}}<br />
      Book Id: {{params.bookId}}<br />
      Chapter Id: {{params.chapterId}}
      +
      + +
      +
      angular.module('ngRouteExample', ['ngRoute'])
      
       .controller('MainController', function($scope, $route, $routeParams, $location) {
           $scope.$route = $route;
           $scope.$location = $location;
           $scope.$routeParams = $routeParams;
       })
      
       .controller('BookController', function($scope, $routeParams) {
           $scope.name = "BookController";
           $scope.params = $routeParams;
       })
      
       .controller('ChapterController', function($scope, $routeParams) {
           $scope.name = "ChapterController";
           $scope.params = $routeParams;
       })
      
      .config(function($routeProvider, $locationProvider) {
        $routeProvider
         .when('/Book/:bookId', {
          templateUrl: 'book.html',
          controller: 'BookController',
          resolve: {
            // I will cause a 1 second delay
            delay: function($q, $timeout) {
              var delay = $q.defer();
              $timeout(delay.resolve, 1000);
              return delay.promise;
            }
          }
        })
        .when('/Book/:bookId/ch/:chapterId', {
          templateUrl: 'chapter.html',
          controller: 'ChapterController'
        });
      
        // configure html5 to get links working on jsfiddle
        $locationProvider.html5Mode(true);
      });
      +
      + +
      +
      it('should load and compile correct template', function() {
        element(by.linkText('Moby: Ch1')).click();
        var content = element(by.css('[ng-view]')).getText();
        expect(content).toMatch(/controller\: ChapterController/);
        expect(content).toMatch(/Book Id\: Moby/);
        expect(content).toMatch(/Chapter Id\: 1/);
      
        element(by.partialLinkText('Scarlet')).click();
      
        content = element(by.css('[ng-view]')).getText();
        expect(content).toMatch(/controller\: BookController/);
        expect(content).toMatch(/Book Id\: Scarlet/);
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ngRoute/service/$routeParams.html b/1.2.30/docs/partials/api/ngRoute/service/$routeParams.html new file mode 100644 index 0000000000..fa3c12e63a --- /dev/null +++ b/1.2.30/docs/partials/api/ngRoute/service/$routeParams.html @@ -0,0 +1,71 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $routeParams

      +
        + + + +
      1. + - service in module ngRoute +
      2. +
      +
      + + + +
      +

      The $routeParams service allows you to retrieve the current set of route parameters.

      +

      Requires the ngRoute module to be installed.

      +

      The route parameters are a combination of $location's +search() and path(). +The path parameters are extracted when the $route path is matched.

      +

      In case of parameter name collision, path params take precedence over search params.

      +

      The service guarantees that the identity of the $routeParams object will remain unchanged +(but its properties will likely change) even when a route change occurs.

      +

      Note that the $routeParams are only updated after a route change completes successfully. +This means that you cannot rely on $routeParams being correct in route resolve functions. +Instead you can use $route.current.params to access the new route's parameters.

      + +
      + + + + +
      + +

      Dependencies

      + + + + + + + + + + + + + + +

      Example

      // Given:
      +// URL: http://server.com/index.html#/Chapter/1/Section/2?search=moby
      +// Route: /Chapter/:chapterId/Section/:sectionId
      +//
      +// Then
      +$routeParams ==> {chapterId:'1', sectionId:'2', search:'moby'}
      +
      + +
      + + diff --git a/1.2.30/docs/partials/api/ngSanitize.html b/1.2.30/docs/partials/api/ngSanitize.html new file mode 100644 index 0000000000..8127bca316 --- /dev/null +++ b/1.2.30/docs/partials/api/ngSanitize.html @@ -0,0 +1,92 @@ + Improve this Doc + + +

      + ngSanitize +

      + +

      ngSanitize

      +

      The ngSanitize module provides functionality to sanitize HTML.

      +
      + +

      See $sanitize for usage.

      + + + +

      Installation

      + +

      First include angular-sanitize.js in your HTML:

      + +
          <script src="angular.js">
          <script src="angular-sanitize.js">
      + +

      You can download this file from the following places:

      +
        +
      • + Google CDN
        + e.g. //ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-sanitize.js +
      • +
      • + Bower
        + e.g.
        bower install angular-sanitize@X.Y.Z
        +
      • +
      • + code.angularjs.org
        + e.g.
        "//code.angularjs.org/X.Y.Z/angular-sanitize.js"
        +
      • +
      +

      where X.Y.Z is the AngularJS version you are running.

      +

      Then load the module in your application by adding it as a dependent module:

      +
        angular.module('app', ['ngSanitize']);
      + +

      With that you're ready to get started!

      + + +
      +

      Module Components

      + +
      +

      Filter

      + + + + + + + + + + + +
      NameDescription
      linky

      Finds links in text input and turns them into html links. Supports http/https/ftp/mailto and +plain email address links.

      +
      +
      + +
      +

      Service

      + + + + + + + + + + + +
      NameDescription
      $sanitize

      The input is sanitized by parsing the html into tokens. All safe tokens (from a whitelist) are + then serialized back to properly escaped html string. This means that no unsafe input can make + it into the returned string, however, since our parser is more strict than a typical browser + parser, it's possible that some obscure input, which would be recognized as valid HTML by a + browser, won't make it through the sanitizer. + The whitelist is configured using the functions aHrefSanitizationWhitelist and + imgSrcSanitizationWhitelist of $compileProvider.

      +
      +
      + +
      + + + + diff --git a/1.2.30/docs/partials/api/ngSanitize/filter.html b/1.2.30/docs/partials/api/ngSanitize/filter.html new file mode 100644 index 0000000000..fa01b8bb31 --- /dev/null +++ b/1.2.30/docs/partials/api/ngSanitize/filter.html @@ -0,0 +1,24 @@ + +

      Filter components in ngSanitize

      + + + +
      +
      + + + + + + + + + + + +
      NameDescription
      linky

      Finds links in text input and turns them into html links. Supports http/https/ftp/mailto and +plain email address links.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngSanitize/filter/linky.html b/1.2.30/docs/partials/api/ngSanitize/filter/linky.html new file mode 100644 index 0000000000..99791d71f9 --- /dev/null +++ b/1.2.30/docs/partials/api/ngSanitize/filter/linky.html @@ -0,0 +1,144 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      linky

      +
        + +
      1. + - filter in module ngSanitize +
      2. +
      +
      + + + +
      +

      Finds links in text input and turns them into html links. Supports http/https/ftp/mailto and +plain email address links.

      +

      Requires the ngSanitize module to be installed.

      + +
      + + + + +
      + + + +

      Usage

      +

      In HTML Template Binding

      + + <span ng-bind-html="linky_expression | linky"></span> + + +

      In JavaScript

      +
      $filter('linky')(text, target)
      + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + text + + + + string + +

      Input text.

      + + +
      + target + + + + string + +

      Window (_blank|_self|_parent|_top) or named frame to open links in.

      + + +
      + +
      + +

      Returns

      + + + + + +
      string

      Html-linkified text.

      +
      + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
        angular.module('linkyExample', ['ngSanitize'])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.snippet =
              'Pretty text with some links:\n'+
              'http://angularjs.org/,\n'+
              'mailto:us@somewhere.org,\n'+
              'another@somewhere.org,\n'+
              'and one more: ftp://127.0.0.1/.';
            $scope.snippetWithTarget = 'http://angularjs.org/';
          }]);
      </script>
      <div ng-controller="ExampleController">
      Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
      <table>
        <tr>
          <td>Filter</td>
          <td>Source</td>
          <td>Rendered</td>
        </tr>
        <tr id="linky-filter">
          <td>linky filter</td>
          <td>
            <pre>&lt;div ng-bind-html="snippet | linky"&gt;<br>&lt;/div&gt;</pre>
          </td>
          <td>
            <div ng-bind-html="snippet | linky"></div>
          </td>
        </tr>
        <tr id="linky-target">
         <td>linky target</td>
         <td>
           <pre>&lt;div ng-bind-html="snippetWithTarget | linky:'_blank'"&gt;<br>&lt;/div&gt;</pre>
         </td>
         <td>
           <div ng-bind-html="snippetWithTarget | linky:'_blank'"></div>
         </td>
        </tr>
        <tr id="escaped-html">
          <td>no filter</td>
          <td><pre>&lt;div ng-bind="snippet"&gt;<br>&lt;/div&gt;</pre></td>
          <td><div ng-bind="snippet"></div></td>
        </tr>
      </table>
      +
      + +
      +
      it('should linkify the snippet with urls', function() {
        expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).
            toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +
                 'another@somewhere.org, and one more: ftp://127.0.0.1/.');
        expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);
      });
      
      it('should not linkify snippet without the linky filter', function() {
        expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).
            toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +
                 'another@somewhere.org, and one more: ftp://127.0.0.1/.');
        expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);
      });
      
      it('should update', function() {
        element(by.model('snippet')).clear();
        element(by.model('snippet')).sendKeys('new http://link.');
        expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).
            toBe('new http://link.');
        expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);
        expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())
            .toBe('new http://link.');
      });
      
      it('should work with the target property', function() {
       expect(element(by.id('linky-target')).
           element(by.binding("snippetWithTarget | linky:'_blank'")).getText()).
           toBe('http://angularjs.org/');
       expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ngSanitize/service.html b/1.2.30/docs/partials/api/ngSanitize/service.html new file mode 100644 index 0000000000..7bc52a2268 --- /dev/null +++ b/1.2.30/docs/partials/api/ngSanitize/service.html @@ -0,0 +1,29 @@ + +

      Service components in ngSanitize

      + + + +
      +
      + + + + + + + + + + + +
      NameDescription
      $sanitize

      The input is sanitized by parsing the html into tokens. All safe tokens (from a whitelist) are + then serialized back to properly escaped html string. This means that no unsafe input can make + it into the returned string, however, since our parser is more strict than a typical browser + parser, it's possible that some obscure input, which would be recognized as valid HTML by a + browser, won't make it through the sanitizer. + The whitelist is configured using the functions aHrefSanitizationWhitelist and + imgSrcSanitizationWhitelist of $compileProvider.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngSanitize/service/$sanitize.html b/1.2.30/docs/partials/api/ngSanitize/service/$sanitize.html new file mode 100644 index 0000000000..dce1342ea7 --- /dev/null +++ b/1.2.30/docs/partials/api/ngSanitize/service/$sanitize.html @@ -0,0 +1,138 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $sanitize

      +
        + + + +
      1. + - service in module ngSanitize +
      2. +
      +
      + + + +
      +

      The input is sanitized by parsing the html into tokens. All safe tokens (from a whitelist) are + then serialized back to properly escaped html string. This means that no unsafe input can make + it into the returned string, however, since our parser is more strict than a typical browser + parser, it's possible that some obscure input, which would be recognized as valid HTML by a + browser, won't make it through the sanitizer. + The whitelist is configured using the functions aHrefSanitizationWhitelist and + imgSrcSanitizationWhitelist of $compileProvider.

      + +
      + + + + +
      + + + + +

      Usage

      + +

      $sanitize(html);

      + + + + + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + html + + + + string + +

      Html input.

      + + +
      + +
      + +

      Returns

      + + + + + +
      string

      Sanitized html.

      +
      + + + + + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <script>
          angular.module('sanitizeExample', ['ngSanitize'])
            .controller('ExampleController', ['$scope', '$sce', function($scope, $sce) {
              $scope.snippet =
                '<p style="color:blue">an html\n' +
                '<em onmouseover="this.textContent=\'PWN3D!\'">click here</em>\n' +
                'snippet</p>';
              $scope.deliberatelyTrustDangerousSnippet = function() {
                return $sce.trustAsHtml($scope.snippet);
              };
            }]);
      </script>
      <div ng-controller="ExampleController">
         Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
        <table>
          <tr>
            <td>Directive</td>
            <td>How</td>
            <td>Source</td>
            <td>Rendered</td>
          </tr>
          <tr id="bind-html-with-sanitize">
            <td>ng-bind-html</td>
            <td>Automatically uses $sanitize</td>
            <td><pre>&lt;div ng-bind-html="snippet"&gt;<br/>&lt;/div&gt;</pre></td>
            <td><div ng-bind-html="snippet"></div></td>
          </tr>
          <tr id="bind-html-with-trust">
            <td>ng-bind-html</td>
            <td>Bypass $sanitize by explicitly trusting the dangerous value</td>
            <td>
            <pre>&lt;div ng-bind-html="deliberatelyTrustDangerousSnippet()"&gt;
      &lt;/div&gt;</pre>
            </td>
            <td><div ng-bind-html="deliberatelyTrustDangerousSnippet()"></div></td>
          </tr>
          <tr id="bind-default">
            <td>ng-bind</td>
            <td>Automatically escapes</td>
            <td><pre>&lt;div ng-bind="snippet"&gt;<br/>&lt;/div&gt;</pre></td>
            <td><div ng-bind="snippet"></div></td>
          </tr>
        </table>
        </div>
      +
      + +
      +
      it('should sanitize the html snippet by default', function() {
        expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()).
          toBe('<p>an html\n<em>click here</em>\nsnippet</p>');
      });
      
      it('should inline raw snippet if bound to a trusted value', function() {
        expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).
          toBe("<p style=\"color:blue\">an html\n" +
               "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
               "snippet</p>");
      });
      
      it('should escape snippet without any filter', function() {
        expect(element(by.css('#bind-default div')).getInnerHtml()).
          toBe("&lt;p style=\"color:blue\"&gt;an html\n" +
               "&lt;em onmouseover=\"this.textContent='PWN3D!'\"&gt;click here&lt;/em&gt;\n" +
               "snippet&lt;/p&gt;");
      });
      
      it('should update', function() {
        element(by.model('snippet')).clear();
        element(by.model('snippet')).sendKeys('new <b onclick="alert(1)">text</b>');
        expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()).
          toBe('new <b>text</b>');
        expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).toBe(
          'new <b onclick="alert(1)">text</b>');
        expect(element(by.css('#bind-default div')).getInnerHtml()).toBe(
          "new &lt;b onclick=\"alert(1)\"&gt;text&lt;/b&gt;");
      });
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ngTouch.html b/1.2.30/docs/partials/api/ngTouch.html new file mode 100644 index 0000000000..eec40c09dd --- /dev/null +++ b/1.2.30/docs/partials/api/ngTouch.html @@ -0,0 +1,107 @@ + Improve this Doc + + +

      + ngTouch +

      + +

      ngTouch

      +

      The ngTouch module provides touch events and other helpers for touch-enabled devices. +The implementation is based on jQuery Mobile touch event handling +(jquerymobile.com).

      +

      See $swipe for usage.

      +
      + + +

      Installation

      + +

      First include angular-touch.js in your HTML:

      + +
          <script src="angular.js">
          <script src="angular-touch.js">
      + +

      You can download this file from the following places:

      +
        +
      • + Google CDN
        + e.g. //ajax.googleapis.com/ajax/libs/angularjs/X.Y.Z/angular-touch.js +
      • +
      • + Bower
        + e.g.
        bower install angular-touch@X.Y.Z
        +
      • +
      • + code.angularjs.org
        + e.g.
        "//code.angularjs.org/X.Y.Z/angular-touch.js"
        +
      • +
      +

      where X.Y.Z is the AngularJS version you are running.

      +

      Then load the module in your application by adding it as a dependent module:

      +
        angular.module('app', ['ngTouch']);
      + +

      With that you're ready to get started!

      + + +
      +

      Module Components

      + +
      +

      Directive

      + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      ngClick

      A more powerful replacement for the default ngClick designed to be used on touchscreen +devices. Most mobile browsers wait about 300ms after a tap-and-release before sending +the click event. This version handles them immediately, and then prevents the +following click event from propagating.

      +
      ngSwipeLeft

      Specify custom behavior when an element is swiped to the left on a touchscreen device. +A leftward swipe is a quick, right-to-left slide of the finger. +Though ngSwipeLeft is designed for touch-based devices, it will work with a mouse click and drag +too.

      +
      ngSwipeRight

      Specify custom behavior when an element is swiped to the right on a touchscreen device. +A rightward swipe is a quick, left-to-right slide of the finger. +Though ngSwipeRight is designed for touch-based devices, it will work with a mouse click and drag +too.

      +
      +
      + +
      +

      Service

      + + + + + + + + + + + +
      NameDescription
      $swipe

      The $swipe service is a service that abstracts the messier details of hold-and-drag swipe +behavior, to make implementing swipe-related directives more convenient.

      +
      +
      + +
      + + + + diff --git a/1.2.30/docs/partials/api/ngTouch/directive.html b/1.2.30/docs/partials/api/ngTouch/directive.html new file mode 100644 index 0000000000..95e6f173a1 --- /dev/null +++ b/1.2.30/docs/partials/api/ngTouch/directive.html @@ -0,0 +1,44 @@ + +

      Directive components in ngTouch

      + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      ngClick

      A more powerful replacement for the default ngClick designed to be used on touchscreen +devices. Most mobile browsers wait about 300ms after a tap-and-release before sending +the click event. This version handles them immediately, and then prevents the +following click event from propagating.

      +
      ngSwipeLeft

      Specify custom behavior when an element is swiped to the left on a touchscreen device. +A leftward swipe is a quick, right-to-left slide of the finger. +Though ngSwipeLeft is designed for touch-based devices, it will work with a mouse click and drag +too.

      +
      ngSwipeRight

      Specify custom behavior when an element is swiped to the right on a touchscreen device. +A rightward swipe is a quick, left-to-right slide of the finger. +Though ngSwipeRight is designed for touch-based devices, it will work with a mouse click and drag +too.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngTouch/directive/ngClick.html b/1.2.30/docs/partials/api/ngTouch/directive/ngClick.html new file mode 100644 index 0000000000..a1793604a2 --- /dev/null +++ b/1.2.30/docs/partials/api/ngTouch/directive/ngClick.html @@ -0,0 +1,134 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngClick

      +
        + +
      1. + - directive in module ngTouch +
      2. +
      +
      + + + +
      +

      A more powerful replacement for the default ngClick designed to be used on touchscreen +devices. Most mobile browsers wait about 300ms after a tap-and-release before sending +the click event. This version handles them immediately, and then prevents the +following click event from propagating.

      +

      Requires the ngTouch module to be installed.

      +

      This directive can fall back to using an ordinary click event, and so works on desktop +browsers as well as mobile.

      +

      This directive also sets the CSS class ng-click-active while the element is being held +down (by a mouse click or touch) so you can restyle the depressed element if you wish.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-click="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngClick + + + + expression + +

      Expression to evaluate +upon tap. (Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <button ng-click="count = count + 1" ng-init="count=0">
        Increment
      </button>
      count: {{ count }}
      +
      + +
      +
      angular.module('ngClickExample', ['ngTouch']);
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ngTouch/directive/ngSwipeLeft.html b/1.2.30/docs/partials/api/ngTouch/directive/ngSwipeLeft.html new file mode 100644 index 0000000000..3d728ba7d9 --- /dev/null +++ b/1.2.30/docs/partials/api/ngTouch/directive/ngSwipeLeft.html @@ -0,0 +1,130 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngSwipeLeft

      +
        + +
      1. + - directive in module ngTouch +
      2. +
      +
      + + + +
      +

      Specify custom behavior when an element is swiped to the left on a touchscreen device. +A leftward swipe is a quick, right-to-left slide of the finger. +Though ngSwipeLeft is designed for touch-based devices, it will work with a mouse click and drag +too.

      +

      Requires the ngTouch module to be installed.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-swipe-left="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngSwipeLeft + + + + expression + +

      Expression to evaluate +upon left swipe. (Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-show="!showActions" ng-swipe-left="showActions = true">
        Some list content, like an email in the inbox
      </div>
      <div ng-show="showActions" ng-swipe-right="showActions = false">
        <button ng-click="reply()">Reply</button>
        <button ng-click="delete()">Delete</button>
      </div>
      +
      + +
      +
      angular.module('ngSwipeLeftExample', ['ngTouch']);
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ngTouch/directive/ngSwipeRight.html b/1.2.30/docs/partials/api/ngTouch/directive/ngSwipeRight.html new file mode 100644 index 0000000000..8cc205a970 --- /dev/null +++ b/1.2.30/docs/partials/api/ngTouch/directive/ngSwipeRight.html @@ -0,0 +1,130 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      ngSwipeRight

      +
        + +
      1. + - directive in module ngTouch +
      2. +
      +
      + + + +
      +

      Specify custom behavior when an element is swiped to the right on a touchscreen device. +A rightward swipe is a quick, left-to-right slide of the finger. +Though ngSwipeRight is designed for touch-based devices, it will work with a mouse click and drag +too.

      +

      Requires the ngTouch module to be installed.

      + +
      + + + + +
      + + + +

      Directive Info

      +
        + +
      • This directive executes at priority level 0.
      • +
      + + +

      Usage

      +
      + +
        +
      • as attribute: +
        <ANY
          ng-swipe-right="">
        ...
        </ANY>
        +
      • + +
      + +
      +

      Arguments

      + + + + + + + + + + + + + + + + + + +
      ParamTypeDetails
      + ngSwipeRight + + + + expression + +

      Expression to evaluate +upon right swipe. (Event object is available as $event)

      + + +
      + +
      + + + + +

      Example

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-show="!showActions" ng-swipe-left="showActions = true">
        Some list content, like an email in the inbox
      </div>
      <div ng-show="showActions" ng-swipe-right="showActions = false">
        <button ng-click="reply()">Reply</button>
        <button ng-click="delete()">Delete</button>
      </div>
      +
      + +
      +
      angular.module('ngSwipeRightExample', ['ngTouch']);
      +
      + + + +
      +
      + + +

      + +
      + + diff --git a/1.2.30/docs/partials/api/ngTouch/service.html b/1.2.30/docs/partials/api/ngTouch/service.html new file mode 100644 index 0000000000..e47c83229d --- /dev/null +++ b/1.2.30/docs/partials/api/ngTouch/service.html @@ -0,0 +1,24 @@ + +

      Service components in ngTouch

      + + + +
      +
      + + + + + + + + + + + +
      NameDescription
      $swipe

      The $swipe service is a service that abstracts the messier details of hold-and-drag swipe +behavior, to make implementing swipe-related directives more convenient.

      +
      +
      +
      + diff --git a/1.2.30/docs/partials/api/ngTouch/service/$swipe.html b/1.2.30/docs/partials/api/ngTouch/service/$swipe.html new file mode 100644 index 0000000000..4775e2d6f7 --- /dev/null +++ b/1.2.30/docs/partials/api/ngTouch/service/$swipe.html @@ -0,0 +1,90 @@ + Improve this Doc + + + + +  View Source + + + +
      +

      $swipe

      +
        + + + +
      1. + - service in module ngTouch +
      2. +
      +
      + + + +
      +

      The $swipe service is a service that abstracts the messier details of hold-and-drag swipe +behavior, to make implementing swipe-related directives more convenient.

      +

      Requires the ngTouch module to be installed.

      +

      $swipe is used by the ngSwipeLeft and ngSwipeRight directives in ngTouch, and by +ngCarousel in a separate component.

      +

      Usage

      +

      The $swipe service is an object with a single method: bind. bind takes an element +which is to be watched for swipes, and an object with four handler functions. See the +documentation for bind below.

      + +
      + + + + +
      + + + + + + + +

      Methods

      +
        +
      • +

        bind();

        + +

        +

        The main method of $swipe. It takes an element to be watched for swipe motions, and an +object containing event handlers.

        +

        The four events are start, move, end, and cancel. start, move, and end +receive as a parameter a coordinates object of the form { x: 150, y: 310 }.

        +

        start is called on either mousedown or touchstart. After this event, $swipe is +watching for touchmove or mousemove events. These events are ignored until the total +distance moved in either dimension exceeds a small threshold.

        +

        Once this threshold is exceeded, either the horizontal or vertical delta is greater.

        +
          +
        • If the horizontal distance is greater, this is a swipe and move and end events follow.
        • +
        • If the vertical distance is greater, this is a scroll, and we let the browser take over. +A cancel event is sent.
        • +
        +

        move is called on mousemove and touchmove after the above logic has determined that +a swipe is in progress.

        +

        end is called when a swipe is successfully completed with a touchend or mouseup.

        +

        cancel is called either on a touchcancel from the browser, or when we begin scrolling +as described above.

        +
        + + + + + + + +
      • +
      + + + + + + +
      + + diff --git a/1.2.30/docs/partials/error.html b/1.2.30/docs/partials/error.html new file mode 100644 index 0000000000..9f18fb9f53 --- /dev/null +++ b/1.2.30/docs/partials/error.html @@ -0,0 +1,15 @@ + Improve this Doc + + +

      Error Reference

      +

      Use the Error Reference manual to find information about error conditions in +your AngularJS app. Errors thrown in production builds of AngularJS will log +links to this site on the console.

      +

      Other useful references for debugging your app include:

      + + + diff --git a/1.2.30/docs/partials/error/$animate.html b/1.2.30/docs/partials/error/$animate.html new file mode 100644 index 0000000000..c60665844a --- /dev/null +++ b/1.2.30/docs/partials/error/$animate.html @@ -0,0 +1,27 @@ + Improve this Doc + + +

      $animate

      + +
      + Here are the list of errors in the $animate namespace. + +
      + +
      +
      + + + + + + + + + + +
      NameDescription
      notcselNot class CSS selector
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/$animate/notcsel.html b/1.2.30/docs/partials/error/$animate/notcsel.html new file mode 100644 index 0000000000..93bde8bfd7 --- /dev/null +++ b/1.2.30/docs/partials/error/$animate/notcsel.html @@ -0,0 +1,18 @@ + Improve this Doc + + +

      Error: error:notcsel +
      Not class CSS selector
      +

      + +
      +
      Expecting class selector starting with '.' got '{0}'.
      +
      + +

      Description

      +
      +

      Expecting a CSS selector for class. Class selectors must start with ., for example: .my-class-name.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$cacheFactory.html b/1.2.30/docs/partials/error/$cacheFactory.html new file mode 100644 index 0000000000..793cafb7df --- /dev/null +++ b/1.2.30/docs/partials/error/$cacheFactory.html @@ -0,0 +1,27 @@ + Improve this Doc + + +

      $cacheFactory

      + +
      + Here are the list of errors in the $cacheFactory namespace. + +
      + +
      +
      + + + + + + + + + + +
      NameDescription
      iidInvalid ID
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/$cacheFactory/iid.html b/1.2.30/docs/partials/error/$cacheFactory/iid.html new file mode 100644 index 0000000000..63deb80a01 --- /dev/null +++ b/1.2.30/docs/partials/error/$cacheFactory/iid.html @@ -0,0 +1,19 @@ + Improve this Doc + + +

      Error: error:iid +
      Invalid ID
      +

      + +
      +
      CacheId '{0}' is already taken!
      +
      + +

      Description

      +
      +

      This error occurs when trying to create a new cache object via $cacheFactory with an ID that was already used to create another cache object.

      +

      To resolve the error please use a different cache ID when calling $cacheFactory.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$compile.html b/1.2.30/docs/partials/error/$compile.html new file mode 100644 index 0000000000..c9ceba193d --- /dev/null +++ b/1.2.30/docs/partials/error/$compile.html @@ -0,0 +1,59 @@ + Improve this Doc + + +

      $compile

      + +
      + Here are the list of errors in the $compile namespace. + +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      ctreqMissing Required Controller
      iscpInvalid Isolate Scope Definition
      multidirMultiple Directive Resource Contention
      nodomeventsInterpolated Event Attributes
      nonassignNon-Assignable Expression
      selmultiBinding to Multiple Attribute
      tploadError Loading Template
      tplrtInvalid Template Root
      uterdirUnterminated Directive
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/$compile/ctreq.html b/1.2.30/docs/partials/error/$compile/ctreq.html new file mode 100644 index 0000000000..b6c6f73eda --- /dev/null +++ b/1.2.30/docs/partials/error/$compile/ctreq.html @@ -0,0 +1,48 @@ + Improve this Doc + + +

      Error: error:ctreq +
      Missing Required Controller
      +

      + +
      +
      Controller '{0}', required by directive '{1}', can't be found!
      +
      + +

      Description

      +
      +

      This error occurs when HTML compiler tries to process a directive that specifies the require option in a directive definition, +but the required directive controller is not present on the current DOM element (or its ancestor element, if ^ was specified).

      +

      To resolve this error ensure that there is no typo in the required controller name and that the required directive controller is present on the current element.

      +

      If the required controller is expected to be on a ancestor element, make sure that you prefix the controller name in the require definition with ^.

      +

      If the required controller is optionally requested, use ? or ^? to specify that.

      +

      Example of a directive that requires ngModel controller:

      +
      myApp.directive('myDirective', function() {
      +return {
      +  require: 'ngModel',
      +  ...
      +}
      +}
      +
      +

      This directive can then be used as:

      +
      <input ng-model="some.path" my-directive>
      +
      +

      Example of a directive that optionally requires a form controller from an ancestor:

      +
      myApp.directive('myDirective', function() {
      +return {
      +  require: '^?form',
      +  ...
      +}
      +}
      +
      +

      This directive can then be used as:

      +
      <form name="myForm">
      +<div>
      +  <span my-directive></span>
      +</div>
      +</form>
      +
      + +
      + + diff --git a/1.2.30/docs/partials/error/$compile/iscp.html b/1.2.30/docs/partials/error/$compile/iscp.html new file mode 100644 index 0000000000..ed05ab4e50 --- /dev/null +++ b/1.2.30/docs/partials/error/$compile/iscp.html @@ -0,0 +1,33 @@ + Improve this Doc + + +

      Error: error:iscp +
      Invalid Isolate Scope Definition
      +

      + +
      +
      Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}
      +
      + +

      Description

      +
      +

      When declaring isolate scope the scope definition object must be in specific format which starts with mode character (@&=) with an optional local name.

      +
      myModule.directive('directiveName', function factory() {
      +return {
      +  ...
      +  scope: {
      +    'attrName': '@', // OK
      +    'attrName2': '=localName', // OK
      +    'attrName3': 'name',    // ERROR: missing mode @&=
      +    'attrName4': ' = name', // ERROR: extra spaces
      +    'attrName5': 'name=',   // ERROR: must be prefixed with @&=
      +  }
      +  ...
      +}
      +});
      +
      +

      Please refer to the scope option of the directive definition documentation to learn more about the API.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$compile/multidir.html b/1.2.30/docs/partials/error/$compile/multidir.html new file mode 100644 index 0000000000..9811de684a --- /dev/null +++ b/1.2.30/docs/partials/error/$compile/multidir.html @@ -0,0 +1,27 @@ + Improve this Doc + + +

      Error: error:multidir +
      Multiple Directive Resource Contention
      +

      + +
      +
      Multiple directives [{0}, {1}] asking for {2} on: {3}
      +
      + +

      Description

      +
      +

      This error occurs when multiple directives are applied to the same DOM element, and +processing them would result in a collision or an unsupported configuration.

      +

      To resolve this issue remove one of the directives which is causing the collision.

      +

      Example scenarios of multiple incompatible directives applied to the same element include:

      +
        +
      • Multiple directives requesting isolated scope.
      • +
      • Multiple directives publishing a controller under the same name.
      • +
      • Multiple directives declared with the transclusion option.
      • +
      • Multiple directives attempting to define a template or templateURL.
      • +
      + +
      + + diff --git a/1.2.30/docs/partials/error/$compile/nodomevents.html b/1.2.30/docs/partials/error/$compile/nodomevents.html new file mode 100644 index 0000000000..112a47e65c --- /dev/null +++ b/1.2.30/docs/partials/error/$compile/nodomevents.html @@ -0,0 +1,25 @@ + Improve this Doc + + +

      Error: error:nodomevents +
      Interpolated Event Attributes
      +

      + +
      +
      Interpolations for HTML DOM event attributes are disallowed.  Please use the ng- versions (such as ng-click instead of onclick) instead.
      +
      + +

      Description

      +
      +

      This error occurs when one tries to create a binding for event handler attributes like onclick, onload, onsubmit, etc.

      +

      There is no practical value in binding to these attributes and doing so only exposes your application to security vulnerabilities like XSS. +For these reasons binding to event handler attributes (all attributes that start with on and formaction attribute) is not supported.

      +

      An example code that would allow XSS vulnerability by evaluating user input in the window context could look like this:

      +
      <input ng-model="username">
      +<div onclick="{{username}}">click me</div>
      +
      +

      Since the onclick evaluates the value as JavaScript code in the window context, setting the username model to a value like javascript:alert('PWND') would result in script injection when the div is clicked.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$compile/nonassign.html b/1.2.30/docs/partials/error/$compile/nonassign.html new file mode 100644 index 0000000000..0096dedd62 --- /dev/null +++ b/1.2.30/docs/partials/error/$compile/nonassign.html @@ -0,0 +1,45 @@ + Improve this Doc + + +

      Error: error:nonassign +
      Non-Assignable Expression
      +

      + +
      +
      Expression '{0}' used with directive '{1}' is non-assignable!
      +
      + +

      Description

      +
      +

      This error occurs when a directive defines an isolate scope property +(using the = mode in the scope option of a directive definition) but the directive is used with an expression that is not-assignable.

      +

      In order for the two-way data-binding to work, it must be possible to write new values back into the path defined with the expression.

      +

      For example, given a directive:

      +
      myModule.directive('myDirective', function factory() {
      +return {
      +  ...
      +  scope: {
      +    localValue: '=bind'
      +  }
      +  ...
      +}
      +});
      +
      +

      Following are invalid uses of this directive:

      +
      <!-- ERROR because `1+2=localValue` is an invalid statement -->
      +<my-directive bind="1+2">
      +
      +<!-- ERROR because `myFn()=localValue` is an invalid statement -->
      +<my-directive bind="myFn()">
      +
      +<!-- ERROR because attribute bind wasn't provided -->
      +<my-directive>
      +
      +

      To resolve this error, always use path expressions with scope properties that are two-way data-bound:

      +
      <my-directive bind="some.property">
      +<my-directive bind="some[3]['property']">
      +
      + +
      + + diff --git a/1.2.30/docs/partials/error/$compile/selmulti.html b/1.2.30/docs/partials/error/$compile/selmulti.html new file mode 100644 index 0000000000..7b804bf7d7 --- /dev/null +++ b/1.2.30/docs/partials/error/$compile/selmulti.html @@ -0,0 +1,26 @@ + Improve this Doc + + +

      Error: error:selmulti +
      Binding to Multiple Attribute
      +

      + +
      +
      Binding to the 'multiple' attribute is not supported. Element: {0}
      +
      + +

      Description

      +
      +

      Binding to the multiple attribute of select element is not supported since switching between multiple and single mode changes the ngModel object type from instance to array of instances which breaks the model semantics.

      +

      If you need to use different types of select elements in your template based on some variable, please use ngIf or ngSwitch directives to select one of them to be used at runtime.

      +

      Example with invalid usage:

      +
      <select ng-model="some.model" multiple="{{mode}}"></select>
      +
      +

      Example that uses ngIf to pick one of the select elements based on a variable:

      +
      <select ng-if="mode == 'multiple'" ng-model="some.model" multiple></select>
      +<select ng-if="mode != 'multiple'" ng-model="some.model"></select>
      +
      + +
      + + diff --git a/1.2.30/docs/partials/error/$compile/tpload.html b/1.2.30/docs/partials/error/$compile/tpload.html new file mode 100644 index 0000000000..27484d40ee --- /dev/null +++ b/1.2.30/docs/partials/error/$compile/tpload.html @@ -0,0 +1,21 @@ + Improve this Doc + + +

      Error: error:tpload +
      Error Loading Template
      +

      + +
      +
      Failed to load template: {0}
      +
      + +

      Description

      +
      +

      This error occurs when $compile attempts to fetch a template from some URL, and the request fails.

      +

      To resolve this error, ensure that the URL of the template is spelled correctly and resolves to correct absolute URL. +The Chrome Developer Tools might also be helpful in determining why the request failed.

      +

      If you are using $templateCache to pre-load templates, ensure that the cache was populated with the template.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$compile/tplrt.html b/1.2.30/docs/partials/error/$compile/tplrt.html new file mode 100644 index 0000000000..07628efc26 --- /dev/null +++ b/1.2.30/docs/partials/error/$compile/tplrt.html @@ -0,0 +1,51 @@ + Improve this Doc + + +

      Error: error:tplrt +
      Invalid Template Root
      +

      + +
      +
      Template for directive '{0}' must have exactly one root element. {1}
      +
      + +

      Description

      +
      +

      When a directive is declared with template (or templateUrl) and replace mode on, the template +must have exactly one root element. That is, the text of the template property or the content +referenced by the templateUrl must be contained within a single html element. +For example, <p>blah <em>blah</em> blah</p> instead of simply blah <em>blah</em> blah. +Otherwise, the replacement operation would result in a single element (the directive) being replaced +with multiple elements or nodes, which is unsupported and not commonly needed in practice.

      +

      For example a directive with definition:

      +
      myModule.directive('myDirective', function factory() {
      +return {
      +  ...
      +  replace: true,
      +  templateUrl: 'someUrl'
      +  ...
      +}
      +});
      +
      +

      And a template provided at URL someUrl. The template must be an html fragment that has only a +single root element, like the div element in this template:

      +
      <div><b>Hello</b> World!</div>
      +
      +

      An an invalid template to be used with this directive is one that defines multiple root nodes or +elements. For example:

      +
      <b>Hello</b> World!
      +
      +

      Watch out for html comments at the beginning or end of templates, as these can cause this error as +well. Consider the following template:

      +
      <div class='container'>
      +<div class='wrapper>
      +   ...
      +</div> <!-- wrapper -->
      +</div> <!-- container -->
      +
      +

      The <!-- container --> comment is interpreted as a second root element and causes the template to +be invalid.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$compile/uterdir.html b/1.2.30/docs/partials/error/$compile/uterdir.html new file mode 100644 index 0000000000..4c0e703a41 --- /dev/null +++ b/1.2.30/docs/partials/error/$compile/uterdir.html @@ -0,0 +1,36 @@ + Improve this Doc + + +

      Error: error:uterdir +
      Unterminated Directive
      +

      + +
      +
      Unterminated attribute, found '{0}' but no matching '{1}' found.
      +
      + +

      Description

      +
      +

      This error occurs when using multi-element directives and a directive-start attribute fails to form a matching pair with a corresponding directive-end attribute. +A directive-start should have a matching directive-end on a sibling node in the DOM. For instance,

      +
      <table>
      +<tr ng-repeat-start="item in list">I get repeated</tr>
      +<tr ng-repeat-end>I also get repeated</tr>
      +</table>
      +
      +

      is a valid example.

      +

      This error can occur in several different ways. One is by leaving out the directive-end attribute, like so:

      +
      <div>
      +<span foo-start></span>
      +</div>
      +
      +

      Another is by nesting a directive-end inside of directive-start, or vice versa:

      +
      <div>
      +<span foo-start><span foo-end></span></span>
      +</div>
      +
      +

      To avoid this error, make sure each directive-start you use has a matching directive-end on a sibling node in the DOM.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$controller.html b/1.2.30/docs/partials/error/$controller.html new file mode 100644 index 0000000000..400367292f --- /dev/null +++ b/1.2.30/docs/partials/error/$controller.html @@ -0,0 +1,27 @@ + Improve this Doc + + +

      $controller

      + +
      + Here are the list of errors in the $controller namespace. + +
      + +
      +
      + + + + + + + + + + +
      NameDescription
      noscpMissing $scope object
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/$controller/noscp.html b/1.2.30/docs/partials/error/$controller/noscp.html new file mode 100644 index 0000000000..1eafa0b3b3 --- /dev/null +++ b/1.2.30/docs/partials/error/$controller/noscp.html @@ -0,0 +1,27 @@ + Improve this Doc + + +

      Error: error:noscp +
      Missing $scope object
      +

      + +
      +
      Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.
      +
      + +

      Description

      +
      +

      This error occurs when $controller service is called in order to instantiate a new controller but no scope is provided via $scope property of the locals map.

      +

      Example of incorrect usage that leads to this error:

      +
      $controller(MyController);
      +//or
      +$controller(MyController, {scope: newScope});
      +
      +

      To fix the example above please provide a scope (using the $scope property in the locals object) to the $controller call:

      +
      $controller(MyController, {$scope: newScope});
      +
      +

      Please consult the $controller service api docs to learn more.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$httpBackend.html b/1.2.30/docs/partials/error/$httpBackend.html new file mode 100644 index 0000000000..780a835580 --- /dev/null +++ b/1.2.30/docs/partials/error/$httpBackend.html @@ -0,0 +1,27 @@ + Improve this Doc + + +

      $httpBackend

      + +
      + Here are the list of errors in the $httpBackend namespace. + +
      + +
      +
      + + + + + + + + + + +
      NameDescription
      noxhrUnsupported XHR
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/$httpBackend/noxhr.html b/1.2.30/docs/partials/error/$httpBackend/noxhr.html new file mode 100644 index 0000000000..a5da40e66e --- /dev/null +++ b/1.2.30/docs/partials/error/$httpBackend/noxhr.html @@ -0,0 +1,21 @@ + Improve this Doc + + +

      Error: error:noxhr +
      Unsupported XHR
      +

      + +
      +
      This browser does not support XMLHttpRequest.
      +
      + +

      Description

      +
      +

      This error occurs in browsers that do not support XmlHttpRequest. AngularJS +supports Safari, Chrome, Firefox, Opera, IE8 and higher, and mobile browsers +(Android, Chrome Mobile, iOS Safari). To avoid this error, use an officially +supported browser.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$injector.html b/1.2.30/docs/partials/error/$injector.html new file mode 100644 index 0000000000..84afe1d413 --- /dev/null +++ b/1.2.30/docs/partials/error/$injector.html @@ -0,0 +1,47 @@ + Improve this Doc + + +

      $injector

      + +
      + Here are the list of errors in the $injector namespace. + +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      cdepCircular Dependency
      itknBad Injection Token
      modulerrModule Error
      nomodModule Unavailable
      pgetProvider Missing $get
      unprUnknown Provider
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/$injector/cdep.html b/1.2.30/docs/partials/error/$injector/cdep.html new file mode 100644 index 0000000000..fda657ef7b --- /dev/null +++ b/1.2.30/docs/partials/error/$injector/cdep.html @@ -0,0 +1,33 @@ + Improve this Doc + + +

      Error: error:cdep +
      Circular Dependency
      +

      + +
      +
      Circular dependency found: {0}
      +
      + +

      Description

      +
      +

      This error occurs when the $injector tries to get +a service that depends on itself, either directly or indirectly. To fix this, +construct your dependency chain such that there are no circular dependencies.

      +

      For example:

      +
      angular.module('myApp', [])
      +.factory('myService', function (myService) {
      +  // ...
      +})
      +.controller('MyCtrl', function ($scope, myService) {
      +  // ...
      +});
      +
      +

      When an instance of MyCtrl is created, the service myService will be created +by the $injector. myService depends on itself, which causes the $injector +to detect a circular dependency and throw the error.

      +

      For more information, see the Dependency Injection Guide.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$injector/itkn.html b/1.2.30/docs/partials/error/$injector/itkn.html new file mode 100644 index 0000000000..04033536ec --- /dev/null +++ b/1.2.30/docs/partials/error/$injector/itkn.html @@ -0,0 +1,33 @@ + Improve this Doc + + +

      Error: error:itkn +
      Bad Injection Token
      +

      + +
      +
      Incorrect injection token! Expected service name as string, got {0}
      +
      + +

      Description

      +
      +

      This error occurs when using a bad token as a dependency injection annotation. +Dependency injection annotation tokens should always be strings. Using any other +type will cause this error to be thrown.

      +

      Examples of code with bad injection tokens include:

      +
      var myCtrl = function ($scope, $http) { /* ... */ };
      +myCtrl.$inject = ['$scope', 42];
      +
      +myAppModule.controller('MyCtrl', ['$scope', {}, function ($scope, $timeout) {
      +  // ...
      +}]);
      +
      +

      The bad injection tokens are 42 in the first example and {} in the second. +To avoid the error, always use string literals for dependency injection annotation +tokens.

      +

      For an explanation of what injection annotations are and how to use them, refer +to the Dependency Injection Guide.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$injector/modulerr.html b/1.2.30/docs/partials/error/$injector/modulerr.html new file mode 100644 index 0000000000..1da36fb06d --- /dev/null +++ b/1.2.30/docs/partials/error/$injector/modulerr.html @@ -0,0 +1,24 @@ + Improve this Doc + + +

      Error: error:modulerr +
      Module Error
      +

      + +
      +
      Failed to instantiate module {0} due to:
      +{1}
      +
      + +

      Description

      +
      +

      This error occurs when a module fails to load due to some exception. The error +message above should provide additional context.

      +

      In AngularJS 1.2.0 and later, ngRoute has been moved to its own module. +If you are getting this error after upgrading to 1.2.x, be sure that you've +installed ngRoute.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$injector/nomod.html b/1.2.30/docs/partials/error/$injector/nomod.html new file mode 100644 index 0000000000..71cd5a2001 --- /dev/null +++ b/1.2.30/docs/partials/error/$injector/nomod.html @@ -0,0 +1,36 @@ + Improve this Doc + + +

      Error: error:nomod +
      Module Unavailable
      +

      + +
      +
      Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
      +
      + +

      Description

      +
      +

      This error occurs when you declare a dependency on a module that isn't defined anywhere or hasn't +been loaded in the current browser context.

      +

      When you receive this error, check that the name of the module in question is correct and that the +file in which this module is defined has been loaded (either via <script> tag, loader like +require.js, or testing harness like karma).

      +

      A less common reason for this error is trying to "re-open" a module that has not yet been defined.

      +

      To define a new module, call angular.module with a name +and an array of dependent modules, like so:

      +
      // When defining a module with no module dependencies,
      +// the array of dependencies should be defined and empty.
      +var myApp = angular.module('myApp', []);
      +
      +

      To retrieve a reference to the same module for further configuration, call +angular.module without the array argument.

      +
      var myApp = angular.module('myApp');
      +
      +

      Calling angular.module without the array of dependencies when the module has not yet been defined +causes this error to be thrown. To fix it, define your module with a name and an empty array, as in +the first example above.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$injector/pget.html b/1.2.30/docs/partials/error/$injector/pget.html new file mode 100644 index 0000000000..17de02e074 --- /dev/null +++ b/1.2.30/docs/partials/error/$injector/pget.html @@ -0,0 +1,31 @@ + Improve this Doc + + +

      Error: error:pget +
      Provider Missing $get
      +

      + +
      +
      Provider '{0}' must define $get factory method.
      +
      + +

      Description

      +
      +

      This error occurs when attempting to register a provider that does not have a +$get method. For example:

      +
      function BadProvider() {} // No $get method!
      +angular.module("myApp", [])
      +  .provider('bad', BadProvider);  // this throws the error
      +
      +

      To fix the error, fill in the $get method on the provider like so:

      +
      function GoodProvider() {
      +this.$get = angular.noop;
      +}
      +angular.module("myApp", [])
      +.provider('good', GoodProvider);
      +
      +

      For more information, refer to the $provide.provider api doc.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$injector/unpr.html b/1.2.30/docs/partials/error/$injector/unpr.html new file mode 100644 index 0000000000..259a8a1d74 --- /dev/null +++ b/1.2.30/docs/partials/error/$injector/unpr.html @@ -0,0 +1,66 @@ + Improve this Doc + + +

      Error: error:unpr +
      Unknown Provider
      +

      + +
      +
      Unknown provider: {0}
      +
      + +

      Description

      +
      +

      This error results from the $injector being unable to resolve a required +dependency. To fix this, make sure the dependency is defined and spelled +correctly. For example:

      +
      angular.module('myApp', [])
      +.controller('MyController', ['myService', function (myService) {
      +  // Do something with myService
      +}]);
      +
      +

      The above code will fail with $injector:unpr if myService is not defined.

      +

      Making sure each dependency is defined will fix the problem, as noted below.

      +
      angular.module('myApp', [])
      +.service('myService', function () { /* ... */ })
      +.controller('MyController', ['myService', function (myService) {
      +  // Do something with myService
      +}]);
      +
      +

      An unknown provider error can also be caused by accidentally redefining a +module using the angular.module API, as shown in the following example.

      +
      angular.module('myModule', [])
      +.service('myCoolService', function () { /* ... */ });
      +
      +angular.module('myModule', [])
      +// myModule has already been created! This is not what you want!
      +.directive('myDirective', ['myCoolService', function (myCoolService) {
      +  // This directive definition throws unknown provider, because myCoolService
      +  // has been destroyed.
      +}]);
      +
      +

      To fix this problem, make sure you only define each module with the +angular.module(name, [requires]) syntax once across your entire project. +Retrieve it for subsequent use with angular.module(name). The fixed example +is shown below.

      +
      angular.module('myModule', [])
      +.service('myCoolService', function () { /* ... */ });
      +
      +angular.module('myModule')
      +.directive('myDirective', ['myCoolService', function (myCoolService) {
      +  // This directive definition does not throw unknown provider.
      +}]);
      +
      +

      Attempting to inject one controller into another will also throw an Unknown provider error:

      +
      angular.module('myModule', [])
      +.controller('MyFirstController', function() { /* ... */ });
      +.controller('MySecondController', ['MyFirstController', function(MyFirstController) {
      +  // This controller throws an unknown provider error because
      +  // MyFirstController cannot be injected.
      +}]);
      +
      +

      Use the $controller service if you want to instantiate controllers yourself.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$interpolate.html b/1.2.30/docs/partials/error/$interpolate.html new file mode 100644 index 0000000000..4b87fca8e7 --- /dev/null +++ b/1.2.30/docs/partials/error/$interpolate.html @@ -0,0 +1,31 @@ + Improve this Doc + + +

      $interpolate

      + +
      + Here are the list of errors in the $interpolate namespace. + +
      + +
      +
      + + + + + + + + + + + + + + +
      NameDescription
      interrInterpolation Error
      noconcatMultiple Expressions
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/$interpolate/interr.html b/1.2.30/docs/partials/error/$interpolate/interr.html new file mode 100644 index 0000000000..8de0888266 --- /dev/null +++ b/1.2.30/docs/partials/error/$interpolate/interr.html @@ -0,0 +1,21 @@ + Improve this Doc + + +

      Error: error:interr +
      Interpolation Error
      +

      + +
      +
      Can't interpolate: {0}
      +{1}
      +
      + +

      Description

      +
      +

      This error occurs when interpolation fails due to some exception. The error +message above should provide additional context.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$interpolate/noconcat.html b/1.2.30/docs/partials/error/$interpolate/noconcat.html new file mode 100644 index 0000000000..53895f43c0 --- /dev/null +++ b/1.2.30/docs/partials/error/$interpolate/noconcat.html @@ -0,0 +1,25 @@ + Improve this Doc + + +

      Error: error:noconcat +
      Multiple Expressions
      +

      + +
      +
      Error while interpolating: {0}
      +Strict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required.  See http://docs.angularjs.org/api/ng.$sce
      +
      + +

      Description

      +
      +

      This error occurs when performing an interpolation that concatenates multiple +expressions when a trusted value is required. Concatenating expressions makes +it hard to reason about whether some combination of concatenated values are +unsafe to use and could easily lead to XSS.

      +

      For more information about how AngularJS helps keep your app secure, refer to +the $sce API doc.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$location.html b/1.2.30/docs/partials/error/$location.html new file mode 100644 index 0000000000..762387e816 --- /dev/null +++ b/1.2.30/docs/partials/error/$location.html @@ -0,0 +1,35 @@ + Improve this Doc + + +

      $location

      + +
      + Here are the list of errors in the $location namespace. + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      NameDescription
      ihshprfxMissing Hash Prefix
      ipthprfxInvalid or Missing Path Prefix
      isrchargWrong $location.search() argument type
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/$location/ihshprfx.html b/1.2.30/docs/partials/error/$location/ihshprfx.html new file mode 100644 index 0000000000..279c326f53 --- /dev/null +++ b/1.2.30/docs/partials/error/$location/ihshprfx.html @@ -0,0 +1,25 @@ + Improve this Doc + + +

      Error: error:ihshprfx +
      Missing Hash Prefix
      +

      + +
      +
      Invalid url "{0}", missing hash prefix "{1}".
      +
      + +

      Description

      +
      +

      This error occurs when $location service is configured to use a hash prefix but this prefix was not present in a url that the $location service was asked to parse.

      +

      For example if you configure $location service with prefix '!':

      +
      myApp.config(function($locationProvider) {
      +$locationProvider.prefix('!');
      +});
      +
      +

      If you enter the app at url http:/myapp.com/#/myView this error will be throw.

      +

      The correct url for this configuration is http:/myapp.com/#!/myView (note the '!' after '#' symbol).

      + +
      + + diff --git a/1.2.30/docs/partials/error/$location/ipthprfx.html b/1.2.30/docs/partials/error/$location/ipthprfx.html new file mode 100644 index 0000000000..23f8f43c8d --- /dev/null +++ b/1.2.30/docs/partials/error/$location/ipthprfx.html @@ -0,0 +1,19 @@ + Improve this Doc + + +

      Error: error:ipthprfx +
      Invalid or Missing Path Prefix
      +

      + +
      +
      Invalid url "{0}", missing path prefix "{1}".
      +
      + +

      Description

      +
      +

      This error occurs when you configure the $location service in the html5 mode, specify a base url for your application via <base> element and try to update the location with a path that doesn't match the base prefix.

      +

      To resolve this issue, please check the base url specified via the <base> tag in the head of your main html document, as well as the url that you tried to set the location to.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$location/isrcharg.html b/1.2.30/docs/partials/error/$location/isrcharg.html new file mode 100644 index 0000000000..06b5ed64fc --- /dev/null +++ b/1.2.30/docs/partials/error/$location/isrcharg.html @@ -0,0 +1,20 @@ + Improve this Doc + + +

      Error: error:isrcharg +
      Wrong $location.search() argument type
      +

      + +
      +
      The first argument of the `$location#search()` call must be a string or an object.
      +
      + +

      Description

      +
      +

      To resolve this error, ensure that the first argument for the $location.search call is a string or an object. +You can use the stack trace associated with this error to identify the call site that caused this issue.

      +

      To learn more, please consult the $location api docs.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$parse.html b/1.2.30/docs/partials/error/$parse.html new file mode 100644 index 0000000000..07848a6f80 --- /dev/null +++ b/1.2.30/docs/partials/error/$parse.html @@ -0,0 +1,59 @@ + Improve this Doc + + +

      $parse

      + +
      + Here are the list of errors in the $parse namespace. + +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      isecdomReferencing a DOM node in Expression
      isecffReferencing 'call', 'apply' and 'bind' Disallowed
      isecfldReferencing Disallowed Field in Expression
      isecfnReferencing Function Disallowed
      isecobjReferencing Object Disallowed
      isecwindowReferencing Window object in Expression
      lexerrLexer Error
      syntaxSyntax Error
      ueoeUnexpected End of Expression
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/$parse/isecdom.html b/1.2.30/docs/partials/error/$parse/isecdom.html new file mode 100644 index 0000000000..2b3c35f3a1 --- /dev/null +++ b/1.2.30/docs/partials/error/$parse/isecdom.html @@ -0,0 +1,43 @@ + Improve this Doc + + +

      Error: error:isecdom +
      Referencing a DOM node in Expression
      +

      + +
      +
      Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}
      +
      + +

      Description

      +
      +

      Occurs when an expression attempts to access a DOM node.

      +

      AngularJS restricts access to DOM nodes from within expressions since it's a known way to +execute arbitrary Javascript code.

      +

      This check is only performed on object index and function calls in Angular expressions. These are +places that are harder for the developer to guard. Dotted member access (such as a.b.c) does not +perform this check - it's up to the developer to not expose such sensitive and powerful objects +directly on the scope chain.

      +

      To resolve this error, avoid access to DOM nodes.

      +

      Event Handlers and Return Values

      +

      The $parse:isecdom error also occurs when an event handler invokes a function that returns a DOM +node.

      +
      <button ng-click="iWillReturnDOM()">click me</button>
      +
      +
      $scope.iWillReturnDOM = function() {
      +  return someDomNode;
      +}
      +
      +

      To fix this issue, avoid returning DOM nodes from event handlers.

      +

      Note: This error often means that you are accessing DOM from your controllers, which is usually +a sign of poor coding style that violates separation of concerns.

      +

      Implicit Returns in CoffeeScript

      +

      This error can occur more frequently when using CoffeeScript, which has a feature called implicit +returns. This language feature returns the last dereferenced object in the function when the +function has no explicit return statement.

      +

      The solution in this scenario is to add an explicit return statement. For example return false to +the function.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$parse/isecff.html b/1.2.30/docs/partials/error/$parse/isecff.html new file mode 100644 index 0000000000..685c5cbf1f --- /dev/null +++ b/1.2.30/docs/partials/error/$parse/isecff.html @@ -0,0 +1,24 @@ + Improve this Doc + + +

      Error: error:isecff +
      Referencing 'call', 'apply' and 'bind' Disallowed
      +

      + +
      +
      Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}
      +
      + +

      Description

      +
      +

      Occurs when an expression attempts to invoke Function's 'call', 'apply' or 'bind'.

      +

      Angular bans the invocation of 'call', 'apply' and 'bind' from within expressions +since access is a known way to modify the behaviour of existing functions.

      +

      To resolve this error, avoid using these methods in expressions.

      +

      Example expression that would result in this error:

      +
      <div>{{user.sendInfo.call({}, true)}}</div>
      +
      + +
      + + diff --git a/1.2.30/docs/partials/error/$parse/isecfld.html b/1.2.30/docs/partials/error/$parse/isecfld.html new file mode 100644 index 0000000000..19f4566ad0 --- /dev/null +++ b/1.2.30/docs/partials/error/$parse/isecfld.html @@ -0,0 +1,35 @@ + Improve this Doc + + +

      Error: error:isecfld +
      Referencing Disallowed Field in Expression
      +

      + +
      +
      Attempting to access a disallowed field in Angular expressions! Expression: {0}
      +
      + +

      Description

      +
      +

      Occurs when an expression attempts to access one of the following fields:

      +
        +
      • proto
      • +
      • defineGetter
      • +
      • defineSetter
      • +
      • lookupGetter
      • +
      • lookupSetter
      • +
      +

      AngularJS bans access to these fields from within expressions since +access is a known way to mess with native objects or +to execute arbitrary Javascript code.

      +

      To resolve this error, avoid using these fields in expressions. As a last resort, +alias their value and access them through the alias instead.

      +

      Example expressions that would result in this error:

      +
      <div>{{user.__proto__.hasOwnProperty = $emit}}</div>
      +
      +<div>{{user.__defineGetter__('name', noop)}}</div>
      +
      + +
      + + diff --git a/1.2.30/docs/partials/error/$parse/isecfn.html b/1.2.30/docs/partials/error/$parse/isecfn.html new file mode 100644 index 0000000000..f74a095ad8 --- /dev/null +++ b/1.2.30/docs/partials/error/$parse/isecfn.html @@ -0,0 +1,20 @@ + Improve this Doc + + +

      Error: error:isecfn +
      Referencing Function Disallowed
      +

      + +
      +
      Referencing Function in Angular expressions is disallowed! Expression: {0}
      +
      + +

      Description

      +
      +

      Occurs when an expression attempts to access the 'Function' object (constructor for all functions in JavaScript).

      +

      Angular bans access to Function from within expressions since constructor access is a known way to execute arbitrary Javascript code.

      +

      To resolve this error, avoid Function access.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$parse/isecobj.html b/1.2.30/docs/partials/error/$parse/isecobj.html new file mode 100644 index 0000000000..296c3b584a --- /dev/null +++ b/1.2.30/docs/partials/error/$parse/isecobj.html @@ -0,0 +1,21 @@ + Improve this Doc + + +

      Error: error:isecobj +
      Referencing Object Disallowed
      +

      + +
      +
      Referencing Object in Angular expressions is disallowed! Expression: {0}
      +
      + +

      Description

      +
      +

      Occurs when an expression attempts to access the 'Object' object (Root object in JavaScript).

      +

      Angular bans access to Object from within expressions since access is a known way to modify +the behaviour of existing objects.

      +

      To resolve this error, avoid Object access.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$parse/isecwindow.html b/1.2.30/docs/partials/error/$parse/isecwindow.html new file mode 100644 index 0000000000..affbbc76f0 --- /dev/null +++ b/1.2.30/docs/partials/error/$parse/isecwindow.html @@ -0,0 +1,25 @@ + Improve this Doc + + +

      Error: error:isecwindow +
      Referencing Window object in Expression
      +

      + +
      +
      Referencing the Window in Angular expressions is disallowed! Expression: {0}
      +
      + +

      Description

      +
      +

      Occurs when an expression attempts to access a Window object.

      +

      AngularJS restricts access to the Window object from within expressions since it's a known way to +execute arbitrary Javascript code.

      +

      This check is only performed on object index and function calls in Angular expressions. These are +places that are harder for the developer to guard. Dotted member access (such as a.b.c) does not +perform this check - it's up to the developer to not expose such sensitive and powerful objects +directly on the scope chain.

      +

      To resolve this error, avoid Window access.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$parse/lexerr.html b/1.2.30/docs/partials/error/$parse/lexerr.html new file mode 100644 index 0000000000..3f888ee97d --- /dev/null +++ b/1.2.30/docs/partials/error/$parse/lexerr.html @@ -0,0 +1,20 @@ + Improve this Doc + + +

      Error: error:lexerr +
      Lexer Error
      +

      + +
      +
      Lexer Error: {0} at column{1} in expression [{2}].
      +
      + +

      Description

      +
      +

      Occurs when an expression has a lexical error, for example a malformed number (0.5e-) or an invalid unicode escape.

      +

      The error message contains a more precise error.

      +

      To resolve, learn more about Angular expressions, identify the error and fix the expression's syntax.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$parse/syntax.html b/1.2.30/docs/partials/error/$parse/syntax.html new file mode 100644 index 0000000000..25e20a7ffb --- /dev/null +++ b/1.2.30/docs/partials/error/$parse/syntax.html @@ -0,0 +1,20 @@ + Improve this Doc + + +

      Error: error:syntax +
      Syntax Error
      +

      + +
      +
      Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].
      +
      + +

      Description

      +
      +

      Occurs when there is a syntax error in an expression. These errors are thrown while compiling the expression. +The error message contains a more precise description of the error, including the location (column) in the expression where the error occurred.

      +

      To resolve, learn more about Angular expressions, identify the error and fix the expression's syntax.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$parse/ueoe.html b/1.2.30/docs/partials/error/$parse/ueoe.html new file mode 100644 index 0000000000..c0426c8d81 --- /dev/null +++ b/1.2.30/docs/partials/error/$parse/ueoe.html @@ -0,0 +1,20 @@ + Improve this Doc + + +

      Error: error:ueoe +
      Unexpected End of Expression
      +

      + +
      +
      Unexpected end of expression: {0}
      +
      + +

      Description

      +
      +

      Occurs when an expression is missing tokens at the end of the expression. +For example, forgetting a closing bracket in an expression will trigger this error.

      +

      To resolve, learn more about Angular expressions, identify the error and fix the expression's syntax.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$resource.html b/1.2.30/docs/partials/error/$resource.html new file mode 100644 index 0000000000..189f10d895 --- /dev/null +++ b/1.2.30/docs/partials/error/$resource.html @@ -0,0 +1,39 @@ + Improve this Doc + + +

      $resource

      + +
      + Here are the list of errors in the $resource namespace. + +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      badargsToo Many Arguments
      badcfgResponse does not match configured parameter
      badmemberSyntax error in param value using @member lookup
      badnameCannot use hasOwnProperty as a parameter name
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/$resource/badargs.html b/1.2.30/docs/partials/error/$resource/badargs.html new file mode 100644 index 0000000000..d43b1f57c2 --- /dev/null +++ b/1.2.30/docs/partials/error/$resource/badargs.html @@ -0,0 +1,20 @@ + Improve this Doc + + +

      Error: error:badargs +
      Too Many Arguments
      +

      + +
      +
      Expected up to 4 arguments [params, data, success, error], got {0} arguments
      +
      + +

      Description

      +
      +

      This error occurs when specifying too many arguments to a $resource action, such as get, query or any user-defined custom action. +These actions may take up to 4 arguments.

      +

      For more information, refer to the $resource API reference documentation.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$resource/badcfg.html b/1.2.30/docs/partials/error/$resource/badcfg.html new file mode 100644 index 0000000000..1594cb03e8 --- /dev/null +++ b/1.2.30/docs/partials/error/$resource/badcfg.html @@ -0,0 +1,21 @@ + Improve this Doc + + +

      Error: error:badcfg +
      Response does not match configured parameter
      +

      + +
      +
      Error in resource configuration. Expected response to contain an {0} but got an {1}
      +
      + +

      Description

      +
      +

      This error occurs when the $resource service expects a response that can be deserialized as an array but receives an object, or vice versa. +By default, all resource actions expect objects, except query which expects arrays.

      +

      To resolve this error, make sure your $resource configuration matches the actual format of the data returned from the server.

      +

      For more information, see the $resource API reference documentation.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$resource/badmember.html b/1.2.30/docs/partials/error/$resource/badmember.html new file mode 100644 index 0000000000..3f509dc2d8 --- /dev/null +++ b/1.2.30/docs/partials/error/$resource/badmember.html @@ -0,0 +1,54 @@ + Improve this Doc + + +

      Error: error:badmember +
      Syntax error in param value using @member lookup
      +

      + +
      +
      Dotted member path "@{0}" is invalid.
      +
      + +

      Description

      +
      +

      Occurs when there is a syntax error when attempting to extract a param +value from the data object.

      +

      Here's an example of valid syntax for params or paramsDefault:

      +
      {
      +bar: '@foo.bar'
      +}
      +
      +

      The part following the @, foo.bar in this case, should be a simple +dotted member lookup using only ASCII identifiers. This error occurs +when there is an error in that expression. The following are all syntax +errors

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      ValueError
      @Empty expression following @.
      @1.a1 is an invalid javascript identifier.
      @.aLeading . is invalid.
      @a[1]Only dotted lookups are supported (no index operator)
      + +
      + + diff --git a/1.2.30/docs/partials/error/$resource/badname.html b/1.2.30/docs/partials/error/$resource/badname.html new file mode 100644 index 0000000000..62309ed6bb --- /dev/null +++ b/1.2.30/docs/partials/error/$resource/badname.html @@ -0,0 +1,20 @@ + Improve this Doc + + +

      Error: error:badname +
      Cannot use hasOwnProperty as a parameter name
      +

      + +
      +
      hasOwnProperty is not a valid parameter name.
      +
      + +

      Description

      +
      +

      Occurs when you try to use the name hasOwnProperty as a name of a parameter. +Generally, a name cannot be hasOwnProperty because it is used, internally, on a object +and allowing such a name would break lookups on this object.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$rootScope.html b/1.2.30/docs/partials/error/$rootScope.html new file mode 100644 index 0000000000..6eeb45df0b --- /dev/null +++ b/1.2.30/docs/partials/error/$rootScope.html @@ -0,0 +1,31 @@ + Improve this Doc + + +

      $rootScope

      + +
      + Here are the list of errors in the $rootScope namespace. + +
      + +
      +
      + + + + + + + + + + + + + + +
      NameDescription
      infdigInfinite $digest Loop
      inprogAction Already In Progress
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/$rootScope/infdig.html b/1.2.30/docs/partials/error/$rootScope/infdig.html new file mode 100644 index 0000000000..f6fff7f661 --- /dev/null +++ b/1.2.30/docs/partials/error/$rootScope/infdig.html @@ -0,0 +1,45 @@ + Improve this Doc + + +

      Error: error:infdig +
      Infinite $digest Loop
      +

      + +
      +
      {0} $digest() iterations reached. Aborting!
      +Watchers fired in the last 5 iterations: {1}
      +
      + +

      Description

      +
      +

      This error occurs when the application's model becomes unstable and each $digest cycle triggers a state change and subsequent $digest cycle. +Angular detects this situation and prevents an infinite loop from causing the browser to become unresponsive.

      +

      For example, the situation can occur by setting up a watch on a path and subsequently updating the same path when the value changes.

      +
      $scope.$watch('foo', function() {
      +$scope.foo = $scope.foo + 1;
      +});
      +
      +

      One common mistake is binding to a function which generates a new array every time it is called. For example:

      +
      <div ng-repeat="user in getUsers()">{{ user.name }}</div>
      +
      +...
      +
      +$scope.getUsers = function() {
      +  return [ { name: 'Hank' }, { name: 'Francisco' } ];
      +};
      +
      +

      Since getUsers() returns a new array, Angular determines that the model is different on each $digest +cycle, resulting in the error. The solution is to return the same array object if the elements have +not changed:

      +
      var users = [ { name: 'Hank' }, { name: 'Francisco' } ];
      +
      +$scope.getUsers = function() {
      +  return users;
      +};
      +
      +

      The maximum number of allowed iterations of the $digest cycle is controlled via TTL setting which can be configured via $rootScopeProvider.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$rootScope/inprog.html b/1.2.30/docs/partials/error/$rootScope/inprog.html new file mode 100644 index 0000000000..587eabcb82 --- /dev/null +++ b/1.2.30/docs/partials/error/$rootScope/inprog.html @@ -0,0 +1,287 @@ + Improve this Doc + + +

      Error: error:inprog +
      Action Already In Progress
      +

      + +
      +
      {0} already in progress
      +
      + +

      Description

      +
      +

      At any point in time there can be only one $digest or $apply operation in progress. This is to +prevent very hard to detect bugs from entering your application. The stack trace of this error +allows you to trace the origin of the currently executing $apply or $digest call, which caused +the error.

      +

      Background

      +

      Angular uses a dirty-checking digest mechanism to monitor and update values of the scope during +the processing of your application. The digest works by checking all the values that are being +watched against their previous value and running any watch handlers that have been defined for those +values that have changed.

      +

      This digest mechanism is triggered by calling $digest on a scope object. Normally you do not need +to trigger a digest manually, because every external action that can trigger changes in your +application, such as mouse events, timeouts or server responses, wrap the Angular application code +in a block of code that will run $digest when the code completes.

      +

      You wrap Angular code in a block that will be followed by a $digest by calling $apply on a scope +object. So, in pseudo-code, the process looks like this:

      +
      element.on('mouseup', function() {
      +scope.$apply(function() {
      +  $scope.doStuff();
      +});
      +});
      +
      +

      where $apply() looks something like:

      +
      $apply = function(fn) {
      +try {
      +  fn();
      +} finally() {
      +  $digest();
      +}
      +}
      +
      +

      Digest Phases

      +

      Angular keeps track of what phase of processing we are in, the relevant ones being $apply and +$digest. Trying to reenter a $digest or $apply while one of them is already in progress is +typically a sign of programming error that needs to be fixed. So Angular will throw this error when +that occurs.

      +

      In most situations it should be well defined whether a piece of code will be run inside an $apply, +in which case you should not be calling $apply or $digest, or it will be run outside, in which +case you should wrap any code that will be interacting with Angular scope or services, in a call to +$apply.

      +

      As an example, all Controller code should expect to be run within Angular, so it should have no need +to call $apply or $digest. Conversely, code that is being trigger directly as a call back to +some external event, from the DOM or 3rd party library, should expect that it is never called from +within Angular, and so any Angular application code that it calls should first be wrapped in a call +to $apply.

      +

      Common Causes

      +

      Apart from simply incorrect calls to $apply or $digest there are some cases when you may get +this error through no fault of your own.

      +

      Inconsistent API (Sync/Async)

      +

      This error is often seen when interacting with an API that is sometimes sync and sometimes async.

      +

      For example, imagine a 3rd party library that has a method which will retrieve data for us. Since it +may be making an asynchronous call to a server, it accepts a callback function, which will be called +when the data arrives.

      +
      function MyController($scope, thirdPartyComponent) {
      +thirdPartyComponent.getData(function(someData) {
      +  $scope.$apply(function() {
      +    $scope.someData = someData;
      +  });
      +});
      +}
      +
      +

      We expect that our callback will be called asynchronously, and so from outside Angular. Therefore, we +correctly wrap our application code that interacts with Angular in a call to $apply.

      +

      The problem comes if getData() decides to call the callback handler synchronously; perhaps it has +the data already cached in memory and so it immediately calls the callback to return the data, +synchronously.

      +

      Since, the MyController constructor is always instantiated from within an $apply call, our +handler is trying to enter a new $apply block from within one.

      +

      This is not an ideal design choice on the part of the 3rd party library.

      +

      To resolve this type of issue, either fix the api to be always synchronous or asynchronous or force +your callback handler to always run asynchronously by using the $timeout service.

      +
      function MyController($scope, thirdPartyComponent) {
      +thirdPartyComponent.getData(function(someData) {
      +  $timeout(function() {
      +    $scope.someData = someData;
      +  }, 0);
      +});
      +}
      +
      +

      Here we have used $timeout to schedule the changes to the scope in a future call stack. +By providing a timeout period of 0ms, this will occur as soon as possible and $timeout will ensure +that the code will be called in a single $apply block.

      +

      Triggering Events Programmatically

      +

      The other situation that often leads to this error is when you trigger code (such as a DOM event) +programmatically (from within Angular), which is normally called by an external trigger.

      +

      For example, consider a directive that will set focus on an input control when a value in the scope +is true:

      +
      myApp.directive('setFocusIf', function() {
      +return {
      +  link: function($scope, $element, $attr) {
      +    $scope.$watch($attr.setFocusIf, function(value) {
      +      if ( value ) { $element[0].focus(); }
      +    });
      +  }
      +};
      +});
      +
      +

      If we applied this directive to an input which also used the ngFocus directive to trigger some +work when the element receives focus we will have a problem:

      +
      <input set-focus-if="hasFocus" ng-focus="msg='has focus'">
      +<button ng-click="hasFocus = true">Focus</button>
      +
      +

      In this setup, there are two ways to trigger ngFocus. First from a user interaction:

      +
        +
      • Click on the input control
      • +
      • The input control gets focus
      • +
      • The ngFocus directive is triggered, setting $scope.msg='has focus' from within a new call to +$apply()
      • +
      +

      Second programmatically:

      +
        +
      • Click the button
      • +
      • The ngClick directive sets the value of $scope.hasFocus to true inside a call to $apply
      • +
      • The $digest runs, which triggers the watch inside the setFocusIf directive
      • +
      • The watch's handle runs, which gives the focus to the input
      • +
      • The ngFocus directive is triggered, setting $scope.msg='has focus' from within a new call to +$apply()
      • +
      +

      In this second scenario, we are already inside a $digest when the ngFocus directive makes another +call to $apply(), causing this error to be thrown.

      +

      It is possible to workaround this problem by moving the call to set the focus outside of the digest, +by using $timeout(fn, 0, false), where the false value tells Angular not to wrap this fn in a +$apply block:

      +
      myApp.directive('setFocusIf', function($timeout) {
      +return {
      +  link: function($scope, $element, $attr) {
      +    $scope.$watch($attr.setFocusIf, function(value) {
      +      if ( value ) {
      +        $timeout(function() {
      +          // We must reevaluate the value in case it was changed by a subsequent
      +          // watch handler in the digest.
      +          if ( $scope.$eval($attr.setFocusIf) ) {
      +            $element[0].focus();
      +          }
      +        }, 0, false);
      +      }
      +    });
      +  }
      +}
      +});
      +
      +

      Diagnosing This Error

      +

      When you get this error it can be rather daunting to diagnose the cause of the issue. The best +course of action is to investigate the stack trace from the error. You need to look for places +where $apply or $digest have been called and find the context in which this occurred.

      +

      There should be two calls:

      +
        +
      • The first call is the good $apply/$digest and would normally be triggered by some event near +the top of the call stack.

        +
      • +
      • The second call is the bad $apply/$digest and this is the one to investigate.

        +
      • +
      +

      Once you have identified this call you work your way up the stack to see what the problem is.

      +
        +
      • If the second call was made in your application code then you should look at why this code has been +called from within a $apply/$digest. It may be a simple oversight or maybe it fits with the +sync/async scenario described earlier.

        +
      • +
      • If the second call was made inside an Angular directive then it is likely that it matches the second +programmatic event trigger scenario described earlier. In this case you may need to look further up +the tree to what triggered the event in the first place.

        +
      • +
      +

      Example Problem

      +

      Let's look at how to investigate this error using the setFocusIf example from above. This example +defines a new setFocusIf directive that sets the focus on the element where it is defined when the +value of its attribute becomes true.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <button ng-click="focusInput = true">Focus</button>
      <input ng-focus="count = count + 1" set-focus-if="focusInput" />
      +
      + +
      +
      angular.module('app', []).directive('setFocusIf', function() {
        return function link($scope, $element, $attr) {
          $scope.$watch($attr.setFocusIf, function(value) {
            if ( value ) { $element[0].focus(); }
          });
        };
      });
      +
      + + + +
      +
      + + +

      +

      When you click on the button to cause the focus to occur we get our $rootScope:inprog error. The +stacktrace looks like this:

      +
      Error: [$rootScope:inprog]
      +at Error (native)
      +at angular.min.js:6:467
      +at n (angular.min.js:105:60)
      +at g.$get.g.$apply (angular.min.js:113:195)
      +at HTMLInputElement.<anonymous> (angular.min.js:198:401)
      +at angular.min.js:32:32
      +at Array.forEach (native)
      +at q (angular.min.js:7:295)
      +at HTMLInputElement.c (angular.min.js:32:14)
      +at Object.fn (app.js:12:38) angular.js:10111
      +(anonymous function) angular.js:10111
      +$get angular.js:7412
      +$get.g.$apply angular.js:12738                   <--- $apply
      +(anonymous function) angular.js:19833            <--- called here
      +(anonymous function) angular.js:2890
      +q angular.js:320
      +c angular.js:2889
      +(anonymous function) app.js:12
      +$get.g.$digest angular.js:12469
      +$get.g.$apply angular.js:12742                   <--- $apply
      +(anonymous function) angular.js:19833            <--- called here
      +(anonymous function) angular.js:2890
      +q angular.js:320
      +
      +

      We can see (even though the Angular code is minified) that there were two calls to $apply, first +on line 19833, then on line 12738 of angular.js.

      +

      It is this second call that caused the error. If we look at the angular.js code, we can see that +this call is made by an Angular directive.

      +
      var ngEventDirectives = {};
      +forEach(
      +  'click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste'.split(' '),
      +  function(name) {
      +    var directiveName = directiveNormalize('ng-' + name);
      +    ngEventDirectives[directiveName] = ['$parse', function($parse) {
      +      return {
      +        compile: function($element, attr) {
      +          var fn = $parse(attr[directiveName]);
      +          return function(scope, element, attr) {
      +            element.on(lowercase(name), function(event) {
      +              scope.$apply(function() {
      +                fn(scope, {$event:event});
      +              });
      +            });
      +          };
      +        }
      +      };
      +    }];
      +  }
      +);
      +
      +

      It is not possible to tell which from the stack trace, but we happen to know in this case that it is +the ngFocus directive.

      +

      Now look up the stack to see that our application code is only entered once in app.js at line 12. +This is where our problem is:

      +
      10: link: function($scope, $element, $attr) {
      +11:   $scope.$watch($attr.setFocusIf, function(value) {
      +12:     if ( value ) { $element[0].focus(); }    <---- This is the source of the problem
      +13:   });
      +14: }
      +
      +

      We can now see that the second $apply was caused by us programmatically triggering a DOM event +(i.e. focus) to occur. We must fix this by moving the code outside of the $apply block using +$timeout as described above.

      +

      Further Reading

      +

      To learn more about Angular processing model please check out the +concepts doc as well as the api doc.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$sanitize.html b/1.2.30/docs/partials/error/$sanitize.html new file mode 100644 index 0000000000..ed99a4ea06 --- /dev/null +++ b/1.2.30/docs/partials/error/$sanitize.html @@ -0,0 +1,27 @@ + Improve this Doc + + +

      $sanitize

      + +
      + Here are the list of errors in the $sanitize namespace. + +
      + +
      +
      + + + + + + + + + + +
      NameDescription
      badparseParsing Error while Sanitizing
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/$sanitize/badparse.html b/1.2.30/docs/partials/error/$sanitize/badparse.html new file mode 100644 index 0000000000..42be925cc4 --- /dev/null +++ b/1.2.30/docs/partials/error/$sanitize/badparse.html @@ -0,0 +1,21 @@ + Improve this Doc + + +

      Error: error:badparse +
      Parsing Error while Sanitizing
      +

      + +
      +
      The sanitizer was unable to parse the following block of html: {0}
      +
      + +

      Description

      +
      +

      This error occurs when the HTML string passed to '$sanitize' can't be parsed by the sanitizer. +The error contains part of the html string that can't be parsed.

      +

      The parser is more strict than a typical browser parser, so it's possible that some obscure input would produce this error despite the string being recognized as valid HTML by a browser.

      +

      If a valid html code results in this error, please file a bug.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$sce.html b/1.2.30/docs/partials/error/$sce.html new file mode 100644 index 0000000000..e09fa16d95 --- /dev/null +++ b/1.2.30/docs/partials/error/$sce.html @@ -0,0 +1,51 @@ + Improve this Doc + + +

      $sce

      + +
      + Here are the list of errors in the $sce namespace. + +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      icontextInvalid / Unknown SCE context
      iequirksIE8 in quirks mode is unsupported
      imatcherInvalid matcher (only string patterns and RegExp instances are supported)
      insecurlProcessing of a Resource from Untrusted Source Blocked
      itypeString Value is Required for SCE Trust Call
      iwcardThe sequence *** is not a valid pattern wildcard
      unsafeRequire a safe/trusted value
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/$sce/icontext.html b/1.2.30/docs/partials/error/$sce/icontext.html new file mode 100644 index 0000000000..d4b33634bc --- /dev/null +++ b/1.2.30/docs/partials/error/$sce/icontext.html @@ -0,0 +1,19 @@ + Improve this Doc + + +

      Error: error:icontext +
      Invalid / Unknown SCE context
      +

      + +
      +
      Attempted to trust a value in invalid context. Context: {0}; Value: {1}
      +
      + +

      Description

      +
      +

      The context enum passed to $sce.trustAs was not recognized.

      +

      Please consult the list of supported Strict Contextual Escaping (SCE) contexts.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$sce/iequirks.html b/1.2.30/docs/partials/error/$sce/iequirks.html new file mode 100644 index 0000000000..0ce479634b --- /dev/null +++ b/1.2.30/docs/partials/error/$sce/iequirks.html @@ -0,0 +1,25 @@ + Improve this Doc + + +

      Error: error:iequirks +
      IE8 in quirks mode is unsupported
      +

      + +
      +
      Strict Contextual Escaping does not support Internet Explorer version < 9 in quirks mode.  You can fix this by adding the text  to the top of your HTML document.  See http://docs.angularjs.org/api/ng.$sce for more information.
      +
      + +

      Description

      +
      +

      This error occurs when you are using AngularJS with Strict Contextual Escaping (SCE) mode enabled (the default) on IE8 or lower in quirks mode.

      +

      In this mode, IE8 allows one to execute arbitrary javascript by the use of the expression() syntax and is not supported. +Refer +MSDN Blogs > IEBlog > Ending Expressions +to learn more about them.

      +

      To resolve this error please specify the proper doctype at the top of your main html document:

      +
      <!doctype html>
      +
      + +
      + + diff --git a/1.2.30/docs/partials/error/$sce/imatcher.html b/1.2.30/docs/partials/error/$sce/imatcher.html new file mode 100644 index 0000000000..27114dfe7f --- /dev/null +++ b/1.2.30/docs/partials/error/$sce/imatcher.html @@ -0,0 +1,19 @@ + Improve this Doc + + +

      Error: error:imatcher +
      Invalid matcher (only string patterns and RegExp instances are supported)
      +

      + +
      +
      Matchers may only be "self", string patterns or RegExp objects
      +
      + +

      Description

      +
      +

      Please see $sceDelegateProvider.resourceUrlWhitelist and $sceDelegateProvider.resourceUrlBlacklist for the +list of acceptable items.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$sce/insecurl.html b/1.2.30/docs/partials/error/$sce/insecurl.html new file mode 100644 index 0000000000..26fff71b0e --- /dev/null +++ b/1.2.30/docs/partials/error/$sce/insecurl.html @@ -0,0 +1,29 @@ + Improve this Doc + + +

      Error: error:insecurl +
      Processing of a Resource from Untrusted Source Blocked
      +

      + +
      +
      Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}
      +
      + +

      Description

      +
      +

      AngularJS' Strict Contextual Escaping (SCE) mode (enabled by default) has blocked loading a resource from an insecure URL.

      +

      Typically, this would occur if you're attempting to load an Angular template from an untrusted source. +It's also possible that a custom directive threw this error for a similar reason.

      +

      Angular only loads templates from trusted URLs (by calling $sce.getTrustedResourceUrl on the template URL).

      +

      By default, only URLs that belong to the same origin are trusted. These are urls with the same domain, protocol and port as the application document.

      +

      The ngInclude directive and directives that specify a templateUrl require a trusted resource URL.

      +

      To load templates from other domains and/or protocols, either adjust the whitelist/ blacklist or wrap the URL with a call to $sce.trustAsResourceUrl.

      +

      Note: The browser's Same Origin +Policy and +Cross-Origin Resource Sharing (CORS) policy apply +that may further restrict whether the template is successfully loaded. (e.g. neither cross-domain +requests won't work on all browsers nor file:// requests on some browsers)

      + +
      + + diff --git a/1.2.30/docs/partials/error/$sce/itype.html b/1.2.30/docs/partials/error/$sce/itype.html new file mode 100644 index 0000000000..1f5d813909 --- /dev/null +++ b/1.2.30/docs/partials/error/$sce/itype.html @@ -0,0 +1,19 @@ + Improve this Doc + + +

      Error: error:itype +
      String Value is Required for SCE Trust Call
      +

      + +
      +
      Attempted to trust a non-string value in a content requiring a string: Context: {0}
      +
      + +

      Description

      +
      +

      $sce.trustAs requires a string value.

      +

      Read more about Strict Contextual Escaping (SCE) in AngularJS.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$sce/iwcard.html b/1.2.30/docs/partials/error/$sce/iwcard.html new file mode 100644 index 0000000000..70dac856aa --- /dev/null +++ b/1.2.30/docs/partials/error/$sce/iwcard.html @@ -0,0 +1,19 @@ + Improve this Doc + + +

      Error: error:iwcard +
      The sequence *** is not a valid pattern wildcard
      +

      + +
      +
      Illegal sequence *** in string matcher.  String: {0}
      +
      + +

      Description

      +
      +

      The strings in $sceDelegateProvider.resourceUrlWhitelist and $sceDelegateProvider.resourceUrlBlacklist may not +contain the undefined sequence ***. Only * and ** wildcard patterns are defined.

      + +
      + + diff --git a/1.2.30/docs/partials/error/$sce/unsafe.html b/1.2.30/docs/partials/error/$sce/unsafe.html new file mode 100644 index 0000000000..ad8fa97757 --- /dev/null +++ b/1.2.30/docs/partials/error/$sce/unsafe.html @@ -0,0 +1,25 @@ + Improve this Doc + + +

      Error: error:unsafe +
      Require a safe/trusted value
      +

      + +
      +
      Attempting to use an unsafe value in a safe context.
      +
      + +

      Description

      +
      +

      The value provided for use in a specific context was not found to be safe/trusted for use.

      +

      Angular's Strict Contextual Escaping (SCE) mode +(enabled by default), requires bindings in certain +contexts to result in a value that is trusted as safe for use in such a context. (e.g. loading an +Angular template from a URL requires that the URL is one considered safe for loading resources.)

      +

      This helps prevent XSS and other security issues. Read more at +Strict Contextual Escaping (SCE)

      +

      You may want to include the ngSanitize module to use the automatic sanitizing.

      + +
      + + diff --git a/1.2.30/docs/partials/error/jqLite.html b/1.2.30/docs/partials/error/jqLite.html new file mode 100644 index 0000000000..9d95c0a657 --- /dev/null +++ b/1.2.30/docs/partials/error/jqLite.html @@ -0,0 +1,35 @@ + Improve this Doc + + +

      jqLite

      + +
      + Here are the list of errors in the jqLite namespace. + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      NameDescription
      noselUnsupported Selector Lookup
      offargsInvalid jqLite#off() parameter
      onargsInvalid jqLite#on() Parameters
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/jqLite/nosel.html b/1.2.30/docs/partials/error/jqLite/nosel.html new file mode 100644 index 0000000000..051ae64a33 --- /dev/null +++ b/1.2.30/docs/partials/error/jqLite/nosel.html @@ -0,0 +1,21 @@ + Improve this Doc + + +

      Error: error:nosel +
      Unsupported Selector Lookup
      +

      + +
      +
      Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element
      +
      + +

      Description

      +
      +

      In order to keep Angular small, Angular implements only a subset of the selectors in jqLite. +This error occurs when a jqLite instance is invoked with a selector other than this subset.

      +

      In order to resolve this error, rewrite your code to only use tag name selectors and manually traverse the DOM using the APIs provided by jqLite.

      +

      Alternatively, you can include a full version of jQuery, which Angular will automatically use and that will make all selectors available.

      + +
      + + diff --git a/1.2.30/docs/partials/error/jqLite/offargs.html b/1.2.30/docs/partials/error/jqLite/offargs.html new file mode 100644 index 0000000000..d6eb4a0d89 --- /dev/null +++ b/1.2.30/docs/partials/error/jqLite/offargs.html @@ -0,0 +1,19 @@ + Improve this Doc + + +

      Error: error:offargs +
      Invalid jqLite#off() parameter
      +

      + +
      +
      jqLite#off() does not support the `selector` argument
      +
      + +

      Description

      +
      +

      This error occurs when trying to pass too many arguments to jqLite#off. Note +that jqLite#off does not support namespaces or selectors like jQuery.

      + +
      + + diff --git a/1.2.30/docs/partials/error/jqLite/onargs.html b/1.2.30/docs/partials/error/jqLite/onargs.html new file mode 100644 index 0000000000..ba13a266db --- /dev/null +++ b/1.2.30/docs/partials/error/jqLite/onargs.html @@ -0,0 +1,20 @@ + Improve this Doc + + +

      Error: error:onargs +
      Invalid jqLite#on() Parameters
      +

      + +
      +
      jqLite#on() does not support the `selector` or `eventData` parameters
      +
      + +

      Description

      +
      +

      This error occurs when trying to pass too many arguments to jqLite#on. Note +that jqLite#on does not support the selector or eventData parameters as +jQuery does.

      + +
      + + diff --git a/1.2.30/docs/partials/error/ng.html b/1.2.30/docs/partials/error/ng.html new file mode 100644 index 0000000000..4628312848 --- /dev/null +++ b/1.2.30/docs/partials/error/ng.html @@ -0,0 +1,43 @@ + Improve this Doc + + +

      ng

      + +
      + Here are the list of errors in the ng namespace. + +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      areqBad Argument
      badnameBad `hasOwnProperty` Name
      btstrpdApp Already Bootstrapped with this Element
      cpiBad Copy
      cpwsCopying Window or Scope
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/ng/areq.html b/1.2.30/docs/partials/error/ng/areq.html new file mode 100644 index 0000000000..5743400807 --- /dev/null +++ b/1.2.30/docs/partials/error/ng/areq.html @@ -0,0 +1,20 @@ + Improve this Doc + + +

      Error: error:areq +
      Bad Argument
      +

      + +
      +
      Argument '{0}' is {1}
      +
      + +

      Description

      +
      +

      AngularJS often asserts that certain values will be present and truthy using a +helper function. If the assertion fails, this error is thrown. To fix this problem, +make sure that the value the assertion expects is defined and truthy.

      + +
      + + diff --git a/1.2.30/docs/partials/error/ng/badname.html b/1.2.30/docs/partials/error/ng/badname.html new file mode 100644 index 0000000000..c91e55c836 --- /dev/null +++ b/1.2.30/docs/partials/error/ng/badname.html @@ -0,0 +1,20 @@ + Improve this Doc + + +

      Error: error:badname +
      Bad `hasOwnProperty` Name
      +

      + +
      +
      hasOwnProperty is not a valid {0} name
      +
      + +

      Description

      +
      +

      Occurs when you try to use the name hasOwnProperty in a context where it is not allow. +Generally, a name cannot be hasOwnProperty because it is used, internally, on a object +and allowing such a name would break lookups on this object.

      + +
      + + diff --git a/1.2.30/docs/partials/error/ng/btstrpd.html b/1.2.30/docs/partials/error/ng/btstrpd.html new file mode 100644 index 0000000000..4faeec5363 --- /dev/null +++ b/1.2.30/docs/partials/error/ng/btstrpd.html @@ -0,0 +1,54 @@ + Improve this Doc + + +

      Error: error:btstrpd +
      App Already Bootstrapped with this Element
      +

      + +
      +
      App Already Bootstrapped with this Element '{0}'
      +
      + +

      Description

      +
      +

      Occurs when calling angular.bootstrap on an element that has already been bootstrapped.

      +

      This usually happens when you accidentally use both ng-app and angular.bootstrap to bootstrap an +application.

      +
      <html>
      +...
      +  <body ng-app="myApp">
      +    <script>
      +      angular.bootstrap(document.body, ['myApp']);
      +    </script>
      +  </body>
      +</html>
      +
      +

      Note that for bootstrapping purposes, the <html> element is the same as document, so the following +will also throw an error.

      +
      <html>
      +...
      +<script>
      +  angular.bootstrap(document, ['myApp']);
      +</script>
      +</html>
      +
      +

      You can also get this error if you accidentally load AngularJS itself more than once.

      +
      <html ng-app>
      +<head>
      +  <script src="angular.js"></script>
      +
      +  ...
      +
      +</head>
      +<body>
      +
      +  ...
      +
      +  <script src="angular.js"></script>
      +</body>
      +</html>
      +
      + +
      + + diff --git a/1.2.30/docs/partials/error/ng/cpi.html b/1.2.30/docs/partials/error/ng/cpi.html new file mode 100644 index 0000000000..e5dfbcd408 --- /dev/null +++ b/1.2.30/docs/partials/error/ng/cpi.html @@ -0,0 +1,21 @@ + Improve this Doc + + +

      Error: error:cpi +
      Bad Copy
      +

      + +
      +
      Can't copy! Source and destination are identical.
      +
      + +

      Description

      +
      +

      This error occurs when attempting to copy an object to itself. Calling angular.copy with a destination object deletes +all of the elements or properties on destination before copying to it. Copying +an object to itself is not supported. Make sure to check your calls to +angular.copy and avoid copying objects or arrays to themselves.

      + +
      + + diff --git a/1.2.30/docs/partials/error/ng/cpws.html b/1.2.30/docs/partials/error/ng/cpws.html new file mode 100644 index 0000000000..7bdbb80eed --- /dev/null +++ b/1.2.30/docs/partials/error/ng/cpws.html @@ -0,0 +1,22 @@ + Improve this Doc + + +

      Error: error:cpws +
      Copying Window or Scope
      +

      + +
      +
      Can't copy! Making copies of Window or Scope instances is not supported.
      +
      + +

      Description

      +
      +

      Copying Window or Scope instances is not supported because of cyclical and self +references. Avoid copying windows and scopes, as well as any other cyclical or +self-referential structures. Note that trying to deep copy an object containing +cyclical references that is neither a window nor a scope will cause infinite +recursion and a stack overflow.

      + +
      + + diff --git a/1.2.30/docs/partials/error/ngModel.html b/1.2.30/docs/partials/error/ngModel.html new file mode 100644 index 0000000000..9b6f99e08e --- /dev/null +++ b/1.2.30/docs/partials/error/ngModel.html @@ -0,0 +1,27 @@ + Improve this Doc + + +

      ngModel

      + +
      + Here are the list of errors in the ngModel namespace. + +
      + +
      +
      + + + + + + + + + + +
      NameDescription
      nonassignNon-Assignable Expression
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/ngModel/nonassign.html b/1.2.30/docs/partials/error/ngModel/nonassign.html new file mode 100644 index 0000000000..2cf1448b94 --- /dev/null +++ b/1.2.30/docs/partials/error/ngModel/nonassign.html @@ -0,0 +1,31 @@ + Improve this Doc + + +

      Error: error:nonassign +
      Non-Assignable Expression
      +

      + +
      +
      Expression '{0}' is non-assignable. Element: {1}
      +
      + +

      Description

      +
      +

      This error occurs when expression the ngModel directive is bound to is a non-assignable expression.

      +

      Examples using assignable expressions include:

      +
      <input ng-model="namedVariable">
      +<input ng-model="myObj.someProperty">
      +<input ng-model="indexedArray[0]">
      +
      +

      Examples of non-assignable expressions include:

      +
      <input ng-model="foo + bar">
      +<input ng-model="42">
      +<input ng-model="'oops'">
      +<input ng-model="myFunc()">
      +
      +

      Always make sure that the expression bound via ngModel directive can be assigned to.

      +

      For more information, see the ngModel API doc.

      + +
      + + diff --git a/1.2.30/docs/partials/error/ngOptions.html b/1.2.30/docs/partials/error/ngOptions.html new file mode 100644 index 0000000000..b6f86ae2b6 --- /dev/null +++ b/1.2.30/docs/partials/error/ngOptions.html @@ -0,0 +1,27 @@ + Improve this Doc + + +

      ngOptions

      + +
      + Here are the list of errors in the ngOptions namespace. + +
      + +
      +
      + + + + + + + + + + +
      NameDescription
      iexpInvalid Expression
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/ngOptions/iexp.html b/1.2.30/docs/partials/error/ngOptions/iexp.html new file mode 100644 index 0000000000..fa6ab337c3 --- /dev/null +++ b/1.2.30/docs/partials/error/ngOptions/iexp.html @@ -0,0 +1,22 @@ + Improve this Doc + + +

      Error: error:iexp +
      Invalid Expression
      +

      + +
      +
      Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}
      +
      + +

      Description

      +
      +

      This error occurs when 'ngOptions' is passed an expression that isn't in an expected form.

      +

      Here's an example of correct syntax:

      +
      <select ng-model="color" ng-options="c.name for c in colors">
      +
      +

      For more information on valid expression syntax, see 'ngOptions' in select directive docs.

      + +
      + + diff --git a/1.2.30/docs/partials/error/ngPattern.html b/1.2.30/docs/partials/error/ngPattern.html new file mode 100644 index 0000000000..db475dc768 --- /dev/null +++ b/1.2.30/docs/partials/error/ngPattern.html @@ -0,0 +1,27 @@ + Improve this Doc + + +

      ngPattern

      + +
      + Here are the list of errors in the ngPattern namespace. + +
      + +
      +
      + + + + + + + + + + +
      NameDescription
      noregexpExpected Regular Expression
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/ngPattern/noregexp.html b/1.2.30/docs/partials/error/ngPattern/noregexp.html new file mode 100644 index 0000000000..9dc798fae6 --- /dev/null +++ b/1.2.30/docs/partials/error/ngPattern/noregexp.html @@ -0,0 +1,19 @@ + Improve this Doc + + +

      Error: error:noregexp +
      Expected Regular Expression
      +

      + +
      +
      Expected {0} to be a RegExp but was {1}. Element: {2}
      +
      + +

      Description

      +
      +

      This error occurs when 'ngPattern' is passed an expression that isn't a regular expression or doesn't have the expected format.

      +

      For more information on valid expression syntax, see 'ngPattern' in input directive docs.

      + +
      + + diff --git a/1.2.30/docs/partials/error/ngRepeat.html b/1.2.30/docs/partials/error/ngRepeat.html new file mode 100644 index 0000000000..8cd57cd402 --- /dev/null +++ b/1.2.30/docs/partials/error/ngRepeat.html @@ -0,0 +1,35 @@ + Improve this Doc + + +

      ngRepeat

      + +
      + Here are the list of errors in the ngRepeat namespace. + +
      + +
      +
      + + + + + + + + + + + + + + + + + + +
      NameDescription
      dupesDuplicate Key in Repeater
      iexpInvalid Expression
      iidexpInvalid Identifier
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/ngRepeat/dupes.html b/1.2.30/docs/partials/error/ngRepeat/dupes.html new file mode 100644 index 0000000000..9dbf82ef80 --- /dev/null +++ b/1.2.30/docs/partials/error/ngRepeat/dupes.html @@ -0,0 +1,26 @@ + Improve this Doc + + +

      Error: error:dupes +
      Duplicate Key in Repeater
      +

      + +
      +
      Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}
      +
      + +

      Description

      +
      +

      Occurs if there are duplicate keys in an ngRepeat expression. Duplicate keys are banned because AngularJS uses keys to associate DOM nodes with items.

      +

      By default, collections are keyed by reference which is desirable for most common models but can be problematic for primitive types that are interned (share references).

      +

      For example the issue can be triggered by this invalid code:

      +
      <div ng-repeat="value in [4, 4]"></div>
      +
      +

      To resolve this error either ensure that the items in the collection have unique identity or use the track by syntax to specify how to track the association between models and DOM.

      +

      The example above can be resolved by using track by $index, which will cause the items to be keyed by their position in the array instead of their value:

      +
      <div ng-repeat="value in [4, 4] track by $index"></div>
      +
      + +
      + + diff --git a/1.2.30/docs/partials/error/ngRepeat/iexp.html b/1.2.30/docs/partials/error/ngRepeat/iexp.html new file mode 100644 index 0000000000..70a3ea17ff --- /dev/null +++ b/1.2.30/docs/partials/error/ngRepeat/iexp.html @@ -0,0 +1,21 @@ + Improve this Doc + + +

      Error: error:iexp +
      Invalid Expression
      +

      + +
      +
      Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.
      +
      + +

      Description

      +
      +

      Occurs when there is a syntax error in an ngRepeat's expression. The expression should be in the form 'item in collection[ track by id]'.

      +

      Be aware, the ngRepeat directive parses the expression using a regex before sending collection and optionally id to the AngularJS parser. This error comes from the regex parsing.

      +

      To resolve, identify and fix errors in the expression, paying special attention to the 'in' and 'track by' keywords in the expression.

      +

      Please consult the api documentation of ngRepeat to learn more about valid syntax.

      + +
      + + diff --git a/1.2.30/docs/partials/error/ngRepeat/iidexp.html b/1.2.30/docs/partials/error/ngRepeat/iidexp.html new file mode 100644 index 0000000000..909424705b --- /dev/null +++ b/1.2.30/docs/partials/error/ngRepeat/iidexp.html @@ -0,0 +1,29 @@ + Improve this Doc + + +

      Error: error:iidexp +
      Invalid Identifier
      +

      + +
      +
      '_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.
      +
      + +

      Description

      +
      +

      Occurs when there is an error in the identifier part of ngRepeat's expression.

      +

      To resolve, use either a valid identifier or a tuple (key, value) where both key and value are valid identifiers.

      +

      Examples of invalid syntax:

      +
      <div ng-repeat="33 in users"></div>
      +<div ng-repeat="someFn() in users"></div>
      +<div ng-repeat="some user in users"></div>
      +
      +

      Examples of valid syntax:

      +
      <div ng-repeat="user in users"></div>
      +<div ng-repeat="(id, user) in userMap"></div>
      +
      +

      Please consult the api documentation of ngRepeat to learn more about valid syntax.

      + +
      + + diff --git a/1.2.30/docs/partials/error/ngTransclude.html b/1.2.30/docs/partials/error/ngTransclude.html new file mode 100644 index 0000000000..34ae8221f4 --- /dev/null +++ b/1.2.30/docs/partials/error/ngTransclude.html @@ -0,0 +1,27 @@ + Improve this Doc + + +

      ngTransclude

      + +
      + Here are the list of errors in the ngTransclude namespace. + +
      + +
      +
      + + + + + + + + + + +
      NameDescription
      orphanOrphan ngTransclude Directive
      +
      +
      + + diff --git a/1.2.30/docs/partials/error/ngTransclude/orphan.html b/1.2.30/docs/partials/error/ngTransclude/orphan.html new file mode 100644 index 0000000000..fd4755faa5 --- /dev/null +++ b/1.2.30/docs/partials/error/ngTransclude/orphan.html @@ -0,0 +1,21 @@ + Improve this Doc + + +

      Error: error:orphan +
      Orphan ngTransclude Directive
      +

      + +
      +
      Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}
      +
      + +

      Description

      +
      +

      Occurs when an ngTransclude occurs without a transcluded ancestor element.

      +

      This error often occurs when you have forgotten to set transclude: true in some directive definition, and then used ngTransclude in the directive's template.

      +

      To resolve, either remove the offending ngTransclude or check that transclude: true is included in the intended directive definition.

      +

      Consult the API documentation for writing directives to learn more.

      + +
      + + diff --git a/1.2.30/docs/partials/guide.html b/1.2.30/docs/partials/guide.html new file mode 100644 index 0000000000..49b5ce6657 --- /dev/null +++ b/1.2.30/docs/partials/guide.html @@ -0,0 +1,145 @@ + Improve this Doc + + +

      Guide to AngularJS Documentation

      +

      Everything you need to know about AngularJS

      + +

      Tutorials

      + +

      Core Concepts

      +

      Templates

      +

      In Angular applications, you move the job of filling page templates with data from the server to the client. The result is a system better structured for dynamic page updates. Below are the core features you'll use.

      + +

      Application Structure

      + +

      Other AngularJS Features

      + +

      Testing

      + +

      Specific Topics

      + +

      Tools

      + +

      Complementary Libraries

      +

      This is a short list of libraries with specific support and documentation for working with Angular. You can find a full list of all known Angular external libraries at ngmodules.org.

      + +

      Deployment

      +

      General

      + +

      Server-Specific

      + +

      Learning Resources

      +

      Books

      + +

      Videos:

      + +

      Courses

      + +

      Getting Help

      +

      The recipe for getting help on your unique issue is to create an example that could work (even if it doesn't) in a shareable example on Plunker, JSFiddle, or similar site and then post to one of the following:

      + +

      Social Channels

      + +

      Contributing to AngularJS

      +

      Though we have a core group of core contributors at Google, Angular is an open source project with hundreds of contributors. We'd love you to be one of them. When you're ready, please read the Guide for contributing to AngularJS.

      +

      Final Bits

      +

      Didn't find what you're looking for here? Check out AngularJS-Learning for an even more comprehensive list of links to videos, tutorials, and blog posts.

      +

      If you have awesome AngularJS resources that belong on this page, please tell us about them on Google+ or Twitter.

      + + diff --git a/1.2.30/docs/partials/guide/$location.html b/1.2.30/docs/partials/guide/$location.html new file mode 100644 index 0000000000..bf4152b45d --- /dev/null +++ b/1.2.30/docs/partials/guide/$location.html @@ -0,0 +1,588 @@ + Improve this Doc + + +

      What does it do?

      +

      The $location service parses the URL in the browser address bar (based on the window.location) and makes the URL available to +your application. Changes to the URL in the address bar are reflected into $location service and +changes to $location are reflected into the browser address bar.

      +

      The $location service:

      +
        +
      • Exposes the current URL in the browser address bar, so you can
          +
        • Watch and observe the URL.
        • +
        • Change the URL.
        • +
        +
      • +
      • Maintains synchronization between itself and the browser's URL when the user
          +
        • Changes the address in the browser's address bar.
        • +
        • Clicks the back or forward button in the browser (or clicks a History link).
        • +
        • Clicks on a link in the page.
        • +
        +
      • +
      • Represents the URL object as a set of methods (protocol, host, port, path, search, hash).
      • +
      +

      Comparing $location to window.location

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      window.location$location service
      purposeallow read/write access to the current browser locationsame
      APIexposes "raw" object with properties that can be directly modifiedexposes jQuery-style getters and setters
      integration with angular application life-cyclenoneknows about all internal life-cycle phases, integrates with $watch, ...
      seamless integration with HTML5 APInoyes (with a fallback for legacy browsers)
      aware of docroot/context from which the application is loadedno - window.location.pathname returns "/docroot/actual/path"yes - $location.path() returns "/actual/path"
      + +

      When should I use $location?

      +

      Any time your application needs to react to a change in the current URL or if you want to change +the current URL in the browser.

      +

      What does it not do?

      +

      It does not cause a full page reload when the browser URL is changed. To reload the page after +changing the URL, use the lower-level API, $window.location.href.

      +

      General overview of the API

      +

      The $location service can behave differently, depending on the configuration that was provided to +it when it was instantiated. The default configuration is suitable for many applications, for +others customizing the configuration can enable new features.

      +

      Once the $location service is instantiated, you can interact with it via jQuery-style getter and +setter methods that allow you to get or change the current URL in the browser.

      +

      $location service configuration

      +

      To configure the $location service, retrieve the +$locationProvider and set the parameters as follows:

      +
        +
      • html5Mode(mode): {boolean}
        +true - see HTML5 mode
        +false - see Hashbang mode
        +default: false

        +
      • +
      • hashPrefix(prefix): {string}
        +prefix used for Hashbang URLs (used in Hashbang mode or in legacy browser in Html5 mode)
        +default: ""

        +
      • +
      +

      Example configuration

      +
      $locationProvider.html5Mode(true).hashPrefix('!');
      +
      +

      Getter and setter methods

      +

      $location service provides getter methods for read-only parts of the URL (absUrl, protocol, host, +port) and getter / setter methods for url, path, search, hash:

      +
      // get the current path
      +$location.path();
      +
      +// change the path
      +$location.path('/newValue')
      +
      +

      All of the setter methods return the same $location object to allow chaining. For example, to +change multiple segments in one go, chain setters like this:

      +
      $location.path('/newValue').search({key: value});
      +
      +

      Replace method

      +

      There is a special replace method which can be used to tell the $location service that the next +time the $location service is synced with the browser, the last history record should be replaced +instead of creating a new one. This is useful when you want to implement redirection, which would +otherwise break the back button (navigating back would retrigger the redirection). To change the +current URL without creating a new browser history record you can call:

      +
      $location.path('/someNewPath');
      +$location.replace();
      +// or you can chain these as: $location.path('/someNewPath').replace();
      +
      +

      Note that the setters don't update window.location immediately. Instead, the $location service is +aware of the scope life-cycle and coalesces multiple $location +mutations into one "commit" to the window.location object during the scope $digest phase. Since +multiple changes to the $location's state will be pushed to the browser as a single change, it's +enough to call the replace() method just once to make the entire "commit" a replace operation +rather than an addition to the browser history. Once the browser is updated, the $location service +resets the flag set by replace() method and future mutations will create new history records, +unless replace() is called again.

      +

      Setters and character encoding

      +

      You can pass special characters to $location service and it will encode them according to rules +specified in RFC 3986. When you access the methods:

      +
        +
      • All values that are passed to $location setter methods, path(), search(), hash(), are +encoded.
      • +
      • Getters (calls to methods without parameters) return decoded values for the following methods +path(), search(), hash().
      • +
      • When you call the absUrl() method, the returned value is a full url with its segments encoded.
      • +
      • When you call the url() method, the returned value is path, search and hash, in the form +/path?search=a&b=c#hash. The segments are encoded as well.
      • +
      +

      Hashbang and HTML5 Modes

      +

      $location service has two configuration modes which control the format of the URL in the browser +address bar: Hashbang mode (the default) and the HTML5 mode which is based on using the +HTML5 History API. Applications use the same API in +both modes and the $location service will work with appropriate URL segments and browser APIs to +facilitate the browser URL change and history management.

      +

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Hashbang modeHTML5 mode
      configurationthe default{ html5Mode: true }
      URL formathashbang URLs in all browsersregular URLs in modern browser, hashbang URLs in old browser
      <a href=""> link rewritingnoyes
      requires server-side configurationnoyes
      + +

      Hashbang mode (default mode)

      +

      In this mode, $location uses Hashbang URLs in all browsers. +Angular also does not intercept and rewrite links in this mode. I.e. links work +as expected and also perform full page reloads when other parts of the url +than the hash fragment was changed.

      +

      Example

      +
      it('should show example', inject(
      +function($locationProvider) {
      +  $locationProvider.html5Mode(false);
      +  $locationProvider.hashPrefix('!');
      +},
      +function($location) {
      +  // open http://example.com/base/index.html#!/a
      +  $location.absUrl() == 'http://example.com/base/index.html#!/a'
      +  $location.path() == '/a'
      +
      +  $location.path('/foo')
      +  $location.absUrl() == 'http://example.com/base/index.html#!/foo'
      +
      +  $location.search() == {}
      +  $location.search({a: 'b', c: true});
      +  $location.absUrl() == 'http://example.com/base/index.html#!/foo?a=b&c'
      +
      +  $location.path('/new').search('x=y');
      +  $location.absUrl() == 'http://example.com/base/index.html#!/new?x=y'
      +}
      +));
      +
      +

      HTML5 mode

      +

      In HTML5 mode, the $location service getters and setters interact with the browser URL address +through the HTML5 history API. This allows for use of regular URL path and search segments, +instead of their hashbang equivalents. If the HTML5 History API is not supported by a browser, the +$location service will fall back to using the hashbang URLs automatically. This frees you from +having to worry about whether the browser displaying your app supports the history API or not; the +$location service transparently uses the best available option.

      +
        +
      • Opening a regular URL in a legacy browser -> redirects to a hashbang URL
      • +
      • Opening hashbang URL in a modern browser -> rewrites to a regular URL
      • +
      +

      Note that in this mode, Angular intercepts all links (subject to the "Html link rewriting" rules below) +and updates the url in a way that never performs a full page reload.

      +

      Example

      +
      it('should show example', inject(
      +function($locationProvider) {
      +  $locationProvider.html5Mode(true);
      +  $locationProvider.hashPrefix('!');
      +},
      +function($location) {
      +  // in browser with HTML5 history support:
      +  // open http://example.com/#!/a -> rewrite to http://example.com/a
      +  // (replacing the http://example.com/#!/a history record)
      +  $location.path() == '/a'
      +
      +  $location.path('/foo');
      +  $location.absUrl() == 'http://example.com/foo'
      +
      +  $location.search() == {}
      +  $location.search({a: 'b', c: true});
      +  $location.absUrl() == 'http://example.com/foo?a=b&c'
      +
      +  $location.path('/new').search('x=y');
      +  $location.url() == 'new?x=y'
      +  $location.absUrl() == 'http://example.com/new?x=y'
      +
      +  // in browser without html5 history support:
      +  // open http://example.com/new?x=y -> redirect to http://example.com/#!/new?x=y
      +  // (again replacing the http://example.com/new?x=y history item)
      +  $location.path() == '/new'
      +  $location.search() == {x: 'y'}
      +
      +  $location.path('/foo/bar');
      +  $location.path() == '/foo/bar'
      +  $location.url() == '/foo/bar?x=y'
      +  $location.absUrl() == 'http://example.com/#!/foo/bar?x=y'
      +}
      +));
      +
      +

      Fallback for legacy browsers

      +

      For browsers that support the HTML5 history API, $location uses the HTML5 history API to write +path and search. If the history API is not supported by a browser, $location supplies a Hasbang +URL. This frees you from having to worry about whether the browser viewing your app supports the +history API or not; the $location service makes this transparent to you.

      + +

      When you use HTML5 history API mode, you will not need special hashbang links. All you have to do +is specify regular URL links, such as: <a href="/some?foo=bar">link</a>

      +

      When a user clicks on this link,

      +
        +
      • In a legacy browser, the URL changes to /index.html#!/some?foo=bar
      • +
      • In a modern browser, the URL changes to /some?foo=bar
      • +
      +

      In cases like the following, links are not rewritten; instead, the browser will perform a full page +reload to the original link.

      +
        +
      • Links that contain target element
        +Example: <a href="/ext/link?a=b" target="_self">link</a>
      • +
      • Absolute links that go to a different domain
        +Example: <a href="http://angularjs.org/">link</a>
      • +
      • Links starting with '/' that lead to a different base path
        +Example: <a href="/not-my-base/link">link</a>
      • +
      +

      Server side

      +

      Using this mode requires URL rewriting on server side, basically you have to rewrite all your links +to entry point of your application (e.g. index.html)

      + +

      Be sure to check all relative links, images, scripts etc. You must either specify the url base in +the head of your main html file (<base href="/my-base">) or you must use absolute urls +(starting with /) everywhere because relative urls will be resolved to absolute urls using the +initial absolute url of the document, which is often different from the root of the application.

      +

      Running Angular apps with the History API enabled from document root is strongly encouraged as it +takes care of all relative link issues.

      + +

      Because of rewriting capability in HTML5 mode, your users will be able to open regular url links in +legacy browsers and hashbang links in modern browser:

      +
        +
      • Modern browser will rewrite hashbang URLs to regular URLs.
      • +
      • Older browsers will redirect regular URLs to hashbang URLs.
      • +
      +

      Example

      +

      Here you can see two $location instances, both in Html5 mode, but on different browsers, so +that you can see the differences. These $location services are connected to a fake browsers. Each +input represents the address bar of the browser.

      +

      Note that when you type hashbang url into first browser (or vice versa) it doesn't rewrite / +redirect to regular / hashbang url, as this conversion happens only during parsing the initial URL += on page reload.

      +

      In these examples we use <base href="/base/index.html" />

      +

      Browser in HTML5 mode

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="LocationController">
        <div ng-address-bar></div><br><br>
        <div>
          $location.protocol() = <span ng-bind="$location.protocol()"></span> <br>
          $location.host() = <span ng-bind="$location.host()"></span> <br>
          $location.port() = <span ng-bind="$location.port()"></span> <br>
          $location.path() = <span ng-bind="$location.path()"></span> <br>
          $location.search() = <span ng-bind="$location.search()"></span> <br>
          $location.hash() = <span ng-bind="$location.hash()"></span> <br>
        </div>
        <div id="navigation">
          <a href="http://www.example.com/base/first?a=b">/base/first?a=b</a> |
          <a href="http://www.example.com/base/sec/ond?flag#hash">sec/ond?flag#hash</a> |
          <a href="/other-base/another?search">external</a>
        </div>
      </div>
      +
      + +
      +
      angular.module('html5-mode', ['fake-browser', 'address-bar'])
      
      .constant('initUrl', 'http://www.example.com/base/path?a=b#h')
      .constant('baseHref', '/base/index.html')
      .value('$sniffer', { history: true })
      
      .controller("LocationController", function($scope, $location) {
        $scope.$location = {};
        angular.forEach("protocol host port path search hash".split(" "), function(method){
         $scope.$location[method] = function(){
           var result = $location[method].call($location);
           return angular.isObject(result) ? angular.toJson(result) : result;
         };
        });
      })
      
      .config(function($locationProvider) {
        $locationProvider.html5Mode(true).hashPrefix('!');
      })
      
      .run(function($rootElement) {
        $rootElement.on('click', function(e) { e.stopPropagation(); });
      });
      +
      + +
      +
      angular.module('fake-browser', [])
      
      .config(function($provide) {
       $provide.decorator('$browser', function($delegate, baseHref, initUrl) {
      
        $delegate.onUrlChange = function(fn) {
           this.urlChange = fn;
         };
      
        $delegate.url = function() {
           return initUrl;
        };
      
        $delegate.defer = function(fn, delay) {
           setTimeout(function() { fn(); }, delay || 0);
         };
      
        $delegate.baseHref = function() {
           return baseHref;
         };
      
         return $delegate;
       });
      });
      +
      + +
      +
      angular.module('address-bar', [])
      .directive('ngAddressBar', function($browser, $timeout) {
         return {
           template: 'Address: <input id="addressBar" type="text" style="width: 400px" >',
           link: function(scope, element, attrs){
             var input = element.children("input"), delay;
      
             input.on('keypress keyup keydown', function(event) {
                     delay = (!delay ? $timeout(fireUrlChange, 250) : null);
                     event.stopPropagation();
                   })
                  .val($browser.url());
      
             $browser.url = function(url) {
               return url ? input.val(url) : input.val();
             };
      
             function fireUrlChange() {
               delay = null;
               $browser.urlChange(input.val());
             }
           }
         };
       });
      +
      + +
      +
      var addressBar = element(by.css("#addressBar")),
          url = 'http://www.example.com/base/path?a=b#h';
      
      
      it("should show fake browser info on load", function(){
        expect(addressBar.getAttribute('value')).toBe(url);
      
        expect(element(by.binding('$location.protocol')).getText()).toBe('http');
        expect(element(by.binding('$location.host')).getText()).toBe('www.example.com');
        expect(element(by.binding('$location.port')).getText()).toBe('80');
        expect(element(by.binding('$location.path')).getText()).toBe('/path');
        expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}');
        expect(element(by.binding('$location.hash')).getText()).toBe('h');
      
      });
      
      it("should change $location accordingly", function(){
        var navigation = element.all(by.css("#navigation a"));
      
        navigation.get(0).click();
      
        expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/first?a=b");
      
        expect(element(by.binding('$location.protocol')).getText()).toBe('http');
        expect(element(by.binding('$location.host')).getText()).toBe('www.example.com');
        expect(element(by.binding('$location.port')).getText()).toBe('80');
        expect(element(by.binding('$location.path')).getText()).toBe('/first');
        expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}');
        expect(element(by.binding('$location.hash')).getText()).toBe('');
      
      
        navigation.get(1).click();
      
        expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/sec/ond?flag#hash");
      
        expect(element(by.binding('$location.protocol')).getText()).toBe('http');
        expect(element(by.binding('$location.host')).getText()).toBe('www.example.com');
        expect(element(by.binding('$location.port')).getText()).toBe('80');
        expect(element(by.binding('$location.path')).getText()).toBe('/sec/ond');
        expect(element(by.binding('$location.search')).getText()).toBe('{"flag":true}');
        expect(element(by.binding('$location.hash')).getText()).toBe('hash');
      });
      +
      + + + +
      +
      + + +

      +

      Browser in HTML5 Fallback mode (Hashbang mode)

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="LocationController">
        <div ng-address-bar></div><br><br>
        <div>
          $location.protocol() = <span ng-bind="$location.protocol()"></span> <br>
          $location.host() = <span ng-bind="$location.host()"></span> <br>
          $location.port() = <span ng-bind="$location.port()"></span> <br>
          $location.path() = <span ng-bind="$location.path()"></span> <br>
          $location.search() = <span ng-bind="$location.search()"></span> <br>
          $location.hash() = <span ng-bind="$location.hash()"></span> <br>
        </div>
        <div id="navigation">
          <a href="http://www.example.com/base/first?a=b">/base/first?a=b</a> |
          <a href="http://www.example.com/base/sec/ond?flag#hash">sec/ond?flag#hash</a> |
          <a href="/other-base/another?search">external</a>
        </div>
      </div>
      +
      + +
      +
      angular.module('hashbang-mode', ['fake-browser', 'address-bar'])
      
      .constant('initUrl', 'http://www.example.com/base/index.html#!/path?a=b#h')
      .constant('baseHref', '/base/index.html')
      .value('$sniffer', { history: false })
      
      .config(function($locationProvider) {
        $locationProvider.html5Mode(true).hashPrefix('!');
      })
      
      .controller("LocationController", function($scope, $location) {
        $scope.$location = {};
        angular.forEach("protocol host port path search hash".split(" "), function(method){
          $scope.$location[method] = function(){
            var result = $location[method].call($location);
            return angular.isObject(result) ? angular.toJson(result) : result;
          };
        });
      })
      
      .run(function($rootElement) {
        $rootElement.on('click', function(e) {
          e.stopPropagation();
        });
      });
      +
      + +
      +
      angular.module('fake-browser', [])
      
      .config(function($provide) {
       $provide.decorator('$browser', function($delegate, baseHref, initUrl) {
      
        $delegate.onUrlChange = function(fn) {
           this.urlChange = fn;
         };
      
        $delegate.url = function() {
           return initUrl;
        };
      
        $delegate.defer = function(fn, delay) {
           setTimeout(function() { fn(); }, delay || 0);
         };
      
        $delegate.baseHref = function() {
           return baseHref;
         };
      
         return $delegate;
       });
      });
      +
      + +
      +
      angular.module('address-bar', [])
      .directive('ngAddressBar', function($browser, $timeout) {
         return {
           template: 'Address: <input id="addressBar" type="text" style="width: 400px" >',
           link: function(scope, element, attrs){
             var input = element.children("input"), delay;
      
             input.on('keypress keyup keydown', function(event) {
                     delay = (!delay ? $timeout(fireUrlChange, 250) : null);
                     event.stopPropagation();
                   })
                  .val($browser.url());
      
             $browser.url = function(url) {
               return url ? input.val(url) : input.val();
             };
      
             function fireUrlChange() {
               delay = null;
               $browser.urlChange(input.val());
             }
           }
         };
       });
      +
      + +
      +
      var addressBar = element(by.css("#addressBar")),
           url = 'http://www.example.com/base/index.html#!/path?a=b#h';
      
      it("should show fake browser info on load", function(){
        expect(addressBar.getAttribute('value')).toBe(url);
      
        expect(element(by.binding('$location.protocol')).getText()).toBe('http');
        expect(element(by.binding('$location.host')).getText()).toBe('www.example.com');
        expect(element(by.binding('$location.port')).getText()).toBe('80');
        expect(element(by.binding('$location.path')).getText()).toBe('/path');
        expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}');
        expect(element(by.binding('$location.hash')).getText()).toBe('h');
      
      });
      
      it("should change $location accordingly", function(){
        var navigation = element.all(by.css("#navigation a"));
      
        navigation.get(0).click();
      
        expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/index.html#!/first?a=b");
      
        expect(element(by.binding('$location.protocol')).getText()).toBe('http');
        expect(element(by.binding('$location.host')).getText()).toBe('www.example.com');
        expect(element(by.binding('$location.port')).getText()).toBe('80');
        expect(element(by.binding('$location.path')).getText()).toBe('/first');
        expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}');
        expect(element(by.binding('$location.hash')).getText()).toBe('');
      
      
        navigation.get(1).click();
      
        expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/index.html#!/sec/ond?flag#hash");
      
        expect(element(by.binding('$location.protocol')).getText()).toBe('http');
        expect(element(by.binding('$location.host')).getText()).toBe('www.example.com');
        expect(element(by.binding('$location.port')).getText()).toBe('80');
        expect(element(by.binding('$location.path')).getText()).toBe('/sec/ond');
        expect(element(by.binding('$location.search')).getText()).toBe('{"flag":true}');
        expect(element(by.binding('$location.hash')).getText()).toBe('hash');
      
      });
      +
      + + + +
      +
      + + +

      +

      Caveats

      +

      Page reload navigation

      +

      The $location service allows you to change only the URL; it does not allow you to reload the +page. When you need to change the URL and reload the page or navigate to a different page, please +use a lower level API, $window.location.href.

      +

      Using $location outside of the scope life-cycle

      +

      $location knows about Angular's scope life-cycle. When a URL changes in +the browser it updates the $location and calls $apply so that all +$watchers / +$observers are notified. +When you change the $location inside the $digest phase everything is ok; $location will +propagate this change into browser and will notify all the $watchers / +$observers. +When you want to change the $location from outside Angular (for example, through a DOM Event or +during testing) - you must call $apply to propagate the changes.

      +

      $location.path() and ! or / prefixes

      +

      A path should always begin with forward slash (/); the $location.path() setter will add the +forward slash if it is missing.

      +

      Note that the ! prefix in the hashbang mode is not part of $location.path(); it is actually +hashPrefix.

      +

      Crawling your app

      +

      To allow indexing of your AJAX application, you have to add special meta tag in the head section of +your document:

      +
      <meta name="fragment" content="!" />
      +
      +

      This will cause crawler bot to request links with _escaped_fragment_ param so that your server +can recognize the crawler and serve a HTML snapshots. For more information about this technique, +see Making AJAX Applications +Crawlable.

      +

      Testing with the $location service

      +

      When using $location service during testing, you are outside of the angular's scope life-cycle. This means it's your responsibility to call scope.$apply().

      +
      describe('serviceUnderTest', function() {
      +beforeEach(module(function($provide) {
      +  $provide.factory('serviceUnderTest', function($location){
      +    // whatever it does...
      +  });
      +});
      +
      +it('should...', inject(function($location, $rootScope, serviceUnderTest) {
      +  $location.path('/new/path');
      +  $rootScope.$apply();
      +
      +  // test whatever the service should do...
      +
      +}));
      +});
      +
      +

      Migrating from earlier AngularJS releases

      +

      In earlier releases of Angular, $location used hashPath or hashSearch to process path and +search methods. With this release, the $location service processes path and search methods and +then uses the information it obtains to compose hashbang URLs (such as +http://server.com/#!/path?search=a), when necessary.

      +

      Changes to your code

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Navigation inside the appChange to
      $location.href = value
      $location.hash = value
      $location.update(value)
      $location.updateHash(value)
      $location.path(path).search(search)
      $location.hashPath = path$location.path(path)
      $location.hashSearch = search$location.search(search)
      Navigation outside the appUse lower level API
      $location.href = value
      $location.update(value)
      $window.location.href = value
      $location[protocol | host | port | path | search]$window.location[protocol | host | port | path | search]
      Read accessChange to
      $location.hashPath$location.path()
      $location.hashSearch$location.search()
      $location.href
      $location.protocol
      $location.host
      $location.port
      $location.hash
      $location.absUrl()
      $location.protocol()
      $location.host()
      $location.port()
      $location.path() + $location.search()
      $location.path
      $location.search
      $window.location.path
      $window.location.search
      + +

      Two-way binding to $location

      +

      The Angular's compiler currently does not support two-way binding for methods (see issue). If you should require two-way binding +to the $location object (using ngModel directive on an input +field), you will need to specify an extra model property (e.g. locationPath) with two $watchers +which push $location updates in both directions. For example: + + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="LocationController">
      <input type="text" ng-model="locationPath" />
      </div>
      +
      + +
      +
      angular.module('locationExample', [])
      .controller('LocationController', ['$scope', '$location', function ($scope, $location) {
        $scope.$watch('locationPath', function(path) {
          $location.path(path);
        });
        $scope.$watch(function() {
          return $location.path();
        }, function(path) {
          $scope.locationPath = path;
        });
      }]);
      +
      + + + +
      +
      + + +

      +

      Related API

      + + + diff --git a/1.2.30/docs/partials/guide/animations.html b/1.2.30/docs/partials/guide/animations.html new file mode 100644 index 0000000000..6a9e14b34a --- /dev/null +++ b/1.2.30/docs/partials/guide/animations.html @@ -0,0 +1,313 @@ + Improve this Doc + + +

      Animations

      +

      AngularJS 1.2 provides animation hooks for common directives such as ngRepeat, ngSwitch, and ngView, as well as custom directives +via the $animate service. These animation hooks are set in place to trigger animations during the life cycle of various directives and when +triggered, will attempt to perform a CSS Transition, CSS Keyframe Animation or a JavaScript callback Animation (depending on if an animation is +placed on the given directive). Animations can be placed using vanilla CSS by following the naming conventions set in place by AngularJS +or with JavaScript code when it's defined as a factory.

      +

      Animations are not available unless you include the ngAnimate module as a dependency within your application.

      +

      Below is a quick example of animations being enabled for ngShow and ngHide:

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-init="checked=true">
        <label>
          <input type="checkbox" ng-model="checked" style="float:left; margin-right:10px;"> Is Visible...
        </label>
        <div class="check-element sample-show-hide" ng-show="checked" style="clear:both;">
          Visible...
        </div>
      </div>
      +
      + +
      +
      .sample-show-hide {
        padding:10px;
        border:1px solid black;
        background:white;
      }
      
      .sample-show-hide.ng-hide-add, .sample-show-hide.ng-hide-remove {
        -webkit-transition:all linear 0.5s;
        -moz-transition:all linear 0.5s;
        -o-transition:all linear 0.5s;
        transition:all linear 0.5s;
        display:block!important;
      }
      
      .sample-show-hide.ng-hide-add.ng-hide-add-active,
      .sample-show-hide.ng-hide-remove {
        opacity:0;
      }
      
      .sample-show-hide.ng-hide-add,
      .sample-show-hide.ng-hide-remove.ng-hide-remove-active {
        opacity:1;
      }
      +
      + + + +
      +
      + + +

      +

      Installation

      +

      See the API docs for ngAnimate for instructions on installing the module.

      +

      You may also want to setup a separate CSS file for defining CSS-based animations.

      +

      How they work

      +

      Animations in AngularJS are completely based on CSS classes. As long as you have a CSS class attached to a HTML element within +your website, you can apply animations to it. Lets say for example that we have an HTML template with a repeater in it like so:

      +
      <div ng-repeat="item in items" class="repeated-item">
      +{{ item.id }}
      +</div>
      +
      +

      As you can see, the .repeated-item class is present on the element that will be repeated and this class will be +used as a reference within our application's CSS and/or JavaScript animation code to tell AngularJS to perform an animation.

      +

      As ngRepeat does its thing, each time a new item is added into the list, ngRepeat will add +a ng-enter class name to the element that is being added. When removed it will apply a ng-leave class name and when moved around +it will apply a ng-move class name.

      +

      Taking a look at the following CSS code, we can see some transition and keyframe animation code set for each of those events that +occur when ngRepeat triggers them:

      +
      /*
      + We're using CSS transitions for when
      + the enter and move events are triggered
      + for the element that has the .repeated-item
      + class
      +*/
      +.repeated-item.ng-enter, .repeated-item.ng-move {
      + -webkit-transition:0.5s linear all;
      + -moz-transition:0.5s linear all;
      + -o-transition:0.5s linear all;
      + transition:0.5s linear all;
      + opacity:0;
      +}
      +
      +/*
      +The ng-enter-active and ng-move-active
      +are where the transition destination properties
      +are set so that the animation knows what to
      +animate.
      +*/
      +.repeated-item.ng-enter.ng-enter-active,
      +.repeated-item.ng-move.ng-move-active {
      + opacity:1;
      +}
      +
      +/*
      + We're using CSS keyframe animations for when
      + the leave event is triggered for the element
      + that has the .repeated-item class
      +*/
      +.repeated-item.ng-leave {
      + -webkit-animation:0.5s my_animation;
      + -moz-animation:0.5s my_animation;
      + -o-animation:0.5s my_animation;
      + animation:0.5s my_animation;
      +}
      +
      +@keyframes my_animation {
      + from { opacity:1; }
      + to { opacity:0; }
      +}
      +
      +/*
      + Unfortunately each browser vendor requires
      + its own definition of keyframe animation code...
      +*/
      +@-webkit-keyframes my_animation {
      + from { opacity:1; }
      + to { opacity:0; }
      +}
      +
      +@-moz-keyframes my_animation {
      + from { opacity:1; }
      + to { opacity:0; }
      +}
      +
      +@-o-keyframes my_animation {
      + from { opacity:1; }
      + to { opacity:0; }
      +}
      +
      +

      The same approach to animation can be used using JavaScript code (jQuery is used within to perform animations):

      +
      myModule.animation('.repeated-item', function() {
      +return {
      +  enter : function(element, done) {
      +    element.css('opacity',0);
      +    jQuery(element).animate({
      +      opacity: 1
      +    }, done);
      +
      +    // optional onDone or onCancel callback
      +    // function to handle any post-animation
      +    // cleanup operations
      +    return function(isCancelled) {
      +      if(isCancelled) {
      +        jQuery(element).stop();
      +      }
      +    }
      +  },
      +  leave : function(element, done) {
      +    element.css('opacity', 1);
      +    jQuery(element).animate({
      +      opacity: 0
      +    }, done);
      +
      +    // optional onDone or onCancel callback
      +    // function to handle any post-animation
      +    // cleanup operations
      +    return function(isCancelled) {
      +      if(isCancelled) {
      +        jQuery(element).stop();
      +      }
      +    }
      +  },
      +  move : function(element, done) {
      +    element.css('opacity', 0);
      +    jQuery(element).animate({
      +      opacity: 1
      +    }, done);
      +
      +    // optional onDone or onCancel callback
      +    // function to handle any post-animation
      +    // cleanup operations
      +    return function(isCancelled) {
      +      if(isCancelled) {
      +        jQuery(element).stop();
      +      }
      +    }
      +  },
      +
      +  // you can also capture these animation events
      +  addClass : function(element, className, done) {},
      +  removeClass : function(element, className, done) {}
      +}
      +});
      +
      +

      With these generated CSS class names present on the element at the time, AngularJS automatically +figures out whether to perform a CSS and/or JavaScript animation. If both CSS and JavaScript animation +code is present, and match the CSS class name on the element, then AngularJS will run both animations at the same time.

      +

      Class and ngClass animation hooks

      +

      AngularJS also pays attention to CSS class changes on elements by triggering the add and remove hooks. +This means that if a CSS class is added to or removed from an element then an animation can be executed in between +before the CSS class addition or removal is finalized. (Keep in mind that AngularJS will only be +able to capture class changes if an expression or the ng-class directive is used on the element.)

      +

      The example below shows how to perform animations during class changes:

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <p>
        <input type="button" value="set" ng-click="myCssVar='css-class'">
        <input type="button" value="clear" ng-click="myCssVar=''">
        <br>
        <span ng-class="myCssVar">CSS-Animated Text</span>
      </p>
      +
      + +
      +
      .css-class-add, .css-class-remove {
        -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
        -moz-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
        -o-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
        transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
      }
      
      .css-class,
      .css-class-add.css-class-add-active {
        color: red;
        font-size:3em;
      }
      
      .css-class-remove.css-class-remove-active {
        font-size:1.0em;
        color:black;
      }
      +
      + + + +
      +
      + + +

      +

      Although the CSS is a little different then what we saw before, the idea is the same.

      +

      Which directives support animations?

      +

      A handful of common AngularJS directives support and trigger animation hooks whenever any major event occurs during its life cycle. +The table below explains in detail which animation events are triggered

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      -DirectiveSupported Animations
      -ngRepeatenter, leave and move
      -ngViewenter and leave
      -ngIncludeenter and leave
      -ngSwitchenter and leave
      -ngIfenter and leave
      -ngClassadd and remove
      -ngShow & ngHideadd and remove (the ng-hide class value)
      -formadd and remove (dirty, pristine, valid, invalid & all other validations)
      -ngModeladd and remove (dirty, pristine, valid, invalid & all other validations)
      +

      For a full breakdown of the steps involved during each animation event, refer to the API docs.

      +

      How do I use animations in my own directives?

      +

      Animations within custom directives can also be established by injecting $animate directly into your directive and +making calls to it when needed.

      +
      myModule.directive('my-directive', ['$animate', function($animate) {
      +return function(element, scope, attrs) {
      +  element.bind('click', function() {
      +    if(element.hasClass('clicked')) {
      +      $animate.removeClass(element, 'clicked');
      +    } else {
      +      $animate.addClass(element, 'clicked');
      +    }
      +  });
      +};
      +}]);
      +
      +

      More about animations

      +

      For a full breakdown of each method available on $animate, see the API documentation.

      +

      To see a complete demo, see the animation step within the AngularJS phonecat tutorial.

      + + diff --git a/1.2.30/docs/partials/guide/bootstrap.html b/1.2.30/docs/partials/guide/bootstrap.html new file mode 100644 index 0000000000..e0ff6f84e7 --- /dev/null +++ b/1.2.30/docs/partials/guide/bootstrap.html @@ -0,0 +1,122 @@ + Improve this Doc + + +

      Bootstrap

      +

      This page explains the Angular initialization process and how you can manually initialize Angular +if necessary.

      +

      Angular <script> Tag

      +

      This example shows the recommended path for integrating Angular with what we call automatic +initialization.

      +
      <!doctype html>
      +<html xmlns:ng="http://angularjs.org" ng-app>
      +  <body>
      +    ...
      +    <script src="angular.js"></script>
      +  </body>
      +</html>
      +
      +
        +
      1. Place the script tag at the bottom of the page. Placing script tags at the end of the page +improves app load time because the HTML loading is not blocked by loading of the angular.js +script. You can get the latest bits from http://code.angularjs.org. Please don't link +your production code to this URL, as it will expose a security hole on your site. For +experimental development linking to our site is fine.
          +
        • Choose: angular-[version].js for a human-readable file, suitable for development and +debugging.
        • +
        • Choose: angular-[version].min.js for a compressed and obfuscated file, suitable for use in +production.
        • +
        +
      2. +
      3. Place ng-app to the root of your application, typically on the <html> tag if you want +angular to auto-bootstrap your application.

        + +
      4. +
      5. If you require IE7 support add id="ng-app"

        + +
      6. +
      7. If you choose to use the old style directive syntax ng: then include xml-namespace in html +to make IE happy. (This is here for historical reasons, and we no longer recommend use of +ng:.)

        + + + + +
      8. +
      +

      Automatic Initialization

      +

      +

      Angular initializes automatically upon DOMContentLoaded event or when the angular.js script is +evaluated if at that time document.readyState is set to 'complete'. At this point Angular looks +for the ng-app directive which designates your application root. +If the ng-app directive is found then Angular will:

      +
        +
      • load the module associated with the directive.
      • +
      • create the application injector
      • +
      • compile the DOM treating the ng-app directive as the root of the compilation. This allows you to tell it to treat only a +portion of the DOM as an Angular application.
      • +
      +
      <!doctype html>
      +<html ng-app="optionalModuleName">
      +  <body>
      +    I can add: {{ 1+2 }}.
      +    <script src="angular.js"></script>
      +  </body>
      +</html>
      +
      +

      Manual Initialization

      +

      If you need to have more control over the initialization process, you can use a manual +bootstrapping method instead. Examples of when you'd need to do this include using script loaders +or the need to perform an operation before Angular compiles a page.

      +

      Here is an example of manually initializing Angular:

      +
      <!doctype html>
      +<html>
      +<body>
      +  <div ng-controller="MyController">
      +    Hello {{greetMe}}!
      +  </div>
      +  <script src="http://code.angularjs.org/snapshot/angular.js"></script>
      +
      +  <script>
      +    angular.module('myApp', [])
      +      .controller('MyController', ['$scope', function ($scope) {
      +        $scope.greetMe = 'World';
      +      }]);
      +
      +    angular.element(document).ready(function() {
      +      angular.bootstrap(document, ['myApp']);
      +    });
      +  </script>
      +</body>
      +</html>
      +
      +

      Note that we provided the name of our application module to be loaded into the injector as the second +parameter of the angular.bootstrap function. Notice that angular.bootstrap will not create modules +on the fly. You must create any custom modules before you pass them as a parameter.

      +

      You should call angular.bootstrap() after you've loaded or defined your modules. +You cannot add controllers, services, directives, etc after an application bootstraps.

      +
      +Note: You should not use the ng-app directive when manually bootstrapping your app. +
      + +

      This is the sequence that your code should follow:

      +
        +
      1. After the page and all of the code is loaded, find the root element of your AngularJS +application, which is typically the root of the document.

        +
      2. +
      3. Call angular.bootstrap to compile the element into an +executable, bi-directionally bound application.

        +
      4. +
      +

      Deferred Bootstrap

      +

      This feature enables tools like Batarang and test runners to +hook into angular's bootstrap process and sneak in more modules +into the DI registry which can replace or augment DI services for +the purpose of instrumentation or mocking out heavy dependencies.

      +

      If window.name contains prefix NG_DEFER_BOOTSTRAP! when +angular.bootstrap is called, the bootstrap process will be paused +until angular.resumeBootstrap() is called.

      +

      angular.resumeBootstrap() takes an optional array of modules that +should be added to the original list of modules that the app was +about to be bootstrapped with.

      + + diff --git a/1.2.30/docs/partials/guide/compiler.html b/1.2.30/docs/partials/guide/compiler.html new file mode 100644 index 0000000000..2f803e9a5b --- /dev/null +++ b/1.2.30/docs/partials/guide/compiler.html @@ -0,0 +1,294 @@ + Improve this Doc + + +

      HTML Compiler

      +
      +Note: this guide is targeted towards developers who are already familiar with AngularJS basics. + +If you're just getting started, we recommend the tutorial first. +If you just want to create custom directives, we recommend the directives guide. +If you want a deeper look into Angular's compilation process, you're in the right place. +
      + + +

      Overview

      +

      Angular's HTML compiler allows the developer to teach the +browser new HTML syntax. The compiler allows you to attach behavior to any HTML element or attribute +and even create new HTML elements or attributes with custom behavior. Angular calls these behavior +extensions directives.

      +

      HTML has a lot of constructs for formatting the HTML for static documents in a declarative fashion. +For example if something needs to be centered, there is no need to provide instructions to the +browser how the window size needs to be divided in half so that the center is found, and that this +center needs to be aligned with the text's center. Simply add an align="center" attribute to any +element to achieve the desired behavior. Such is the power of declarative language.

      +

      But the declarative language is also limited, since it does not allow you to teach the browser new +syntax. For example there is no easy way to get the browser to align the text at 1/3 the position +instead of 1/2. What is needed is a way to teach the browser new HTML syntax.

      +

      Angular comes pre-bundled with common directives which are useful for building any app. We also +expect that you will create directives that are specific to your app. These extensions become a +Domain Specific Language for building your application.

      +

      All of this compilation takes place in the web browser; no server side or pre-compilation step is +involved.

      +

      Compiler

      +

      Compiler is an Angular service which traverses the DOM looking for attributes. The compilation +process happens in two phases.

      +
        +
      1. Compile: traverse the DOM and collect all of the directives. The result is a linking +function.

        +
      2. +
      3. Link: combine the directives with a scope and produce a live view. Any changes in the +scope model are reflected in the view, and any user interactions with the view are reflected +in the scope model. This makes the scope model the single source of truth.

        +
      4. +
      +

      Some directives such as ng-repeat clone DOM elements once +for each item in a collection. Having a compile and link phase improves performance since the +cloned template only needs to be compiled once, and then linked once for each clone instance.

      +

      Directive

      +

      A directive is a behavior which should be triggered when specific HTML constructs are encountered +during the compilation process. The directives can be placed in element names, attributes, class +names, as well as comments. Here are some equivalent examples of invoking the ng-bind directive.

      +
      <span ng-bind="exp"></span>
      +<span class="ng-bind: exp;"></span>
      +<ng-bind></ng-bind>
      +<!-- directive: ng-bind exp -->
      +
      +

      A directive is just a function which executes when the compiler encounters it in the DOM. See directive API for in-depth documentation on how +to write directives.

      +

      Here is a directive which makes any element draggable. Notice the draggable attribute on the +<span> element.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('drag', []).
        directive('draggable', function($document) {
          return function(scope, element, attr) {
            var startX = 0, startY = 0, x = 0, y = 0;
            element.css({
             position: 'relative',
             border: '1px solid red',
             backgroundColor: 'lightgrey',
             cursor: 'pointer',
             display: 'block',
             width: '65px'
            });
            element.on('mousedown', function(event) {
              // Prevent default dragging of selected content
              event.preventDefault();
              startX = event.screenX - x;
              startY = event.screenY - y;
              $document.on('mousemove', mousemove);
              $document.on('mouseup', mouseup);
            });
      
            function mousemove(event) {
              y = event.screenY - startY;
              x = event.screenX - startX;
              element.css({
                top: y + 'px',
                left:  x + 'px'
              });
            }
      
            function mouseup() {
              $document.unbind('mousemove', mousemove);
              $document.unbind('mouseup', mouseup);
            }
          };
        });
      +
      + +
      +
      <span draggable>Drag ME</span>
      +
      + + + +
      +
      + + +

      +

      The presence of the draggable attribute on any element gives the element new behavior. +We extended the vocabulary of the browser in a way which is natural to anyone who is familiar with the principles of HTML.

      +

      Understanding View

      +

      Most other templating systems consume a static string template and +combine it with data, resulting in a new string. The resulting text is then innerHTMLed into +an element.

      +

      +

      This means that any changes to the data need to be re-merged with the template and then +innerHTMLed into the DOM. Some of the issues with this approach are:

      +
        +
      1. reading user input and merging it with data
      2. +
      3. clobbering user input by overwriting it
      4. +
      5. managing the whole update process
      6. +
      7. lack of behavior expressiveness
      8. +
      +

      Angular is different. The Angular compiler consumes the DOM, not string templates. +The result is a linking function, which when combined with a scope model results in a live view. The +view and scope model bindings are transparent. The developer does not need to make any special calls to update +the view. And because innerHTML is not used, you won't accidentally clobber user input. +Furthermore, Angular directives can contain not just text bindings, but behavioral constructs as +well.

      +

      +

      The Angular approach produces a stable DOM. The DOM element instance bound to a model +item instance does not change for the lifetime of the binding. This means that the code can get +hold of the elements and register event handlers and know that the reference will not be destroyed +by template data merge.

      +

      How directives are compiled

      +

      It's important to note that Angular operates on DOM nodes rather than strings. Usually, you don't +notice this restriction because when a page loads, the web browser parses HTML into the DOM automatically.

      +

      HTML compilation happens in three phases:

      +
        +
      1. $compile traverses the DOM and matches directives.

        +

        If the compiler finds that an element matches a directive, then the directive is added to the list of +directives that match the DOM element. A single element may match multiple directives.

        +
      2. +
      3. Once all directives matching a DOM element have been identified, the compiler sorts the directives +by their priority.

        +

        Each directive's compile functions are executed. Each compile function has a chance to +modify the DOM. Each compile function returns a link function. These functions are composed into +a "combined" link function, which invokes each directive's returned link function.

        +
      4. +
      5. $compile links the template with the scope by calling the combined linking function from the previous step. +This in turn will call the linking function of the individual directives, registering listeners on the elements +and setting up $watchs with the scope +as each directive is configured to do.

        +
      6. +
      +

      The result of this is a live binding between the scope and the DOM. So at this point, a change in +a model on the compiled scope will be reflected in the DOM.

      +

      Below is the corresponding code using the $compile service. +This should help give you an idea of what Angular does internally.

      +
      var $compile = ...; // injected into your code
      +var scope = ...;
      +var parent = ...; // DOM element where the compiled template can be appended
      +
      +var html = '<div ng-bind="exp"></div>';
      +
      +// Step 1: parse HTML into DOM element
      +var template = angular.element(html);
      +
      +// Step 2: compile the template
      +var linkFn = $compile(template);
      +
      +// Step 3: link the compiled template with the scope.
      +var element = linkFn(scope);
      +
      +// Step 4: Append to DOM (optional)
      +parent.appendChild(element);
      +
      + +

      At this point you may wonder why the compile process has separate compile and link phases. The +short answer is that compile and link separation is needed any time a change in a model causes +a change in the structure of the DOM.

      +

      It's rare for directives to have a compile function, since most directives are concerned with +working with a specific DOM element instance rather than changing its overall structure.

      +

      Directives often have a link function. A link function allows the directive to register +listeners to the specific cloned DOM element instance as well as to copy content into the DOM +from the scope.

      +
      +Best Practice: Any operation which can be shared among the instance of directives should be +moved to the compile function for performance reasons. +
      + + +

      To understand, let's look at a real-world example with ngRepeat:

      +
      Hello {{user.name}}, you have these actions:
      +<ul>
      +  <li ng-repeat="action in user.actions">
      +    {{action.description}}
      +  </li>
      +</ul>
      +
      +

      When the above example is compiled, the compiler visits every node and looks for directives.

      +

      {{user.name}} matches the interpolation directive +and ng-repeat matches the ngRepeat directive.

      +

      But ngRepeat has a dilemma.

      +

      It needs to be able to clone new <li> elements for every action in user.actions. +This initially seems trivial, but it becomes more complicated when you consider that user.actions +might have items added to it later. This means that it needs to save a clean copy of the <li> +element for cloning purposes.

      +

      As new actions are inserted, the template <li> element needs to be cloned and inserted into ul. +But cloning the <li> element is not enough. It also needs to compile the <li> so that its +directives, like {{action.description}}, evaluate against the right scope.

      +

      A naive approach to solving this problem would be to simply insert a copy of the <li> element and +then compile it. +The problem with this approach is that compiling on every <li> element that we clone would duplicate +a lot of the work. Specifically, we'd be traversing <li> each time before cloning it to find the +directives. This would cause the compilation process to be slower, in turn making applications +less responsive when inserting new nodes.

      +

      The solution is to break the compilation process into two phases:

      +

      the compile phase where all of the directives are identified and sorted by priority, +and a linking phase where any work which "links" a specific instance of the +scope and the specific instance of an <li> is performed.

      +
      +Note: Link means setting up listeners on the DOM and setting up $watch on the Scope to +keep the two in sync. +
      + +

      ngRepeat works by preventing the compilation process from +descending into the <li> element so it can make a clone of the original and handle inserting +and removing DOM nodes itself.

      +

      Instead the ngRepeat directive compiles <li> separately. +The result of the <li> element compilation is a linking function which contains all of the +directives contained in the <li> element, ready to be attached to a specific clone of the <li> +element.

      +

      At runtime the ngRepeat watches the expression and as items +are added to the array it clones the <li> element, creates a new +scope for the cloned <li> element and calls the link function +on the cloned <li>.

      +

      Understanding How Scopes Work with Transcluded Directives

      +

      One of the most common use cases for directives is to create reusable components.

      +

      Below is a pseudo code showing how a simplified dialog component may work.

      +
      <div>
      +<button ng-click="show=true">show</button>
      +
      +<dialog title="Hello {{username}}."
      +        visible="show"
      +        on-cancel="show = false"
      +        on-ok="show = false; doSomething()">
      +   Body goes here: {{username}} is {{title}}.
      +</dialog>
      +</div>
      +
      +

      Clicking on the "show" button will open the dialog. The dialog will have a title, which is +data bound to username, and it will also have a body which we would like to transclude +into the dialog.

      +

      Here is an example of what the template definition for the dialog widget may look like.

      +
      <div ng-show="visible">
      +<h3>{{title}}</h3>
      +<div class="body" ng-transclude></div>
      +<div class="footer">
      +  <button ng-click="onOk()">Save changes</button>
      +  <button ng-click="onCancel()">Close</button>
      +</div>
      +</div>
      +
      +

      This will not render properly, unless we do some scope magic.

      +

      The first issue we have to solve is that the dialog box template expects title to be defined. +But we would like the template's scope property title to be the result of interpolating the +<dialog> element's title attribute (i.e. "Hello {{username}}"). Furthermore, the buttons expect +the onOk and onCancel functions to be present in the scope. This limits the usefulness of the +widget. To solve the mapping issue we use the scope to create local variables which the template +expects as follows:

      +
      scope: {
      +  title: '@',             // the title uses the data-binding from the parent scope
      +  onOk: '&',              // create a delegate onOk function
      +  onCancel: '&',          // create a delegate onCancel function
      +  visible: '='            // set up visible to accept data-binding
      +}
      +
      +

      Creating local properties on widget scope creates two problems:

      +
        +
      1. isolation - if the user forgets to set title attribute of the dialog widget the dialog +template will bind to parent scope property. This is unpredictable and undesirable.

        +
      2. +
      3. transclusion - the transcluded DOM can see the widget locals, which may overwrite the +properties which the transclusion needs for data-binding. In our example the title +property of the widget clobbers the title property of the transclusion.

        +
      4. +
      +

      To solve the issue of lack of isolation, the directive declares a new isolated scope. An +isolated scope does not prototypically inherit from the parent scope, and therefore we don't have +to worry about accidentally clobbering any properties.

      +

      However isolated scope creates a new problem: if a transcluded DOM is a child of the widget +isolated scope then it will not be able to bind to anything. For this reason the transcluded scope +is a child of the original scope, before the widget created an isolated scope for its local +variables. This makes the transcluded and widget isolated scope siblings.

      +

      This may seem to be unexpected complexity, but it gives the widget user and developer the least +surprise.

      +

      Therefore the final directive definition looks something like this:

      +
      transclude: true,
      +scope: {
      +    title: '@',             // the title uses the data-binding from the parent scope
      +    onOk: '&',              // create a delegate onOk function
      +    onCancel: '&',          // create a delegate onCancel function
      +    visible: '='            // set up visible to accept data-binding
      +},
      +restrict: 'E',
      +replace: true
      +
      + + diff --git a/1.2.30/docs/partials/guide/concepts.html b/1.2.30/docs/partials/guide/concepts.html new file mode 100644 index 0000000000..0d2fc8d14d --- /dev/null +++ b/1.2.30/docs/partials/guide/concepts.html @@ -0,0 +1,337 @@ + Improve this Doc + + +

      Conceptual Overview

      +

      This section briefly touches on all of the important parts of AngularJS using a simple example. +For a more in-depth explanation, see the tutorial.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ConceptDescription
      TemplateHTML with additional markup
      Directivesextend HTML with custom attributes and elements
      Modelthe data shown to the user in the view and with which the user interacts
      Scopecontext where the model is stored so that controllers, directives and expressions can access it
      Expressionsaccess variables and functions from the scope
      Compilerparses the template and instantiates directives and expressions
      Filterformats the value of an expression for display to the user
      Viewwhat the user sees (the DOM)
      Data Bindingsync data between the model and the view
      Controllerthe business logic behind views
      Dependency InjectionCreates and wires objects and functions
      Injectordependency injection container
      Modulea container for the different parts of an app including controllers, services, filters, directives which configures the Injector
      Servicereusable business logic independent of views
      +

      A first example: Data binding

      +

      In the following example we will build a form to calculate the costs of an invoice in different currencies.

      +

      Let's start with input fields for quantity and cost whose values are multiplied to produce the total of the invoice:

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-app ng-init="qty=1;cost=2">
        <b>Invoice:</b>
        <div>
          Quantity: <input type="number" ng-model="qty">
        </div>
        <div>
          Costs: <input type="number" ng-model="cost">
        </div>
        <div>
          <b>Total:</b> {{qty * cost | currency}}
        </div>
      </div>
      +
      + + + +
      +
      + + +

      +

      Try out the Live Preview above, and then let's walk through the example and describe what's going on.

      +

      +

      This looks like normal HTML, with some new markup. In Angular, a file like this is called a +"template". When Angular starts your application, it parses and +processes this new markup from the template using the so-called "compiler". +The loaded, transformed and rendered DOM is then called the "view".

      +

      The first kind of new markup are the so-called "directives". +They apply special behavior to attributes or elements in the HTML. In the example above we use the +ng-app attribute, which is linked to a directive that automatically +initializes our application. Angular also defines a directive for the input +element that adds extra behavior to the element. The ng-model directive +stores/updates the value of the input field into/from a variable.

      +
      +Custom directives to access the DOM: In Angular, the only place where an application should access the DOM is + within directives. This is important because artifacts that access the DOM are hard to test. + If you need to access the DOM directly you should write a custom directive for this. The + directives guide explains how to do this. +
      + +

      The second kind of new markup are the double curly braces {{ expression | filter }}: +When the compiler encounters this markup, it will replace it with the evaluated value of the markup. +An "expression" in a template is a JavaScript-like code snippet that allows +to read and write variables. Note that those variables are not global variables. +Just like variables in a JavaScript function live in a scope, +Angular provides a "scope" for the variables accessible to expressions. +The values that are stored in variables on the scope are referred to as the "model" +in the rest of the documentation. +Applied to the example above, the markup directs Angular to "take the data we got from the input widgets +and multiply them together".

      +

      The example above also contains a "filter". +A filter formats the value of an expression for display to the user. +In the example above, the filter currency formats a number +into an output that looks like money.

      +

      The important thing in the example is that Angular provides live bindings: +Whenever the input values change, the value of the expressions are automatically +recalculated and the DOM is updated with their values. +The concept behind this is "two-way data binding".

      +

      Adding UI logic: Controllers

      +

      Let's add some more logic to the example that allows us to enter and calculate the costs in +different currencies and also pay the invoice.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('invoice1', [])
        .controller('InvoiceController', function() {
          this.qty = 1;
          this.cost = 2;
          this.inCurr = 'EUR';
          this.currencies = ['USD', 'EUR', 'CNY'];
          this.usdToForeignRates = {
            USD: 1,
            EUR: 0.74,
            CNY: 6.09
          };
      
          this.total = function total(outCurr) {
            return this.convertCurrency(this.qty * this.cost, this.inCurr, outCurr);
          };
          this.convertCurrency = function convertCurrency(amount, inCurr, outCurr) {
            return amount * this.usdToForeignRates[outCurr] / this.usdToForeignRates[inCurr];
          };
          this.pay = function pay() {
            window.alert("Thanks!");
          };
        });
      +
      + +
      +
      <div ng-app="invoice1" ng-controller="InvoiceController as invoice">
        <b>Invoice:</b>
        <div>
          Quantity: <input type="number" ng-model="invoice.qty" required >
        </div>
        <div>
          Costs: <input type="number" ng-model="invoice.cost" required >
          <select ng-model="invoice.inCurr">
            <option ng-repeat="c in invoice.currencies">{{c}}</option>
          </select>
        </div>
        <div>
          <b>Total:</b>
          <span ng-repeat="c in invoice.currencies">
            {{invoice.total(c) | currency:c}}
          </span>
          <button class="btn" ng-click="invoice.pay()">Pay</button>
        </div>
      </div>
      +
      + + + +
      +
      + + +

      +

      What changed?

      +

      First, there is a new JavaScript file that contains a so-called "controller". +More exactly, the file contains a constructor function that creates the actual controller instance. +The purpose of controllers is to expose variables and functionality to expressions and directives.

      +

      Besides the new file that contains the controller code we also added a +ng-controller directive to the HTML. +This directive tells Angular that the new InvoiceController is responsible for the element with the directive +and all of the element's children. +The syntax InvoiceController as invoice tells Angular to instantiate the controller +and save it in the variable invoice in the current scope.

      +

      We also changed all expressions in the page to read and write variables within that +controller instance by prefixing them with invoice. . The possible currencies are defined in the controller +and added to the template using ng-repeat. +As the controller contains a total function +we are also able to bind the result of that function to the DOM using {{ invoice.total(...) }}.

      +

      Again, this binding is live, i.e. the DOM will be automatically updated +whenever the result of the function changes. +The button to pay the invoice uses the directive ngClick. This will evaluate the +corresponding expression whenever the button is clicked.

      +

      In the new JavaScript file we are also creating a module +at which we register the controller. We will talk about modules in the next section.

      +

      The following graphic shows how everything works together after we introduced the controller:

      +

      +

      View independent business logic: Services

      +

      Right now, the InvoiceController contains all logic of our example. When the application grows it +is a good practice to move view independent logic from the controller into a so called +"service", so it can be reused by other parts +of the application as well. Later on, we could also change that service to load the exchange rates +from the web, e.g. by calling the Yahoo Finance API, without changing the controller.

      +

      Let's refactor our example and move the currency conversion into a service in another file:

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('finance2', [])
        .factory('currencyConverter', function() {
          var currencies = ['USD', 'EUR', 'CNY'];
          var usdToForeignRates = {
            USD: 1,
            EUR: 0.74,
            CNY: 6.09
          };
          var convert = function (amount, inCurr, outCurr) {
            return amount * usdToForeignRates[outCurr] / usdToForeignRates[inCurr];
          };
      
          return {
            currencies: currencies,
            convert: convert
          };
        });
      +
      + +
      +
      angular.module('invoice2', ['finance2'])
        .controller('InvoiceController', ['currencyConverter', function(currencyConverter) {
          this.qty = 1;
          this.cost = 2;
          this.inCurr = 'EUR';
          this.currencies = currencyConverter.currencies;
      
          this.total = function total(outCurr) {
            return currencyConverter.convert(this.qty * this.cost, this.inCurr, outCurr);
          };
          this.pay = function pay() {
            window.alert("Thanks!");
          };
        }]);
      +
      + +
      +
      <div ng-app="invoice2" ng-controller="InvoiceController as invoice">
        <b>Invoice:</b>
        <div>
          Quantity: <input type="number" ng-model="invoice.qty" required >
        </div>
        <div>
          Costs: <input type="number" ng-model="invoice.cost" required >
          <select ng-model="invoice.inCurr">
            <option ng-repeat="c in invoice.currencies">{{c}}</option>
          </select>
        </div>
        <div>
          <b>Total:</b>
          <span ng-repeat="c in invoice.currencies">
            {{invoice.total(c) | currency:c}}
          </span>
          <button class="btn" ng-click="invoice.pay()">Pay</button>
        </div>
      </div>
      +
      + + + +
      +
      + + +

      +

      +

      What changed? +We moved the convertCurrency function and the definition of the existing currencies +into the new file finance2.js. But how does the controller +get a hold of the now separated function?

      +

      This is where "Dependency Injection" comes into play. +Dependency Injection (DI) is a software design pattern that +deals with how objects and functions get created and how they get a hold of their dependencies. +Everything within Angular (directives, filters, controllers, +services, ...) is created and wired using dependency injection. Within Angular, +the DI container is called the "injector".

      +

      To use DI, there needs to be a place where all the things that should work together are registered. +In Angular, this is the purpose of the so-called "modules". +When Angular starts, it will use the configuration of the module with the name defined by the ng-app directive, +including the configuration of all modules that this module depends on.

      +

      In the example above: +The template contains the directive ng-app="invoice2". This tells Angular +to use the invoice2 module as the main module for the application. +The code snippet angular.module('invoice2', ['finance2']) specifies that the invoice2 module depends on the +finance2 module. By this, Angular uses the InvoiceController as well as the currencyConverter service.

      +

      Now that Angular knows of all the parts of the application, it needs to create them. +In the previous section we saw that controllers are created using a factory function. +For services there are multiple ways to define their factory +(see the service guide). +In the example above, we are using a function that returns the currencyConverter function as the factory +for the service.

      +

      Back to the initial question: How does the InvoiceController get a reference to the currencyConverter function? +In Angular, this is done by simply defining arguments on the constructor function. With this, the injector +is able to create the objects in the right order and pass the previously created objects into the +factories of the objects that depend on them. +In our example, the InvoiceController has an argument named currencyConverter. By this, Angular knows about the +dependency between the controller and the service and calls the controller with the service instance as argument.

      +

      The last thing that changed in the example between the previous section and this section is that we +now pass an array to the module.controller function, instead of a plain function. The array first +contains the names of the service dependencies that the controller needs. The last entry +in the array is the controller constructor function. +Angular uses this array syntax to define the dependencies so that the DI also works after minifying +the code, which will most probably rename the argument name of the controller constructor function +to something shorter like a.

      +

      Accessing the backend

      +

      Let's finish our example by fetching the exchange rates from the Yahoo Finance API. +The following example shows how this is done with Angular:

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('invoice3', ['finance3'])
        .controller('InvoiceController', ['currencyConverter', function(currencyConverter) {
          this.qty = 1;
          this.cost = 2;
          this.inCurr = 'EUR';
          this.currencies = currencyConverter.currencies;
      
          this.total = function total(outCurr) {
            return currencyConverter.convert(this.qty * this.cost, this.inCurr, outCurr);
          };
          this.pay = function pay() {
            window.alert("Thanks!");
          };
        }]);
      +
      + +
      +
      angular.module('finance3', [])
        .factory('currencyConverter', ['$http', function($http) {
          var YAHOO_FINANCE_URL_PATTERN =
                '//query.yahooapis.com/v1/public/yql?q=select * from '+
                'yahoo.finance.xchange where pair in ("PAIRS")&format=json&'+
                'env=store://datatables.org/alltableswithkeys&callback=JSON_CALLBACK';
          var currencies = ['USD', 'EUR', 'CNY'];
          var usdToForeignRates = {};
      
          var convert = function (amount, inCurr, outCurr) {
            return amount * usdToForeignRates[outCurr] / usdToForeignRates[inCurr];
          };
      
          var refresh = function() {
            var url = YAHOO_FINANCE_URL_PATTERN.
                       replace('PAIRS', 'USD' + currencies.join('","USD'));
            return $http.jsonp(url).success(function(data) {
              var newUsdToForeignRates = {};
              angular.forEach(data.query.results.rate, function(rate) {
                var currency = rate.id.substring(3,6);
                newUsdToForeignRates[currency] = window.parseFloat(rate.Rate);
              });
              usdToForeignRates = newUsdToForeignRates;
            });
          };
      
          refresh();
      
          return {
            currencies: currencies,
            convert: convert,
            refresh: refresh
          };
        }]);
      +
      + +
      +
      <div ng-app="invoice3" ng-controller="InvoiceController as invoice">
        <b>Invoice:</b>
        <div>
          Quantity: <input type="number" ng-model="invoice.qty" required >
        </div>
        <div>
          Costs: <input type="number" ng-model="invoice.cost" required >
          <select ng-model="invoice.inCurr">
            <option ng-repeat="c in invoice.currencies">{{c}}</option>
          </select>
        </div>
        <div>
          <b>Total:</b>
          <span ng-repeat="c in invoice.currencies">
            {{invoice.total(c) | currency:c}}
          </span>
          <button class="btn" ng-click="invoice.pay()">Pay</button>
        </div>
      </div>
      +
      + + + +
      +
      + + +

      +

      What changed? +Our currencyConverter service of the finance module now uses the $http, a +built-in service provided by Angular for accessing a server backend. $http is a wrapper around +XMLHttpRequest +and JSONP transports.

      + + diff --git a/1.2.30/docs/partials/guide/controller.html b/1.2.30/docs/partials/guide/controller.html new file mode 100644 index 0000000000..09f2894672 --- /dev/null +++ b/1.2.30/docs/partials/guide/controller.html @@ -0,0 +1,304 @@ + Improve this Doc + + +

      Understanding Controllers

      +

      In Angular, a Controller is a JavaScript constructor function that is used to augment the +Angular Scope.

      +

      When a Controller is attached to the DOM via the ng-controller +directive, Angular will instantiate a new Controller object, using the specified Controller's +constructor function. A new child scope will be available as an injectable parameter to the +Controller's constructor function as $scope.

      +

      Use controllers to:

      +
        +
      • Set up the initial state of the $scope object.
      • +
      • Add behavior to the $scope object.
      • +
      +

      Do not use controllers to:

      +
        +
      • Manipulate DOM — Controllers should contain only business logic. +Putting any presentation logic into Controllers significantly affects its testability. Angular +has databinding for most cases and directives to +encapsulate manual DOM manipulation.
      • +
      • Format input — Use angular form controls instead.
      • +
      • Filter output — Use angular filters instead.
      • +
      • Share code or state across controllers — Use angular +services instead.
      • +
      • Manage the life-cycle of other components (for example, to create service instances).
      • +
      +

      Setting up the initial state of a $scope object

      +

      Typically, when you create an application you need to set up the initial state for the Angular +$scope. You set up the initial state of a scope by attaching properties to the $scope object. +The properties contain the view model (the model that will be presented by the view). All the +$scope properties will be available to the template at the point in the DOM where the Controller +is registered.

      +

      The following example demonstrates creating a GreetingController, which attaches a greeting +property containing the string 'Hola!' to the $scope:

      +
      var myApp = angular.module('myApp',[]);
      +
      +myApp.controller('GreetingController', ['$scope', function($scope) {
      +  $scope.greeting = 'Hola!';
      +}]);
      +
      +

      We create an Angular Module, myApp, for our application. Then we add the controller's +constructor function to the module using the .controller() method. This keeps the controller's +constructor function out of the global scope.

      +
      +We have used an inline injection annotation to explicitly specify the dependency +of the Controller on the $scope service provided by Angular. See the guide on +Dependency Injection for more information. +
      + +

      We attach our controller to the DOM using the ng-controller directive. The greeting property can +now be data-bound to the template:

      +
      <div ng-controller="GreetingController">
      +{{ greeting }}
      +</div>
      +
      +

      Adding Behavior to a Scope Object

      +

      In order to react to events or execute computation in the view we must provide behavior to the +scope. We add behavior to the scope by attaching methods to the $scope object. These methods are +then available to be called from the template/view.

      +

      The following example uses a Controller to add a method to the scope, which doubles a number:

      +
      var myApp = angular.module('myApp',[]);
      +
      +myApp.controller('DoubleController', ['$scope', function($scope) {
      +  $scope.double = function(value) { return value * 2; };
      +}]);
      +
      +

      Once the Controller has been attached to the DOM, the double method can be invoked in an Angular +expression in the template:

      +
      <div ng-controller="DoubleController">
      +Two times <input ng-model="num"> equals {{ double(num) }}
      +</div>
      +
      +

      As discussed in the Concepts section of this guide, any +objects (or primitives) assigned to the scope become model properties. Any methods assigned to +the scope are available in the template/view, and can be invoked via angular expressions +and ng event handler directives (e.g. ngClick).

      +

      Using Controllers Correctly

      +

      In general, a Controller shouldn't try to do too much. It should contain only the business logic +needed for a single view.

      +

      The most common way to keep Controllers slim is by encapsulating work that doesn't belong to +controllers into services and then using these services in Controllers via dependency injection. +This is discussed in the Dependency Injection Services sections of this guide.

      +

      Associating Controllers with Angular Scope Objects

      +

      You can associate Controllers with scope objects implicitly via the ngController +directive or $route service.

      +

      Simple Spicy Controller Example

      +

      To illustrate further how Controller components work in Angular, let's create a little app with the +following components:

      +
        +
      • A template with two buttons and a simple message
      • +
      • A model consisting of a string named spice
      • +
      • A Controller with two functions that set the value of spice
      • +
      +

      The message in our template contains a binding to the spice model, which by default is set to the +string "very". Depending on which button is clicked, the spice model is set to chili or +jalapeño, and the message is automatically updated by data-binding.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="SpicyController">
       <button ng-click="chiliSpicy()">Chili</button>
       <button ng-click="jalapenoSpicy()">Jalapeño</button>
       <p>The food is {{spice}} spicy!</p>
      </div>
      +
      + +
      +
      var myApp = angular.module('spicyApp1', []);
      
      myApp.controller('SpicyController', ['$scope', function($scope) {
          $scope.spice = 'very';
      
          $scope.chiliSpicy = function() {
              $scope.spice = 'chili';
          };
      
          $scope.jalapenoSpicy = function() {
              $scope.spice = 'jalapeño';
          };
      }]);
      +
      + + + +
      +
      + + +

      +

      Things to notice in the example above:

      +
        +
      • The ng-controller directive is used to (implicitly) create a scope for our template, and the +scope is augmented (managed) by the SpicyController Controller.
      • +
      • SpicyController is just a plain JavaScript function. As an (optional) naming convention the name +starts with capital letter and ends with "Controller" or "Controller".
      • +
      • Assigning a property to $scope creates or updates the model.
      • +
      • Controller methods can be created through direct assignment to scope (see the chiliSpicy method)
      • +
      • The Controller methods and properties are available in the template (for the <div> element and +its children).
      • +
      +

      Spicy Arguments Example

      +

      Controller methods can also take arguments, as demonstrated in the following variation of the +previous example.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="SpicyController">
      <input ng-model="customSpice">
      <button ng-click="spicy('chili')">Chili</button>
      <button ng-click="spicy(customSpice)">Custom spice</button>
      <p>The food is {{spice}} spicy!</p>
      </div>
      +
      + +
      +
      var myApp = angular.module('spicyApp2', []);
      
      myApp.controller('SpicyController', ['$scope', function($scope) {
          $scope.customSpice = "wasabi";
          $scope.spice = 'very';
      
          $scope.spicy = function(spice) {
              $scope.spice = spice;
          };
      }]);
      +
      + + + +
      +
      + + +

      +

      Notice that the SpicyController Controller now defines just one method called spicy, which takes one +argument called spice. The template then refers to this Controller method and passes in a string +constant 'chili' in the binding for the first button and a model property customSpice (bound to an +input box) in the second button.

      +

      Scope Inheritance Example

      +

      It is common to attach Controllers at different levels of the DOM hierarchy. Since the +ng-controller directive creates a new child scope, we get a +hierarchy of scopes that inherit from each other. The $scope that each Controller receives will +have access to properties and methods defined by Controllers higher up the hierarchy. +See Understanding Scopes for +more information about scope inheritance.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div class="spicy">
        <div ng-controller="MainController">
          <p>Good {{timeOfDay}}, {{name}}!</p>
      
          <div ng-controller="ChildController">
            <p>Good {{timeOfDay}}, {{name}}!</p>
      
            <div ng-controller="GrandChildController">
              <p>Good {{timeOfDay}}, {{name}}!</p>
            </div>
          </div>
        </div>
      </div>
      +
      + +
      +
      div.spicy div {
        padding: 10px;
        border: solid 2px blue;
      }
      +
      + +
      +
      var myApp = angular.module('scopeInheritance', []);
      myApp.controller('MainController', ['$scope', function($scope) {
        $scope.timeOfDay = 'morning';
        $scope.name = 'Nikki';
      }]);
      myApp.controller('ChildController', ['$scope', function($scope) {
        $scope.name = 'Mattie';
      }]);
      myApp.controller('GrandChildController', ['$scope', function($scope) {
        $scope.timeOfDay = 'evening';
        $scope.name = 'Gingerbread Baby';
      }]);
      +
      + + + +
      +
      + + +

      +

      Notice how we nested three ng-controller directives in our template. This will result in four +scopes being created for our view:

      +
        +
      • The root scope
      • +
      • The MainController scope, which contains timeOfDay and name properties
      • +
      • The ChildController scope, which inherits the timeOfDay property but overrides (hides) the name +property from the previous
      • +
      • The GrandChildController scope, which overrides (hides) both the timeOfDay property defined in MainController +and the name property defined in ChildController
      • +
      +

      Inheritance works with methods in the same way as it does with properties. So in our previous +examples, all of the properties could be replaced with methods that return string values.

      +

      Testing Controllers

      +

      Although there are many ways to test a Controller, one of the best conventions, shown below, +involves injecting the $rootScope and $controller:

      +

      Controller Definition:

      +
      var myApp = angular.module('myApp',[]);
      +
      +myApp.controller('MyController', function($scope) {
      +  $scope.spices = [{"name":"pasilla", "spiciness":"mild"},
      +                   {"name":"jalapeno", "spiciness":"hot hot hot!"},
      +                   {"name":"habanero", "spiciness":"LAVA HOT!!"}];
      +  $scope.spice = "habanero";
      +});
      +
      +

      Controller Test:

      +
      describe('myController function', function() {
      +
      +describe('myController', function() {
      +  var $scope;
      +
      +  beforeEach(module('myApp'));
      +
      +  beforeEach(inject(function($rootScope, $controller) {
      +    $scope = $rootScope.$new();
      +    $controller('MyController', {$scope: $scope});
      +  }));
      +
      +  it('should create "spices" model with 3 spices', function() {
      +    expect($scope.spices.length).toBe(3);
      +  });
      +
      +  it('should set the default value of spice', function() {
      +    expect($scope.spice).toBe('habanero');
      +  });
      +});
      +});
      +
      +

      If you need to test a nested Controller you need to create the same scope hierarchy +in your test that exists in the DOM:

      +
      describe('state', function() {
      +var mainScope, childScope, grandChildScope;
      +
      +beforeEach(module('myApp'));
      +
      +beforeEach(inject(function($rootScope, $controller) {
      +    mainScope = $rootScope.$new();
      +    $controller('MainController', {$scope: mainScope});
      +    childScope = mainScope.$new();
      +    $controller('ChildController', {$scope: childScope});
      +    grandChildScope = childScope.$new();
      +    $controller('GrandChildController', {$scope: grandChildScope});
      +}));
      +
      +it('should have over and selected', function() {
      +    expect(mainScope.timeOfDay).toBe('morning');
      +    expect(mainScope.name).toBe('Nikki');
      +    expect(childScope.timeOfDay).toBe('morning');
      +    expect(childScope.name).toBe('Mattie');
      +    expect(grandChildScope.timeOfDay).toBe('evening');
      +    expect(grandChildScope.name).toBe('Gingerbread Baby');
      +});
      +});
      +
      + + diff --git a/1.2.30/docs/partials/guide/css-styling.html b/1.2.30/docs/partials/guide/css-styling.html new file mode 100644 index 0000000000..5aba92639a --- /dev/null +++ b/1.2.30/docs/partials/guide/css-styling.html @@ -0,0 +1,39 @@ + Improve this Doc + + +

      Angular sets these CSS classes. It is up to your application to provide useful styling.

      +

      CSS classes used by angular

      +
        +
      • ng-scope

        +
          +
        • Usage: angular applies this class to any element for which a new scope +is defined. (see scope guide for more information about scopes)
        • +
        +
      • +
      • ng-binding

        +
          +
        • Usage: angular applies this class to any element that is attached to a data binding, via ng-bind or +{{}} curly braces, for example. (see databinding guide)
        • +
        +
      • +
      • ng-invalid, ng-valid

        +
          +
        • Usage: angular applies this class to an input widget element if that element's input does +not pass validation. (see input directive)
        • +
        +
      • +
      • ng-pristine, ng-dirty

        +
          +
        • Usage: angular input directive applies ng-pristine class +to a new input widget element which did not have user interaction. Once the user interacts with +the input widget the class is changed to ng-dirty.
        • +
        +
      • +
      + + + + diff --git a/1.2.30/docs/partials/guide/databinding.html b/1.2.30/docs/partials/guide/databinding.html new file mode 100644 index 0000000000..e5f54747b9 --- /dev/null +++ b/1.2.30/docs/partials/guide/databinding.html @@ -0,0 +1,32 @@ + Improve this Doc + + +

      Data-binding in Angular apps is the automatic synchronization of data between the model and view +components. The way that Angular implements data-binding lets you treat the model as the +single-source-of-truth in your application. The view is a projection of the model at all times. +When the model changes, the view reflects the change, and vice versa.

      +

      Data Binding in Classical Template Systems

      +


      +Most templating systems bind data in only one direction: they merge template and model components +together into a view. After the merge occurs, changes to the model +or related sections of the view are NOT automatically reflected in the view. Worse, any changes +that the user makes to the view are not reflected in the model. This means that the developer has +to write code that constantly syncs the view with the model and the model with the view.

      +

      Data Binding in Angular Templates

      +


      +Angular templates work differently. First the template (which is the uncompiled HTML along with +any additional markup or directives) is compiled on the browser. The compilation step produces a +live view. Any changes to the view are immediately reflected in the model, and any changes in +the model are propagated to the view. The model is the single-source-of-truth for the application +state, greatly simplifying the programming model for the developer. You can think of +the view as simply an instant projection of your model.

      +

      Because the view is just a projection of the model, the controller is completely separated from the +view and unaware of it. This makes testing a snap because it is easy to test your controller in +isolation without the view and the related DOM/browser dependency.

      + + + + diff --git a/1.2.30/docs/partials/guide/di.html b/1.2.30/docs/partials/guide/di.html new file mode 100644 index 0000000000..169728c968 --- /dev/null +++ b/1.2.30/docs/partials/guide/di.html @@ -0,0 +1,225 @@ + Improve this Doc + + +

      Dependency Injection

      +

      Dependency Injection (DI) is a software design pattern that deals with how components get hold of +their dependencies.

      +

      The Angular injector subsystem is in charge of creating components, resolving their dependencies, +and providing them to other components as requested.

      +

      For in-depth discussion about DI, see +Dependency Injection at Wikipedia, +Inversion of Control by Martin Fowler, +or read about DI in your favorite software design pattern book.

      +

      DI in a Nutshell

      +

      There are only three ways a component (object or function) can get a hold of its dependencies:

      +
        +
      1. The component can create the dependency, typically using the new operator.
      2. +
      3. The component can look up the dependency, by referring to a global variable.
      4. +
      5. The component can have the dependency passed to it where it is needed.
      6. +
      +

      The first two options of creating or looking up dependencies are not optimal because they hard +code the dependency to the component. This makes it difficult, if not impossible, to modify the +dependencies. This is especially problematic in tests, where it is often desirable to provide mock +dependencies for test isolation.

      +

      The third option is the most viable, since it removes the responsibility of locating the +dependency from the component. The dependency is simply handed to the component.

      +
      function SomeClass(greeter) {
      +this.greeter = greeter;
      +}
      +
      +SomeClass.prototype.doSomething = function(name) {
      +this.greeter.greet(name);
      +}
      +
      +

      In the above example SomeClass is not concerned with creating or locating the greeter +dependency, it is simply handed the greeter when it is instantiated.

      +

      This is desirable, but it puts the responsibility of getting hold of the dependency on the +code that constructs SomeClass.

      +

      +

      To manage the responsibility of dependency creation, each Angular application has an injector. The injector is a +service locator that is responsible for +construction and lookup of dependencies.

      +

      Here is an example of using the injector service:

      +
      // Provide the wiring information in a module
      +var myModule = angular.module('myModule', []);
      +
      +

      Teach the injector how to build a greeter service. Notice that greeter is dependent on the +$window service. The greeter service is an object that contains a greet method.

      +
      myModule.factory('greeter', function($window) {
      +return {
      +  greet: function(text) {
      +    $window.alert(text);
      +  }
      +};
      +});
      +
      +

      Create a new injector that can provide components defined in our myModule module and request our +greeter service from the injector. (This is usually done automatically by angular bootstrap).

      +
      var injector = angular.injector(['myModule', 'ng']);
      +var greeter = injector.get('greeter');
      +
      +

      Asking for dependencies solves the issue of hard coding, but it also means that the injector needs +to be passed throughout the application. Passing the injector breaks the +Law of Demeter. To remedy this, we use a declarative +notation in our HTML templates, to hand the responsibility of creating components over to the +injector, as in this example:

      +
      <div ng-controller="MyController">
      +<button ng-click="sayHello()">Hello</button>
      +</div>
      +
      +
      function MyController($scope, greeter) {
      +$scope.sayHello = function() {
      +  greeter.greet('Hello World');
      +};
      +}
      +
      +

      When Angular compiles the HTML, it processes the ng-controller directive, which in turn +asks the injector to create an instance of the controller and its dependencies.

      +
      injector.instantiate(MyController);
      +
      +

      This is all done behind the scenes. Notice that by having the ng-controller ask the injector to +instantiate the class, it can satisfy all of the dependencies of MyController without the +controller ever knowing about the injector.

      +

      This is the best outcome. The application code simply declares the dependencies it needs, without +having to deal with the injector. This setup does not break the Law of Demeter.

      +

      Dependency Annotation

      +

      How does the injector know what components need to be injected?

      +

      The application developer needs to provide annotation information that the injector uses in order +to resolve the dependencies. Throughout Angular, certain API functions are invoked using the +injector, as per the API documentation. The injector needs to know what services to inject into +the function. There are three equivalent ways of annotating your code with service name +information:

      +
        +
      • Implicitly from the function parameter names
      • +
      • Using the $inject property annotation
      • +
      • Using the inline array annotation
      • +
      +

      These can be used interchangeably as you see fit and are equivalent.

      +

      Implicit Dependencies

      +

      The simplest way to get hold of the dependencies is to assume that the function parameter names +are the names of the dependencies.

      +
      function MyController($scope, greeter) {
      +// ...
      +}
      +
      +

      Given a function the injector can infer the names of the services to inject by examining the +function declaration and extracting the parameter names. In the above example $scope, and +greeter are two services which need to be injected into the function.

      +

      While straightforward, this method will not work with JavaScript minifiers/obfuscators as they +rename the method parameter names. This makes this way of annotating only useful for +pretotyping, and demo applications.

      +

      $inject Property Annotation

      +

      To allow the minifiers to rename the function parameters and still be able to inject the right services, +the function needs to be annotated with the $inject property. The $inject property is an array +of service names to inject.

      +
      var MyController = function(renamed$scope, renamedGreeter) {
      +...
      +}
      +MyController['$inject'] = ['$scope', 'greeter'];
      +
      +

      In this scenario the ordering of the values in the $inject array must match the ordering of the +arguments to inject. Using the above code snippet as an example, $scope will be injected into +renamed$scope and greeter into renamedGreeter. Care must be taken that the $inject +annotation is kept in sync with the actual arguments in the function declaration.

      +

      This method of annotation is useful for controller declarations since it assigns the annotation +information with the function.

      +

      Inline Array Annotation

      +

      Sometimes using the $inject annotation style is not convenient such as when annotating +directives or services defined inline by a factory function.

      +

      For example:

      +
      someModule.factory('greeter', function($window) {
      +// ...
      +});
      +
      +

      Results in code bloat due to needing a temporary variable:

      +
      var greeterFactory = function(renamed$window) {
      +// ...
      +};
      +
      +greeterFactory.$inject = ['$window'];
      +
      +someModule.factory('greeter', greeterFactory);
      +
      +

      For this reason the third annotation style is provided as well.

      +
      someModule.factory('greeter', ['$window', function(renamed$window) {
      +// ...
      +}]);
      +
      +

      Here, instead of simply providing the factory function, we pass an array whose elements consist of +a list of strings (the names of the dependencies) followed by the function itself.

      +

      Keep in mind that all of the annotation styles are equivalent and can be used anywhere in Angular +where injection is supported.

      +

      Where Can I Use DI?

      +

      DI is pervasive throughout Angular. You can use it when defining components or when providing run +and config blocks for a module.

      +
        +
      • Components such as services, directives, filters and animations are defined by an injectable factory +method or constructor function. These components can be injected with "service" and "value" +components as dependencies.

        +
      • +
      • The run method accepts a function, which can be injected with "service", "value" and "constant" +components as dependencies. Note that you cannot inject "providers" into run blocks.

        +
      • +
      • The config method accepts a function, which can be injected with "provider" and "constant" +components as dependencies. Note that you cannot inject "service" or "value" components into +configuration

        +
      • +
      • Controllers are defined by a constructor function, which can be injected with any of the "service" +and "value" components as dependencies, but they can also be provided with special dependencies. See +Controllers below for a list of these special dependencies.

        +
      • +
      +

      See Modules for more details about injecting dependencies +into run and config blocks.

      +

      Factory Methods

      +

      Factory methods are responsible for creating most objects in Angular. Examples are directives, +services, and filters. The factory methods are registered with the module, and the recommended way +of declaring factories is:

      +
      angular.module('myModule', [])
      +.factory('serviceId', ['depService', function(depService) {
      +  ...
      +}])
      +.directive('directiveName', ['depService', function(depService) {
      +  ...
      +}])
      +.filter('filterName', ['depService', function(depService) {
      +  ...
      +}]);
      +
      +

      Module Methods

      +

      We can specify functions to run at configuration and run time for a module by calling the run and +config methods. These functions are injectable with dependencies just like the factory functions +above.

      +
      angular.module('myModule', [])
      +.config(['depProvider', function(depProvider){
      +  ...
      +}])
      +.run(['depService', function(depService) {
      +  ...
      +}]);
      +
      +

      Controllers

      +

      Controllers are "classes" or "constructor functions" that are responsible for providing the +application behavior that supports the declarative markup in the template. The recommended way of +declaring Controllers is using the array notation:

      +
      someModule.controller('MyController', ['$scope', 'dep1', 'dep2', function($scope, dep1, dep2) {
      +...
      +$scope.aMethod = function() {
      +  ...
      +}
      +...
      +}]);
      +
      +

      This avoids the creation of global functions for controllers and also protects against minification.

      +

      Controllers are special in that, unlike services, there can be many instances of them in the +application. For example, there would be one instance for every ng-controller directive in the template.

      +

      Moreover, additional dependencies are made available to Controllers:

      +
        +
      • $scope: Controllers are always associated with a point in the DOM and so are provided with +access to the scope at that point. Other components, such as services only have access to the +singleton $rootScope service.
      • +
      • $route resolves: If a controller is instantiated as part of a route, then any values that +are resolved as part of the route are made available for injection into the controller.
      • +
      + + diff --git a/1.2.30/docs/partials/guide/directive.html b/1.2.30/docs/partials/guide/directive.html new file mode 100644 index 0000000000..aba764910c --- /dev/null +++ b/1.2.30/docs/partials/guide/directive.html @@ -0,0 +1,902 @@ + Improve this Doc + + +

      Creating Custom Directives

      +
      +Note: this guide is targeted towards developers who are already familiar with AngularJS basics. +If you're just getting started, we recommend the tutorial first. +If you're looking for the directives API, we recently moved it to $compile. +
      + + +

      This document explains when you'd want to create your own directives in your AngularJS app, and +how to implement them.

      +

      What are Directives?

      +

      At a high level, directives are markers on a DOM element (such as an attribute, element +name, comment or CSS class) that tell AngularJS's HTML compiler ($compile) to +attach a specified behavior to that DOM element or even transform the DOM element and its children.

      +

      Angular comes with a set of these directives built-in, like ngBind, ngModel, and ngView. +Much like you create controllers and services, you can create your own directives for Angular to use. +When Angular bootstraps your application, the +HTML compiler traverses the DOM matching directives against the DOM elements.

      +
      +What does it mean to "compile" an HTML template? + +For AngularJS, "compilation" means attaching event listeners to the HTML to make it interactive. +The reason we use the term "compile" is that the recursive process of attaching directives +mirrors the process of compiling source code in +compiled programming languages. +
      + + +

      Matching Directives

      +

      Before we can write a directive, we need to know how Angular's HTML compiler +determines when to use a given directive.

      +

      In the following example, we say that the <input> element matches the ngModel directive.

      +
      <input ng-model="foo">
      +
      +

      The following also matches ngModel:

      +
      <input data-ng:model="foo">
      +
      +

      Angular normalizes an element's tag and attribute name to determine which elements match which +directives. We typically refer to directives by their case-sensitive +camelCase normalized name (e.g. ngModel). +However, since HTML is case-insensitive, we refer to directives in the DOM by lower-case +forms, typically using dash-delimited +attributes on DOM elements (e.g. ng-model).

      +

      The normalization process is as follows:

      +
        +
      1. Strip x- and data- from the front of the element/attributes.
      2. +
      3. Convert the :, -, or _-delimited name to camelCase.
      4. +
      +

      Here are some equivalent examples of elements that match ngBind:

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('docsBindExample', [])
        .controller('Controller', ['$scope', function($scope) {
          $scope.name = 'Max Karl Ernst Ludwig Planck (April 23, 1858 – October 4, 1947)';
        }]);
      +
      + +
      +
      <div ng-controller="Controller">
        Hello <input ng-model='name'> <hr/>
        <span ng-bind="name"></span> <br/>
        <span ng:bind="name"></span> <br/>
        <span ng_bind="name"></span> <br/>
        <span data-ng-bind="name"></span> <br/>
        <span x-ng-bind="name"></span> <br/>
      </div>
      +
      + +
      +
      it('should show off bindings', function() {
        expect(element(by.css('div[ng-controller="Controller"] span[ng-bind]')).getText())
            .toBe('Max Karl Ernst Ludwig Planck (April 23, 1858 – October 4, 1947)');
      });
      +
      + + + +
      +
      + + +

      +
      +Best Practice: Prefer using the dash-delimited format (e.g. ng-bind for ngBind). +If you want to use an HTML validating tool, you can instead use the data-prefixed version (e.g. +data-ng-bind for ngBind). +The other forms shown above are accepted for legacy reasons but we advise you to avoid them. +
      + +

      $compile can match directives based on element names, attributes, class names, as well as comments.

      +

      All of the Angular-provided directives match attribute name, tag name, comments, or class name. +The following demonstrates the various ways a directive (myDir in this case) can be referenced +from within a template:

      +
      <my-dir></my-dir>
      +<span my-dir="exp"></span>
      +<!-- directive: my-dir exp -->
      +<span class="my-dir: exp;"></span>
      +
      +
      +Best Practice: Prefer using directives via tag name and attributes over comment and class names. +Doing so generally makes it easier to determine what directives a given element matches. +
      + +
      +Best Practice: Comment directives were commonly used in places where the DOM API limits the +ability to create directives that spanned multiple elements (e.g. inside <table> elements). +AngularJS 1.2 introduces ng-repeat-start and ng-repeat-end +as a better solution to this problem. Developers are encouraged to use this over custom comment +directives when possible. +
      + + + +

      Text and attribute bindings

      +

      During the compilation process the compiler matches text and attributes +using the $interpolate service to see if they contain embedded +expressions. These expressions are registered as watches +and will update as part of normal digest cycle. An +example of interpolation is shown below:

      +
      <a ng-href="img/{{username}}.jpg">Hello {{username}}!</a>
      +
      +

      ngAttr attribute bindings

      +

      Web browsers are sometimes picky about what values they consider valid for attributes.

      +

      For example, considering this template:

      +
      <svg>
      +<circle cx="{{cx}}"></circle>
      +</svg>
      +
      +

      We would expect Angular to be able to bind to this, but when we check the console we see +something like Error: Invalid value for attribute cx="{{cx}}". Because of the SVG DOM API's +restrictions, you cannot simply write cx="{{cx}}".

      +

      With ng-attr-cx you can work around this problem.

      +

      If an attribute with a binding is prefixed with the ngAttr prefix (denormalized as ng-attr-) +then during the binding it will be applied to the corresponding unprefixed attribute. This allows +you to bind to attributes that would otherwise be eagerly processed by browsers +(e.g. an SVG element's circle[cx] attributes).

      +

      For example, we could fix the example above by instead writing:

      +
      <svg>
      +<circle ng-attr-cx="{{cx}}"></circle>
      +</svg>
      +
      +

      Creating Directives

      +

      First let's talk about the API for registering directives. Much like +controllers, directives are registered on modules. To register a directive, you use the +module.directive API. module.directive takes the +normalized directive name +followed by a factory function. This factory function should return an object with the different +options to tell $compile how the directive should behave when matched.

      +

      The factory function is invoked only once when the +compiler matches the directive for the first time. You can perform any +initialization work here. The function is invoked using +$injector.invoke which makes it injectable just like a +controller.

      +
      +Best Practice: Prefer using the definition object over returning a function. +
      + + +

      We'll go over a few common examples of directives, then dive deep into the different options +and compilation process.

      +
      +Best Practice: In order to avoid collisions with some future standard, it's best to prefix your own +directive names. For instance, if you created a <carousel> directive, it would be problematic if HTML7 +introduced the same element. A two or three letter prefix (e.g. btfCarousel) works well. Similarly, do +not prefix your own directives with ng or they might conflict with directives included in a future +version of Angular. +
      + +

      For the following examples, we'll use the prefix my (e.g. myCustomer).

      +

      Template-expanding directive

      +

      Let's say you have a chunk of your template that represents a customer's information. This template +is repeated many times in your code. When you change it in one place, you have to change it in +several others. This is a good opportunity to use a directive to simplify your template.

      +

      Let's create a directive that simply replaces its contents with a static template:

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('docsSimpleDirective', [])
        .controller('Controller', ['$scope', function($scope) {
          $scope.customer = {
            name: 'Naomi',
            address: '1600 Amphitheatre'
          };
        }])
        .directive('myCustomer', function() {
          return {
            template: 'Name: {{customer.name}} Address: {{customer.address}}'
          };
        });
      +
      + +
      +
      <div ng-controller="Controller">
        <div my-customer></div>
      </div>
      +
      + + + +
      +
      + + +

      +

      Notice that we have bindings in this directive. After $compile compiles and links +<div my-customer></div>, it will try to match directives on the element's children. This means you +can compose directives of other directives. We'll see how to do that in +an example +below.

      +

      In the example above we in-lined the value of the template option, but this will become annoying +as the size of your template grows.

      +
      +Best Practice: Unless your template is very small, it's typically better to break it apart into +its own HTML file and load it with the templateUrl option. +
      + +

      If you are familiar with ngInclude, templateUrl works just like it. Here's the same example +using templateUrl instead:

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('docsTemplateUrlDirective', [])
        .controller('Controller', ['$scope', function($scope) {
          $scope.customer = {
            name: 'Naomi',
            address: '1600 Amphitheatre'
          };
        }])
        .directive('myCustomer', function() {
          return {
            templateUrl: 'my-customer.html'
          };
        });
      +
      + +
      +
      <div ng-controller="Controller">
        <div my-customer></div>
      </div>
      +
      + +
      +
      Name: {{customer.name}} Address: {{customer.address}}
      +
      + + + +
      +
      + + +

      +

      Great! But what if we wanted to have our directive match the tag name <my-customer> instead? +If we simply put a <my-customer> element into the HTML, it doesn't work.

      +
      +Note: When you create a directive, it is restricted to attribute only by default. In order to +create directives that are triggered by element or class name, you need to use the restrict option. +
      + +

      The restrict option is typically set to:

      +
        +
      • 'A' - only matches attribute name
      • +
      • 'E' - only matches element name
      • +
      • 'C' - only matches class name
      • +
      +

      These restrictions can all be combined as needed:

      +
        +
      • 'AEC' - matches either attribute or element or class name
      • +
      +

      Let's change our directive to use restrict: 'E':

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('docsRestrictDirective', [])
        .controller('Controller', ['$scope', function($scope) {
          $scope.customer = {
            name: 'Naomi',
            address: '1600 Amphitheatre'
          };
        }])
        .directive('myCustomer', function() {
          return {
            restrict: 'E',
            templateUrl: 'my-customer.html'
          };
        });
      +
      + +
      +
      <div ng-controller="Controller">
        <my-customer></my-customer>
      </div>
      +
      + +
      +
      Name: {{customer.name}} Address: {{customer.address}}
      +
      + + + +
      +
      + + +

      +

      For more on the +restrict +property, see the +API docs.

      +
      +When should I use an attribute versus an element? + +Use an element when you are creating a component that is in control of the template. The common case +for this is when you are creating a Domain-Specific Language for parts of your template. + +Use an attribute when you are decorating an existing element with new functionality. +
      + +

      Using an element for the myCustomer directive is clearly the right choice because you're not +decorating an element with some "customer" behavior; you're defining the core behavior of the +element as a customer component.

      +

      Isolating the Scope of a Directive

      +

      Our myCustomer directive above is great, but it has a fatal flaw. We can only use it once within a +given scope.

      +

      In its current implementation, we'd need to create a different controller each time in order to +re-use such a directive:

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('docsScopeProblemExample', [])
        .controller('NaomiController', ['$scope', function($scope) {
          $scope.customer = {
            name: 'Naomi',
            address: '1600 Amphitheatre'
          };
        }])
        .controller('IgorController', ['$scope', function($scope) {
          $scope.customer = {
            name: 'Igor',
            address: '123 Somewhere'
          };
        }])
        .directive('myCustomer', function() {
          return {
            restrict: 'E',
            templateUrl: 'my-customer.html'
          };
        });
      +
      + +
      +
      <div ng-controller="NaomiController">
        <my-customer></my-customer>
      </div>
      <hr>
      <div ng-controller="IgorController">
        <my-customer></my-customer>
      </div>
      +
      + +
      +
      Name: {{customer.name}} Address: {{customer.address}}
      +
      + + + +
      +
      + + +

      +

      This is clearly not a great solution.

      +

      What we want to be able to do is separate the scope inside a directive from the scope +outside, and then map the outer scope to a directive's inner scope. We can do this by creating what +we call an isolate scope. To do this, we can use a directive's scope option:

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('docsIsolateScopeDirective', [])
        .controller('Controller', ['$scope', function($scope) {
          $scope.naomi = { name: 'Naomi', address: '1600 Amphitheatre' };
          $scope.igor = { name: 'Igor', address: '123 Somewhere' };
        }])
        .directive('myCustomer', function() {
          return {
            restrict: 'E',
            scope: {
              customerInfo: '=info'
            },
            templateUrl: 'my-customer-iso.html'
          };
        });
      +
      + +
      +
      <div ng-controller="Controller">
        <my-customer info="naomi"></my-customer>
        <hr>
        <my-customer info="igor"></my-customer>
      </div>
      +
      + +
      +
      Name: {{customerInfo.name}} Address: {{customerInfo.address}}
      +
      + + + +
      +
      + + +

      +

      Looking at index.html, the first <my-customer> element binds the info attribute to naomi, +which we have exposed on our controller's scope. The second binds info to igor.

      +

      Let's take a closer look at the scope option:

      +
      //...
      +scope: {
      +  customerInfo: '=info'
      +},
      +//...
      +
      +

      The scope option is an object that contains a property for each isolate scope binding. In this +case it has just one property:

      +
        +
      • Its name (customerInfo) corresponds to the +directive's isolate scope property customerInfo.
      • +
      • Its value (=info) tells $compile to bind to the info attribute.
      • +
      +
      +Note: These =attr attributes in the scope option of directives are normalized just like +directive names. To bind to the attribute in <div bind-to-this="thing">, you'd specify a binding +of =bindToThis. +
      + +

      For cases where the attribute name is the same as the value you want to bind to inside the +directive's scope, you can use this shorthand syntax:

      +
      ...
      +scope: {
      +  // same as '=customer'
      +  customer: '='
      +},
      +...
      +
      +

      Besides making it possible to bind different data to the scope inside a directive, using an isolated +scope has another effect.

      +

      We can show this by adding another property, vojta, to our scope and trying to access it from +within our directive's template:

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('docsIsolationExample', [])
        .controller('Controller', ['$scope', function($scope) {
          $scope.naomi = { name: 'Naomi', address: '1600 Amphitheatre' };
          $scope.vojta = { name: 'Vojta', address: '3456 Somewhere Else' };
        }])
        .directive('myCustomer', function() {
          return {
            restrict: 'E',
            scope: {
              customerInfo: '=info'
            },
            templateUrl: 'my-customer-plus-vojta.html'
          };
        });
      +
      + +
      +
      <div ng-controller="Controller">
        <my-customer info="naomi"></my-customer>
      </div>
      +
      + +
      +
      Name: {{customerInfo.name}} Address: {{customerInfo.address}}
      <hr>
      Name: {{vojta.name}} Address: {{vojta.address}}
      +
      + + + +
      +
      + + +

      +

      Notice that {{vojta.name}} and {{vojta.address}} are empty, meaning they are undefined. +Although we defined vojta in the controller, it's not available within the directive.

      +

      As the name suggests, the isolate scope of the directive isolates everything except models that +you've explicitly added to the scope: {} hash object. This is helpful when building reusable +components because it prevents a component from changing your model state except for the models +that you explicitly pass in.

      +
      +Note: Normally, a scope prototypically inherits from its parent. An isolated scope does not. +See the "Directive Definition Object - scope" section for more information about isolate scopes. +
      + +
      +Best Practice: Use the scope option to create isolate scopes when making components that you +want to reuse throughout your app. +
      + + +

      Creating a Directive that Manipulates the DOM

      +

      In this example we will build a directive that displays the current time. +Once a second, it updates the DOM to reflect the current time.

      +

      Directives that want to modify the DOM typically use the link option. +link takes a function with the following signature, function link(scope, element, attrs) { ... } +where:

      +
        +
      • scope is an Angular scope object.
      • +
      • element is the jqLite-wrapped element that this directive matches.
      • +
      • attrs is a hash object with key-value pairs of normalized attribute names and their +corresponding attribute values.
      • +
      +

      In our link function, we want to update the displayed time once a second, or whenever a user +changes the time formatting string that our directive binds to. We will use the $interval service +to call a handler on a regular basis. This is easier than using $timeout but also works better with +end-to-end testing, where we want to ensure that all $timeouts have completed before completing the test. +We also want to remove the $interval if the directive is deleted so we don't introduce a memory leak.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('docsTimeDirective', [])
        .controller('Controller', ['$scope', function($scope) {
          $scope.format = 'M/d/yy h:mm:ss a';
        }])
        .directive('myCurrentTime', ['$interval', 'dateFilter', function($interval, dateFilter) {
      
          function link(scope, element, attrs) {
            var format,
                timeoutId;
      
            function updateTime() {
              element.text(dateFilter(new Date(), format));
            }
      
            scope.$watch(attrs.myCurrentTime, function(value) {
              format = value;
              updateTime();
            });
      
            element.on('$destroy', function() {
              $interval.cancel(timeoutId);
            });
      
            // start the UI update process; save the timeoutId for canceling
            timeoutId = $interval(function() {
              updateTime(); // update DOM
            }, 1000);
          }
      
          return {
            link: link
          };
        }]);
      +
      + +
      +
      <div ng-controller="Controller">
        Date format: <input ng-model="format"> <hr/>
        Current time is: <span my-current-time="format"></span>
      </div>
      +
      + + + +
      +
      + + +

      +

      There are a couple of things to note here. +Just like the module.controller API, the function argument in module.directive is dependency +injected. Because of this, we can use $interval and dateFilter inside our directive's link +function.

      +

      We register an event element.on('$destroy', ...). What fires this $destroy event?

      +

      There are a few special events that AngularJS emits. When a DOM node that has been compiled +with Angular's compiler is destroyed, it emits a $destroy event. Similarly, when an AngularJS +scope is destroyed, it broadcasts a $destroy event to listening scopes.

      +

      By listening to this event, you can remove event listeners that might cause memory leaks. +Listeners registered to scopes and elements are automatically cleaned up when they are destroyed, +but if you registered a listener on a service, or registered a listener on a DOM node that isn't +being deleted, you'll have to clean it up yourself or you risk introducing a memory leak.

      +
      +Best Practice: Directives should clean up after themselves. You can use +element.on('$destroy', ...) or scope.$on('$destroy', ...) to run a clean-up function when the +directive is removed. +
      + + +

      Creating a Directive that Wraps Other Elements

      +

      We've seen that you can pass in models to a directive using the isolate scope, but sometimes +it's desirable to be able to pass in an entire template rather than a string or an object. +Let's say that we want to create a "dialog box" component. The dialog box should be able to +wrap any arbitrary content.

      +

      To do this, we need to use the transclude option.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('docsTransclusionDirective', [])
        .controller('Controller', ['$scope', function($scope) {
          $scope.name = 'Tobias';
        }])
        .directive('myDialog', function() {
          return {
            restrict: 'E',
            transclude: true,
            templateUrl: 'my-dialog.html'
          };
        });
      +
      + +
      +
      <div ng-controller="Controller">
        <my-dialog>Check out the contents, {{name}}!</my-dialog>
      </div>
      +
      + +
      +
      <div class="alert" ng-transclude>
      </div>
      +
      + + + +
      +
      + + +

      +

      What does this transclude option do, exactly? transclude makes the contents of a directive with +this option have access to the scope outside of the directive rather than inside.

      +

      To illustrate this, see the example below. Notice that we've added a link function in script.js +that redefines name as Jeff. What do you think the {{name}} binding will resolve to now?

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('docsTransclusionExample', [])
        .controller('Controller', ['$scope', function($scope) {
          $scope.name = 'Tobias';
        }])
        .directive('myDialog', function() {
          return {
            restrict: 'E',
            transclude: true,
            scope: {},
            templateUrl: 'my-dialog.html',
            link: function (scope, element) {
              scope.name = 'Jeff';
            }
          };
        });
      +
      + +
      +
      <div ng-controller="Controller">
        <my-dialog>Check out the contents, {{name}}!</my-dialog>
      </div>
      +
      + +
      +
      <div class="alert" ng-transclude>
      </div>
      +
      + + + +
      +
      + + +

      +

      Ordinarily, we would expect that {{name}} would be Jeff. However, we see in this example that +the {{name}} binding is still Tobias.

      +

      The transclude option changes the way scopes are nested. It makes it so that the contents of a +transcluded directive have whatever scope is outside the directive, rather than whatever scope is on +the inside. In doing so, it gives the contents access to the outside scope.

      +

      Note that if the directive did not create its own scope, then scope in scope.name = 'Jeff'; would +reference the outside scope and we would see Jeff in the output.

      +

      This behavior makes sense for a directive that wraps some content, because otherwise you'd have to +pass in each model you wanted to use separately. If you have to pass in each model that you want to +use, then you can't really have arbitrary contents, can you?

      +
      +Best Practice: only use transclude: true when you want to create a directive that wraps +arbitrary content. +
      + +

      Next, we want to add buttons to this dialog box, and allow someone using the directive to bind their +own behavior to it.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('docsIsoFnBindExample', [])
        .controller('Controller', ['$scope', '$timeout', function($scope, $timeout) {
          $scope.name = 'Tobias';
          $scope.hideDialog = function () {
            $scope.dialogIsHidden = true;
            $timeout(function () {
              $scope.dialogIsHidden = false;
            }, 2000);
          };
        }])
        .directive('myDialog', function() {
          return {
            restrict: 'E',
            transclude: true,
            scope: {
              'close': '&onClose'
            },
            templateUrl: 'my-dialog-close.html'
          };
        });
      +
      + +
      +
      <div ng-controller="Controller">
        <my-dialog ng-hide="dialogIsHidden" on-close="hideDialog()">
          Check out the contents, {{name}}!
        </my-dialog>
      </div>
      +
      + +
      +
      <div class="alert">
        <a href class="close" ng-click="close()">&times;</a>
        <div ng-transclude></div>
      </div>
      +
      + + + +
      +
      + + +

      +

      We want to run the function we pass by invoking it from the directive's scope, but have it run +in the context of the scope where it's registered.

      +

      We saw earlier how to use =attr in the scope option, but in the above example, we're using +&attr instead. The & binding allows a directive to trigger evaluation of an expression in +the context of the original scope, at a specific time. Any legal expression is allowed, including +an expression which contains a function call. Because of this, & bindings are ideal for binding +callback functions to directive behaviors.

      +

      When the user clicks the x in the dialog, the directive's close function is called, thanks to +ng-click. This call to close on the isolated scope actually evaluates the expression +hideDialog() in the context of the original scope, thus running Controller's hideDialog +function.

      +
      +Best Practice: use &attr in the scope option when you want your directive +to expose an API for binding to behaviors. +
      + + +

      Creating a Directive that Adds Event Listeners

      +

      Previously, we used the link function to create a directive that manipulated its +DOM elements. Building upon that example, let's make a directive that reacts to events on +its elements.

      +

      For instance, what if we wanted to create a directive that lets a user drag an +element?

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('dragModule', [])
        .directive('myDraggable', ['$document', function($document) {
          return function(scope, element, attr) {
            var startX = 0, startY = 0, x = 0, y = 0;
      
            element.css({
             position: 'relative',
             border: '1px solid red',
             backgroundColor: 'lightgrey',
             cursor: 'pointer'
            });
      
            element.on('mousedown', function(event) {
              // Prevent default dragging of selected content
              event.preventDefault();
              startX = event.pageX - x;
              startY = event.pageY - y;
              $document.on('mousemove', mousemove);
              $document.on('mouseup', mouseup);
            });
      
            function mousemove(event) {
              y = event.pageY - startY;
              x = event.pageX - startX;
              element.css({
                top: y + 'px',
                left:  x + 'px'
              });
            }
      
            function mouseup() {
              $document.unbind('mousemove', mousemove);
              $document.unbind('mouseup', mouseup);
            }
          };
        }]);
      +
      + +
      +
      <span my-draggable>Drag ME</span>
      +
      + + + +
      +
      + + +

      +

      Creating Directives that Communicate

      +

      You can compose any directives by using them within templates.

      +

      Sometimes, you want a component that's built from a combination of directives.

      +

      Imagine you want to have a container with tabs in which the contents of the container correspond +to which tab is active.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('docsTabsExample', [])
        .directive('myTabs', function() {
          return {
            restrict: 'E',
            transclude: true,
            scope: {},
            controller: function($scope) {
              var panes = $scope.panes = [];
      
              $scope.select = function(pane) {
                angular.forEach(panes, function(pane) {
                  pane.selected = false;
                });
                pane.selected = true;
              };
      
              this.addPane = function(pane) {
                if (panes.length === 0) {
                  $scope.select(pane);
                }
                panes.push(pane);
              };
            },
            templateUrl: 'my-tabs.html'
          };
        })
        .directive('myPane', function() {
          return {
            require: '^myTabs',
            restrict: 'E',
            transclude: true,
            scope: {
              title: '@'
            },
            link: function(scope, element, attrs, tabsCtrl) {
              tabsCtrl.addPane(scope);
            },
            templateUrl: 'my-pane.html'
          };
        });
      +
      + +
      +
      <my-tabs>
        <my-pane title="Hello">
          <h4>Hello</h4>
          <p>Lorem ipsum dolor sit amet</p>
        </my-pane>
        <my-pane title="World">
          <h4>World</h4>
          <em>Mauris elementum elementum enim at suscipit.</em>
          <p><a href ng-click="i = i + 1">counter: {{i || 0}}</a></p>
        </my-pane>
      </my-tabs>
      +
      + +
      +
      <div class="tabbable">
        <ul class="nav nav-tabs">
          <li ng-repeat="pane in panes" ng-class="{active:pane.selected}">
            <a href="" ng-click="select(pane)">{{pane.title}}</a>
          </li>
        </ul>
        <div class="tab-content" ng-transclude></div>
      </div>
      +
      + +
      +
      <div class="tab-pane" ng-show="selected" ng-transclude>
      </div>
      +
      + + + +
      +
      + + +

      +

      The myPane directive has a require option with value ^myTabs. When a directive uses this +option, $compile will throw an error unless the specified controller is found. The ^ prefix +means that this directive searches for the controller on its parents (without the ^ prefix, the +directive would look for the controller on just its own element).

      +

      So where does this myTabs controller come from? Directives can specify controllers using +the unsurprisingly named controller option. As you can see, the myTabs directive uses this +option. Just like ngController, this option attaches a controller to the template of the directive.

      +

      If it is necessary to reference the controller or any functions bound to the controller's scope in +the template, you can use the option controllerAs to specify the name of the controller as an alias. +The directive needs to define a scope for this configuration to be used. This is particularly useful +in the case when the directive is used as a component.

      +

      Looking back at myPane's definition, notice the last argument in its link function: tabsCtrl. +When a directive requires a controller, it receives that controller as the fourth argument of its +link function. Taking advantage of this, myPane can call the addPane function of myTabs.

      +

      If multiple controllers are required, the require option of the directive can take an array argument. +The corresponding parameter being sent to the link function will also be an array.

      +
      angular.module('docsTabsExample', [])
      +.directive('myPane', function() {
      +  return {
      +    require: ['^myTabs', '^ngModel'],
      +    restrict: 'E',
      +    transclude: true,
      +    scope: {
      +      title: '@'
      +    },
      +    link: function(scope, element, attrs, controllers) {
      +      var tabsCtrl = controllers[0],
      +          modelCtrl = controllers[1];
      +
      +      tabsCtrl.addPane(scope);
      +    },
      +    templateUrl: 'my-pane.html'
      +  };
      +});
      +
      +

      Savvy readers may be wondering what the difference is between link and controller. +The basic difference is that controller can expose an API, and link functions can interact with +controllers using require.

      +
      +Best Practice: use controller when you want to expose an API to other directives. +Otherwise use link. +
      + +

      Summary

      +

      Here we've seen the main use cases for directives. Each of these samples acts as a good starting +point for creating your own directives.

      +

      You might also be interested in an in-depth explanation of the compilation process that's +available in the compiler guide.

      +

      The $compile API page has a comprehensive list of directive options for +reference.

      + + diff --git a/1.2.30/docs/partials/guide/e2e-testing.html b/1.2.30/docs/partials/guide/e2e-testing.html new file mode 100644 index 0000000000..46004b611e --- /dev/null +++ b/1.2.30/docs/partials/guide/e2e-testing.html @@ -0,0 +1,69 @@ + Improve this Doc + + +

      E2E Testing

      +
      +Note: In the past, end-to-end testing could be done with a deprecated tool called +Angular Scenario Runner. That tool +is now in maintenance mode. +
      + +

      As applications grow in size and complexity, it becomes unrealistic to rely on manual testing to +verify the correctness of new features, catch bugs and notice regressions. End to end tests +are the first line of defense for catching bugs, but sometimes issues come up with integration +between components which can't be captured in a unit test. End-to-end tests are made to find +these problems.

      +

      We have built Protractor, an end +to end test runner which simulates user interactions that will help you verify the health of your +Angular application.

      +

      Using Protractor

      +

      Protractor is a Node.js program, and runs end-to-end tests that are also +written in JavaScript and run with node. Protractor uses WebDriver +to control browsers and simulate user actions.

      +

      For more information on Protractor, view getting started +or the api docs.

      +

      Protractor uses Jasmine for its test syntax. +As in unit testing, a test file is comprised of one or +more it blocks that describe the requirements of your application. it blocks are made of +commands and expectations. Commands tell Protractor to do something with the application +such as navigate to a page or click on a button. Expectations tell Protractor to assert something +about the application's state, such as the value of a field or the current URL.

      +

      If any expectation within an it block fails, the runner marks the it as "failed" and continues +on to the next block.

      +

      Test files may also have beforeEach and afterEach blocks, which will be run before or after +each it block regardless of whether the block passes or fails.

      +

      +

      In addition to the above elements, tests may also contain helper functions to avoid duplicating +code in the it blocks.

      +

      Here is an example of a simple test:

      +
      describe('TODO list', function() {
      +it('should filter results', function() {
      +
      +  // Find the element with ng-model="user" and type "jacksparrow" into it
      +  element(by.model('user')).sendKeys('jacksparrow');
      +
      +  // Find the first (and only) button on the page and click it
      +  element(by.css(':button')).click();
      +
      +  // Verify that there are 10 tasks
      +  expect(element.all(by.repeater('task in tasks')).count()).toEqual(10);
      +
      +  // Enter 'groceries' into the element with ng-model="filterText"
      +  element(by.model('filterText')).sendKeys('groceries');
      +
      +  // Verify that now there is only one item in the task list
      +  expect(element.all(by.repeater('task in tasks')).count()).toEqual(1);
      +});
      +});
      +
      +

      This test describes the requirements of a ToDo list, specifically, that it should be able to +filter the list of items.

      +

      Example

      +

      See the angular-seed project for more examples, or look +at the embedded examples in the Angular documentation (For example, $http +has an end-to-end test in the example under the protractor.js tag).

      +

      Caveats

      +

      Protractor does not work out-of-the-box with apps that bootstrap manually using +angular.bootstrap. You must use the ng-app directive.

      + + diff --git a/1.2.30/docs/partials/guide/expression.html b/1.2.30/docs/partials/guide/expression.html new file mode 100644 index 0000000000..9b040613f4 --- /dev/null +++ b/1.2.30/docs/partials/guide/expression.html @@ -0,0 +1,220 @@ + Improve this Doc + + +

      Angular Expressions

      +

      Angular expressions are JavaScript-like code snippets that are usually placed in bindings such as +{{ expression }}.

      +

      For example, these are valid expressions in Angular:

      +
        +
      • 1+2
      • +
      • a+b
      • +
      • user.name
      • +
      • items[index]
      • +
      +

      Angular Expressions vs. JavaScript Expressions

      +

      Angular expressions are like JavaScript expressions with the following differences:

      +
        +
      • Context: JavaScript expressions are evaluated against the global window. +In Angular, expressions are evaluated against a scope object.

        +
      • +
      • Forgiving: In JavaScript, trying to evaluate undefined properties generates ReferenceError +or TypeError. In Angular, expression evaluation is forgiving to undefined and null.

        +
      • +
      • No Control Flow Statements: You cannot use the following in an Angular expression: +conditionals, loops, or exceptions.

        +
      • +
      • No Function Declarations: You cannot decleare functions in an Angular expression. +Even inside ng-init directive

        +
      • +
      • No RegExp Creation With Literal Notation: You cannot create regular expressions +in an Angular expression.

        +
      • +
      • No Comma And Void Operators: You cannot use , or void in an Angular expression.

        +
      • +
      • Filters: You can use filters within expressions to format data before +displaying it.

        +
      • +
      +

      If you want to run more complex JavaScript code, you should make it a controller method and call +the method from your view. If you want to eval() an Angular expression yourself, use the +$eval() method.

      +

      Example

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <span>
        1+2={{1+2}}
      </span>
      +
      + +
      +
      it('should calculate expression in binding', function() {
        expect(element(by.binding('1+2')).getText()).toEqual('1+2=3');
      });
      +
      + + + +
      +
      + + +

      +

      You can try evaluating different expressions here:

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="ExampleController" class="expressions">
        Expression:
        <input type='text' ng-model="expr" size="80"/>
        <button ng-click="addExp(expr)">Evaluate</button>
        <ul>
         <li ng-repeat="expr in exprs track by $index">
           [ <a href="" ng-click="removeExp($index)">X</a> ]
           <tt>{{expr}}</tt> => <span ng-bind="$parent.$eval(expr)"></span>
          </li>
        </ul>
      </div>
      +
      + +
      +
      angular.module('expressionExample', [])
        .controller('ExampleController', ['$scope', function($scope) {
          var exprs = $scope.exprs = [];
          $scope.expr = '3*10|currency';
          $scope.addExp = function(expr) {
            exprs.push(expr);
          };
      
          $scope.removeExp = function(index) {
            exprs.splice(index, 1);
          };
        }]);
      +
      + +
      +
      it('should allow user expression testing', function() {
        element(by.css('.expressions button')).click();
        var lis = element(by.css('.expressions ul')).all(by.repeater('expr in exprs'));
        expect(lis.count()).toBe(1);
        expect(lis.get(0).getText()).toEqual('[ X ] 3*10|currency => $30.00');
      });
      +
      + + + +
      +
      + + +

      +

      Context

      +

      Angular does not use JavaScript's eval() to evaluate expressions. Instead Angular's +$parse service processes these expressions.

      +

      Angular expressions do not have access to global variables like window, document or location. +This restriction is intentional. It prevents accidental access to the global state – a common source of subtle bugs.

      +

      Instead use services like $window and $location in functions called from expressions. Such services +provide mockable access to globals.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div class="example2" ng-controller="ExampleController">
        Name: <input ng-model="name" type="text"/>
        <button ng-click="greet()">Greet</button>
        <button ng-click="window.alert('Should not see me')">Won't greet</button>
      </div>
      +
      + +
      +
      angular.module('expressionExample', [])
        .controller('ExampleController', ['$window', '$scope', function($window, $scope) {
          $scope.name = 'World';
      
          $scope.greet = function() {
            $window.alert('Hello ' + $scope.name);
          };
        }]);
      +
      + +
      +
      it('should calculate expression in binding', function() {
        if (browser.params.browser == 'safari') {
          // Safari can't handle dialogs.
          return;
        }
        element(by.css('[ng-click="greet()"]')).click();
      
        var alertDialog = browser.switchTo().alert();
      
        expect(alertDialog.getText()).toEqual('Hello World');
      
        alertDialog.accept();
      });
      +
      + + + +
      +
      + + +

      +

      Forgiving

      +

      Expression evaluation is forgiving to undefined and null. In JavaScript, evaluating a.b.c throws +an exception if a is not an object. While this makes sense for a general purpose language, the +expression evaluations are primarily used for data binding, which often look like this:

      +
      {{a.b.c}}
      +
      +

      It makes more sense to show nothing than to throw an exception if a is undefined (perhaps we are +waiting for the server response, and it will become defined soon). If expression evaluation wasn't +forgiving we'd have to write bindings that clutter the code, for example: {{((a||{}).b||{}).c}}

      +

      Similarly, invoking a function a.b.c() on undefined or null simply returns undefined.

      +

      No Control Flow Statements

      +

      Apart from the ternary operator (a ? b : c), you cannot write a control flow statement in an +expression. The reason behind this is core to the Angular philosophy that application logic should +be in controllers, not the views. If you need a real conditional, loop, or to throw from a view +expression, delegate to a JavaScript method instead.

      +

      No function declarations or RegExp creation with literal notation

      +

      You can't declare functions or create regular expressions from within AngularJS expressions. This is +to avoid complex model transformation logic inside templates. Such logic is better placed in a +controller or in a dedicated filter where it can be tested properly.

      +

      $event

      +

      Directives like ngClick and ngFocus +expose a $event object within the scope of that expression.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="EventController">
        <button ng-click="clickMe($event)">Event</button>
        <p><code>$event</code>: <pre> {{$event | json}}</pre></p>
        <p><code>clickEvent</code>: <pre>{{clickEvent | json}}</pre></p>
      </div>
      +
      + +
      +
      angular.module('eventExampleApp', []).
        controller('EventController', ['$scope', function($scope) {
          /*
           * expose the event object to the scope
           */
          $scope.clickMe = function(clickEvent) {
            $scope.clickEvent = simpleKeys(clickEvent);
            console.log(clickEvent);
          };
      
          /*
           * return a copy of an object with only non-object keys
           * we need this to avoid circular references
           */
          function simpleKeys (original) {
            return Object.keys(original).reduce(function (obj, key) {
              obj[key] = typeof original[key] === 'object' ? '{ ... }' : original[key];
              return obj;
            }, {});
          }
        }]);
      +
      + + + +
      +
      + + +

      +

      Note in the example above how we can pass in $event to clickMe, but how it does not show up +in {{$event}}. This is because $event is outside the scope of that binding.

      + + diff --git a/1.2.30/docs/partials/guide/filter.html b/1.2.30/docs/partials/guide/filter.html new file mode 100644 index 0000000000..8f4d2bf104 --- /dev/null +++ b/1.2.30/docs/partials/guide/filter.html @@ -0,0 +1,113 @@ + Improve this Doc + + +

      A filter formats the value of an expression for display to the user. They can be used in view templates, +controllers or services and it is easy to define your own filter.

      +

      The underlying API is the filterProvider.

      +

      Using filters in view templates

      +

      Filters can be applied to expressions in view templates using the following syntax:

      +
      {{ expression | filter }}
      +
      +

      E.g. the markup {{ 12 | currency }} formats the number 12 as a currency using the currency +filter. The resulting value is $12.00.

      +

      Filters can be applied to the result of another filter. This is called "chaining" and uses +the following syntax:

      +
      {{ expression | filter1 | filter2 | ... }}
      +
      +

      Filters may have arguments. The syntax for this is

      +
      {{ expression | filter:argument1:argument2:... }}
      +
      +

      E.g. the markup {{ 1234 | number:2 }} formats the number 1234 with 2 decimal points using the +number filter. The resulting value is 1,234.00.

      +

      Using filters in controllers, services, and directives

      +

      You can also use filters in controllers, services, and directives. For this, inject a dependency +with the name <filterName>Filter to your controller/service/directive. E.g. using the dependency +numberFilter will inject the number filter. The injected argument is a function that takes the +value to format as first argument and filter parameters starting with the second argument.

      +

      The example below uses the filter called filter. +This filter reduces arrays into sub arrays based on +conditions. The filter can be applied in the view template with markup like +{{ctrl.array | filter:'a'}}, which would do a fulltext search for "a". +However, using a filter in a view template will reevaluate the filter on +every digest, which can be costly if the array is big.

      +

      The example below therefore calls the filter directly in the controller. +By this, the controller is able to call the filter only when needed (e.g. when the data is loaded from the backend +or the filter expression is changed).

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="FilterController as ctrl">
        <div>
          All entries:
          <span ng-repeat="entry in ctrl.array">{{entry.name}} </span>
        </div>
        <div>
          Entries that contain an "a":
          <span ng-repeat="entry in ctrl.filteredArray">{{entry.name}} </span>
        </div>
      </div>
      +
      + +
      +
      angular.module('FilterInControllerModule', []).
        controller('FilterController', ['filterFilter', function(filterFilter) {
          this.array = [
            {name: 'Tobias'},
            {name: 'Jeff'},
            {name: 'Brian'},
            {name: 'Igor'},
            {name: 'James'},
            {name: 'Brad'}
          ];
          this.filteredArray = filterFilter(this.array, 'a');
        }]);
      +
      + + + +
      +
      + + +

      +

      Creating custom filters

      +

      Writing your own filter is very easy: just register a new filter factory function with +your module. Internally, this uses the filterProvider. +This factory function should return a new filter function which takes the input value +as the first argument. Any filter arguments are passed in as additional arguments to the filter +function.

      +

      The following sample filter reverses a text string. In addition, it conditionally makes the +text upper-case.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="Controller">
        <input ng-model="greeting" type="text"><br>
        No filter: {{greeting}}<br>
        Reverse: {{greeting|reverse}}<br>
        Reverse + uppercase: {{greeting|reverse:true}}<br>
      </div>
      +
      + +
      +
      angular.module('myReverseModule', [])
        .filter('reverse', function() {
          return function(input, uppercase) {
            input = input || '';
            var out = "";
            for (var i = 0; i < input.length; i++) {
              out = input.charAt(i) + out;
            }
            // conditional based on optional argument
            if (uppercase) {
              out = out.toUpperCase();
            }
            return out;
          };
        })
        .controller('Controller', ['$scope', function($scope) {
          $scope.greeting = 'hello';
        }]);
      +
      + + + +
      +
      + + +

      +

      Testing custom filters

      +

      See the phonecat tutorial for an example.

      + + diff --git a/1.2.30/docs/partials/guide/forms.html b/1.2.30/docs/partials/guide/forms.html new file mode 100644 index 0000000000..15e8af1ae5 --- /dev/null +++ b/1.2.30/docs/partials/guide/forms.html @@ -0,0 +1,230 @@ + Improve this Doc + + +

      Controls (input, select, textarea) are ways for a user to enter data. +A Form is a collection of controls for the purpose of grouping related controls together.

      +

      Form and controls provide validation services, so that the user can be notified of invalid input. +This provides a better user experience, because the user gets instant feedback on how to correct the error. +Keep in mind that while client-side validation plays an important role in providing good user experience, it can easily be circumvented and thus can not be trusted. +Server-side validation is still necessary for a secure application.

      +

      Simple form

      +

      The key directive in understanding two-way data-binding is ngModel. +The ngModel directive provides the two-way data-binding by synchronizing the model to the view, as well as view to the model. +In addition it provides an API for other directives to augment its behavior.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="ExampleController">
        <form novalidate class="simple-form">
          Name: <input type="text" ng-model="user.name" /><br />
          E-mail: <input type="email" ng-model="user.email" /><br />
          Gender: <input type="radio" ng-model="user.gender" value="male" />male
          <input type="radio" ng-model="user.gender" value="female" />female<br />
          <button ng-click="reset()">RESET</button>
          <button ng-click="update(user)">SAVE</button>
        </form>
        <pre>form = {{user | json}}</pre>
        <pre>master = {{master | json}}</pre>
      </div>
      
      <script>
        angular.module('formExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.master = {};
      
            $scope.update = function(user) {
              $scope.master = angular.copy(user);
            };
      
            $scope.reset = function() {
              $scope.user = angular.copy($scope.master);
            };
      
            $scope.reset();
          }]);
      </script>
      +
      + + + +
      +
      + + +

      +

      Note that novalidate is used to disable browser's native form validation.

      +

      Using CSS classes

      +

      To allow styling of form as well as controls, ngModel adds these CSS classes:

      +
        +
      • ng-valid
      • +
      • ng-invalid
      • +
      • ng-pristine
      • +
      • ng-dirty
      • +
      +

      The following example uses the CSS to display validity of each form control. +In the example both user.name and user.email are required, but are rendered with red background only when they are dirty. +This ensures that the user is not distracted with an error until after interacting with the control, and failing to satisfy its validity.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="ExampleController">
        <form novalidate class="css-form">
          Name:
            <input type="text" ng-model="user.name" required /><br />
          E-mail: <input type="email" ng-model="user.email" required /><br />
          Gender: <input type="radio" ng-model="user.gender" value="male" />male
          <input type="radio" ng-model="user.gender" value="female" />female<br />
          <button ng-click="reset()">RESET</button>
          <button ng-click="update(user)">SAVE</button>
        </form>
      </div>
      
      <style type="text/css">
        .css-form input.ng-invalid.ng-dirty {
          background-color: #FA787E;
        }
      
        .css-form input.ng-valid.ng-dirty {
          background-color: #78FA89;
        }
      </style>
      
      <script>
        angular.module('formExample', [])
          .controller('ExampleController', ['$scope', function($scope) {
            $scope.master = {};
      
            $scope.update = function(user) {
              $scope.master = angular.copy(user);
            };
      
            $scope.reset = function() {
              $scope.user = angular.copy($scope.master);
            };
      
            $scope.reset();
          }]);
      </script>
      +
      + + + +
      +
      + + +

      +

      Binding to form and control state

      +

      A form is an instance of FormController. +The form instance can optionally be published into the scope using the name attribute.

      +

      Similarly, an input control that has the ngModel directive holds an +instance of NgModelController. +Such a control instance can be published as a property of the form instance using the name attribute +on the input control. The name attribute specifies the name of the property on the form instance.

      +

      This implies that the internal state of both the form and the control is available for binding in +the view using the standard binding primitives.

      +

      This allows us to extend the above example with these features:

      +
        +
      • RESET button is enabled only if form has some changes
      • +
      • SAVE button is enabled only if form has some changes and is valid
      • +
      • custom error messages for user.email and user.agree
      • +
      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="ExampleController">
        <form name="form" class="css-form" novalidate>
          Name:
            <input type="text" ng-model="user.name" name="uName" required /><br />
          E-mail:
            <input type="email" ng-model="user.email" name="uEmail" required/><br />
          <div ng-show="form.uEmail.$dirty && form.uEmail.$invalid">Invalid:
            <span ng-show="form.uEmail.$error.required">Tell us your email.</span>
            <span ng-show="form.uEmail.$error.email">This is not a valid email.</span>
          </div>
      
          Gender: <input type="radio" ng-model="user.gender" value="male" />male
          <input type="radio" ng-model="user.gender" value="female" />female<br />
      
          <input type="checkbox" ng-model="user.agree" name="userAgree" required />
          I agree: <input ng-show="user.agree" type="text" ng-model="user.agreeSign"
                    required /><br />
          <div ng-show="!user.agree || !user.agreeSign">Please agree and sign.</div>
      
          <button ng-click="reset()" ng-disabled="isUnchanged(user)">RESET</button>
          <button ng-click="update(user)"
                  ng-disabled="form.$invalid || isUnchanged(user)">SAVE</button>
        </form>
      </div>
      +
      + +
      +
      angular.module('formExample', [])
        .controller('ExampleController', ['$scope', function($scope) {
          $scope.master = {};
      
          $scope.update = function(user) {
            $scope.master = angular.copy(user);
          };
      
          $scope.reset = function() {
            $scope.user = angular.copy($scope.master);
          };
      
          $scope.isUnchanged = function(user) {
            return angular.equals(user, $scope.master);
          };
      
          $scope.reset();
        }]);
      +
      + + + +
      +
      + + +

      +

      Custom Validation

      +

      Angular provides basic implementation for most common html5 input +types: (text, number, url, email, radio, checkbox), as well as some directives for validation (required, pattern, minlength, maxlength, min, max).

      +

      Defining your own validator can be done by defining your own directive which adds a custom validation function to the ngModel controller. +To get a hold of the controller the directive specifies a dependency as shown in the example below. +The validation can occur in two places:

      + +

      In the following example we create two directives.

      +
        +
      • The first one is integer and it validates whether the input is a valid integer. +For example 1.23 is an invalid value, since it contains a fraction. +Note that we unshift the array instead of pushing. +This is because we want it to be the first parser and consume the control string value, as we need to execute the validation function before a conversion to number occurs.

        +
      • +
      • The second directive is a smart-float. +It parses both 1.2 and 1,2 into a valid float number 1.2. +Note that we can't use input type number here as HTML5 browsers would not allow the user to type what it would consider an invalid number such as 1,2.

        +
      • +
      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <form name="form" class="css-form" novalidate>
        <div>
          Size (integer 0 - 10):
          <input type="number" ng-model="size" name="size"
                 min="0" max="10" integer />{{size}}<br />
          <span ng-show="form.size.$error.integer">This is not valid integer!</span>
          <span ng-show="form.size.$error.min || form.size.$error.max">
            The value must be in range 0 to 10!</span>
        </div>
      
        <div>
          Length (float):
          <input type="text" ng-model="length" name="length" smart-float />
          {{length}}<br />
          <span ng-show="form.length.$error.float">
            This is not a valid float number!</span>
        </div>
      </form>
      +
      + +
      +
      var app = angular.module('form-example1', []);
      
      var INTEGER_REGEXP = /^\-?\d+$/;
      app.directive('integer', function() {
        return {
          require: 'ngModel',
          link: function(scope, elm, attrs, ctrl) {
            ctrl.$parsers.unshift(function(viewValue) {
              if (INTEGER_REGEXP.test(viewValue)) {
                // it is valid
                ctrl.$setValidity('integer', true);
                return viewValue;
              } else {
                // it is invalid, return undefined (no model update)
                ctrl.$setValidity('integer', false);
                return undefined;
              }
            });
          }
        };
      });
      
      var FLOAT_REGEXP = /^\-?\d+((\.|\,)\d+)?$/;
      app.directive('smartFloat', function() {
        return {
          require: 'ngModel',
          link: function(scope, elm, attrs, ctrl) {
            ctrl.$parsers.unshift(function(viewValue) {
              if (FLOAT_REGEXP.test(viewValue)) {
                ctrl.$setValidity('float', true);
                return parseFloat(viewValue.replace(',', '.'));
              } else {
                ctrl.$setValidity('float', false);
                return undefined;
              }
            });
          }
        };
      });
      +
      + + + +
      +
      + + +

      +

      Implementing custom form controls (using ngModel)

      +

      Angular implements all of the basic HTML form controls (input, select, textarea), which should be sufficient for most cases. +However, if you need more flexibility, you can write your own form control as a directive.

      +

      In order for custom control to work with ngModel and to achieve two-way data-binding it needs to:

      +
        +
      • implement $render method, which is responsible for rendering the data after it passed the NgModelController#$formatters,
      • +
      • call $setViewValue method, whenever the user interacts with the control and model needs to be updated. This is usually done inside a DOM Event listener.
      • +
      +

      See $compileProvider.directive for more info.

      +

      The following example shows how to add two-way data-binding to contentEditable elements.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div contentEditable="true" ng-model="content" title="Click to edit">Some</div>
      <pre>model = {{content}}</pre>
      
      <style type="text/css">
        div[contentEditable] {
          cursor: pointer;
          background-color: #D0D0D0;
        }
      </style>
      +
      + +
      +
      angular.module('form-example2', []).directive('contenteditable', function() {
        return {
          require: 'ngModel',
          link: function(scope, elm, attrs, ctrl) {
            // view -> model
            elm.on('blur', function() {
              scope.$apply(function() {
                ctrl.$setViewValue(elm.html());
              });
            });
      
            // model -> view
            ctrl.$render = function() {
              elm.html(ctrl.$viewValue);
            };
      
            // load init value from DOM
            ctrl.$setViewValue(elm.html());
          }
        };
      });
      +
      + + + +
      +
      + + +

      + + diff --git a/1.2.30/docs/partials/guide/i18n.html b/1.2.30/docs/partials/guide/i18n.html new file mode 100644 index 0000000000..ecc67d7121 --- /dev/null +++ b/1.2.30/docs/partials/guide/i18n.html @@ -0,0 +1,93 @@ + Improve this Doc + + +

      i18n and l10n

      +

      Internationalization (i18n) is the process of developing products in such a way that they can be +localized for languages and cultures easily. Localization (l10n), is the process of adapting +applications and text to enable their usability in a particular cultural or linguistic market. For +application developers, internationalizing an application means abstracting all of the strings and +other locale-specific bits (such as date or currency formats) out of the application. Localizing an +application means providing translations and localized formats for the abstracted bits.

      +

      How does Angular support i18n/l10n?

      +

      Angular supports i18n/l10n for date, number and +currency filters.

      +

      Additionally, Angular supports localizable pluralization support through the ngPluralize directive.

      +

      All localizable Angular components depend on locale-specific rule sets managed by the $locale service.

      +

      There a few examples that showcase how to use Angular filters with various locale rule sets in the +i18n/e2e directory of the Angular +source code.

      +

      What is a locale ID?

      +

      A locale is a specific geographical, political, or cultural region. The most commonly used locale +ID consists of two parts: language code and country code. For example, en-US, en-AU, and +zh-CN are all valid locale IDs that have both language codes and country codes. Because +specifying a country code in locale ID is optional, locale IDs such as en, zh, and sk are +also valid. See the ICU website for more information +about using locale IDs.

      +

      Supported locales in Angular

      +

      Angular separates number and datetime format rule sets into different files, each file for a +particular locale. You can find a list of currently supported locales +here

      +

      Providing locale rules to Angular

      +

      There are two approaches to providing locale rules to Angular:

      +

      1. Pre-bundled rule sets

      +

      You can pre-bundle the desired locale file with Angular by concatenating the content of the +locale-specific file to the end of angular.js or angular.min.js file.

      +

      For example on *nix, to create an angular.js file that contains localization rules for german +locale, you can do the following:

      +

      cat angular.js i18n/angular-locale_de-de.js > angular_de-de.js

      +

      When the application containing angular_de-de.js script instead of the generic angular.js script +starts, Angular is automatically pre-configured with localization rules for the german locale.

      +

      2. Including a locale script in index.html

      +

      You can also include the locale specific js file in the index.html page. For example, if one client +requires German locale, you would serve index_de-de.html which will look something like this:

      +
      <html ng-app>
      +<head>
      +….
      +  <script src="angular.js"></script>
      +  <script src="i18n/angular-locale_de-de.js"></script>
      +….
      +</head>
      +</html>
      +
      +

      Comparison of the two approaches

      +

      Both approaches described above require you to prepare different index.html pages or JavaScript +files for each locale that your app may use. You also need to configure your server to serve +the correct file that correspond to the desired locale.

      +

      The second approach (including the locale JavaScript file in index.html) may be slower because +an extra script needs to be loaded.

      +

      Caveats

      +

      Although Angular makes i18n convenient, there are several things you need to be conscious of as you +develop your app.

      +

      Currency symbol

      +

      Angular's currency filter allows you to use the default currency symbol +from the locale service, or you can provide the filter with a custom currency +symbol.

      +
      +Best Practice: If your app will be used only in one locale, it is fine to rely on the default +currency symbol. If you anticipate that viewers in other locales might use your app, you should +explicitly provide a currency symbol. +
      + +

      Let's say you are writing a banking app and you want to display an account balance of 1000 dollars. +You write the following binding using the currency filter:

      +
      {{ 1000 | currency }}
      +
      +

      If your app is currently in the en-US locale, the browser will show $1000.00. If someone in the +Japanese locale (ja) views your app, their browser will show a balance of ¥1000.00 instead. +This is problematic because $1000 is not the same as ¥1000.

      +

      In this case, you need to override the default currency symbol by providing the +currency currency filter with a currency symbol as a parameter.

      +

      If we change the above to {{ 1000 | currency:"USD$"}}, Angular will always show a balance of +USD$1000 regardless of locale.

      +

      Translation length

      +

      Translated strings/datetime formats can vary greatly in length. For example, June 3, 1977 will be +translated to Spanish as 3 de junio de 1977.

      +

      When internationalizing your app, you need to do thorough testing to make sure UI components behave +as expected even when their contents vary greatly in content size.

      +

      Timezones

      +

      The Angular datetime filter uses the time zone settings of the browser. The same +application will show different time information depending on the time zone settings of the +computer that the application is running on. Neither JavaScript nor Angular currently supports +displaying the date with a timezone specified by the developer.

      + + diff --git a/1.2.30/docs/partials/guide/ie.html b/1.2.30/docs/partials/guide/ie.html new file mode 100644 index 0000000000..7675522d49 --- /dev/null +++ b/1.2.30/docs/partials/guide/ie.html @@ -0,0 +1,177 @@ + Improve this Doc + + +

      Internet Explorer Compatibility

      +
      +Note: AngularJS 1.3 is dropping support for IE8. Read more about it on +our blog. +AngularJS 1.2 will continue to support IE8, but the core team does not plan to spend time +addressing issues specific to IE8 or earlier. +
      + +

      This document describes the Internet Explorer (IE) idiosyncrasies when dealing with custom HTML +attributes and tags. Read this document if you are planning on deploying your Angular application +on IE8 or earlier.

      +

      The project currently supports and will attempt to fix bugs for IE9 and above. The continuous +integration server runs all the tests against IE9, IE10, and IE11. See +Travis CI and +ci.angularjs.org.

      +

      We do not run tests on IE8 and below. A subset of the AngularJS functionality may work on these +browsers, but it is up to you to test and decide whether it works for your particular app.

      +

      Short Version

      +

      To make your Angular application work on IE please make sure that:

      +
        +
      1. You polyfill JSON.stringify for IE7 and below. You can use +JSON2 or +JSON3 polyfills for this.

        +
        <!doctype html>
        +<html xmlns:ng="http://angularjs.org">
        +  <head>
        +    <!--[if lte IE 7]>
        +      <script src="/path/to/json2.js"></script>
        +    <![endif]-->
        +  </head>
        +  <body>
        +    ...
        +  </body>
        +</html>
        +
        +
      2. +
      3. add id="ng-app" to the root element in conjunction with ng-app attribute

        +
        <!doctype html>
        +<html xmlns:ng="http://angularjs.org" id="ng-app" ng-app="optionalModuleName">
        +  ...
        +</html>
        +
        +
      4. +
      5. you do not use custom element tags such as <ng:view> (use the attribute version +<div ng-view> instead), or

        +
      6. +
      7. if you do use custom element tags, then you must take these steps to make IE 8 and below happy:

        +
        <!doctype html>
        +<html xmlns:ng="http://angularjs.org" id="ng-app" ng-app="optionalModuleName">
        +  <head>
        +    <!--[if lte IE 8]>
        +      <script>
        +        document.createElement('ng-include');
        +        document.createElement('ng-pluralize');
        +        document.createElement('ng-view');
        +
        +        // Optionally these for CSS
        +        document.createElement('ng:include');
        +        document.createElement('ng:pluralize');
        +        document.createElement('ng:view');
        +      </script>
        +    <![endif]-->
        +  </head>
        +  <body>
        +    ...
        +  </body>
        +</html>
        +
        +
      8. +
      9. Use ng-style tags instead of style="{{ someCss }}". The later works in Chrome and Firefox +but does not work in Internet Explorer <= 11 (the most recent version at time of writing).
      10. +
      +

      The important parts are:

      +
        +
      • xmlns:ng - namespace - you need one namespace for each custom tag you are planning on +using.

        +
      • +
      • document.createElement(yourTagName) - creation of custom tag names - Since this is an +issue only for older version of IE you need to load it conditionally. For each tag which does +not have namespace and which is not defined in HTML you need to pre-declare it to make IE +happy.

        +
      • +
      +

      Long Version

      +

      IE has issues with element tag names which are not standard HTML tag names. These fall into two +categories, and each category has its own fix.

      +
        +
      • If the tag name starts with my: prefix then it is considered an XML namespace and must +have corresponding namespace declaration on <html xmlns:my="ignored">

        +
      • +
      • If the tag has no : but it is not a standard HTML tag, then it must be pre-created using +document.createElement('my-tag')

        +
      • +
      • If you are planning on styling the custom tag with CSS selectors, then it must be +pre-created using document.createElement('my-tag') regardless of XML namespace.

        +
      • +
      +

      The Good News

      +

      The good news is that these restrictions only apply to element tag names, and not to element +attribute names. So this requires no special handling in IE: <div my-tag your:tag></div>.

      +

      What happens if I fail to do this?

      +

      Suppose you have HTML with unknown tag mytag (this could also be my:tag or my-tag with same +result):

      +
      <html>
      +  <body>
      +    <mytag>some text</mytag>
      +  </body>
      +</html>
      +
      +

      It should parse into the following DOM:

      +
      #document
      ++- HTML
      +   +- BODY
      +      +- mytag
      +         +- #text: some text
      +
      +

      The expected behavior is that the BODY element has a child element mytag, which in turn has +the text some text.

      +

      But this is not what IE does (if the above fixes are not included):

      +
      #document
      ++- HTML
      +   +- BODY
      +      +- mytag
      +      +- #text: some text
      +      +- /mytag
      +
      +

      In IE, the behavior is that the BODY element has three children:

      +
        +
      1. A self closing mytag. Example of self closing tag is <br/>. The trailing / is optional, +but the <br> tag is not allowed to have any children, and browsers consider <br>some +text</br> as three siblings not a <br> with some text as child.

        +
      2. +
      3. A text node with some text. This should have been a child of mytag above, not a sibling.

        +
      4. +
      5. A corrupt self closing /mytag. This is corrupt since element names are not allowed to have +the / character. Furthermore this closing element should not be part of the DOM since it is +only used to delineate the structure of the DOM.

        +
      6. +
      +

      CSS Styling of Custom Tag Names

      +

      To make CSS selectors work with custom elements, the custom element name must be pre-created with +document.createElement('my-tag') regardless of XML namespace.

      +
      <html xmlns:ng="needed for ng: namespace">
      +  <head>
      +    <!--[if lte IE 8]>
      +      <script>
      +        // needed to make ng-include parse properly
      +        document.createElement('ng-include');
      +
      +        // needed to enable CSS reference
      +        document.createElement('ng:view');
      +      </script>
      +    <![endif]-->
      +    <style>
      +      ng\:view {
      +        display: block;
      +        border: 1px solid red;
      +      }
      +
      +      ng-include {
      +        display: block;
      +        border: 1px solid blue;
      +      }
      +    </style>
      +  </head>
      +  <body>
      +    <ng:view></ng:view>
      +    <ng-include></ng-include>
      +    ...
      +  </body>
      +</html>
      +
      + + diff --git a/1.2.30/docs/partials/guide/introduction.html b/1.2.30/docs/partials/guide/introduction.html new file mode 100644 index 0000000000..cf7935d0d5 --- /dev/null +++ b/1.2.30/docs/partials/guide/introduction.html @@ -0,0 +1,93 @@ + Improve this Doc + + +

      What Is Angular?

      +

      AngularJS is a structural framework for dynamic web apps. It lets you use HTML as your template +language and lets you extend HTML's syntax to express your application's components clearly and +succinctly. Angular's data binding and dependency injection eliminate much of the code you +would otherwise have to write. And it all happens within the browser, making it +an ideal partner with any server technology.

      +

      Angular is what HTML would have been had it been designed for applications. HTML is a great +declarative language for static documents. It does not contain much in the way of creating +applications, and as a result building web applications is an exercise in what do I have to do +to trick the browser into doing what I want?

      +

      The impedance mismatch between dynamic applications and static documents is often solved with:

      +
        +
      • a library - a collection of functions which are useful when writing web apps. Your code is +in charge and it calls into the library when it sees fit. E.g., jQuery.
      • +
      • frameworks - a particular implementation of a web application, where your code fills in +the details. The framework is in charge and it calls into your code when it needs something +app specific. E.g., durandal, ember, etc.
      • +
      +

      Angular takes another approach. It attempts to minimize the impedance mismatch between document +centric HTML and what an application needs by creating new HTML constructs. Angular teaches the +browser new syntax through a construct we call directives. Examples include:

      +
        +
      • Data binding, as in {{}}.
      • +
      • DOM control structures for repeating/hiding DOM fragments.
      • +
      • Support for forms and form validation.
      • +
      • Attaching new behavior to DOM elements, such as DOM event handling.
      • +
      • Grouping of HTML into reusable components.
      • +
      +

      A complete client-side solution

      +

      Angular is not a single piece in the overall puzzle of building the client-side of a web +application. It handles all of the DOM and AJAX glue code you once wrote by hand and puts it in a +well-defined structure. This makes Angular opinionated about how a CRUD application should be +built. But while it is opinionated, it also tries to make sure that its opinion is just a +starting point you can easily change. Angular comes with the following out-of-the-box:

      +
        +
      • Everything you need to build a CRUD app in a cohesive set: data-binding, basic templating +directives, form validation, routing, deep-linking, reusable components, dependency injection.
      • +
      • Testability story: unit-testing, end-to-end testing, mocks, test harnesses.
      • +
      • Seed application with directory layout and test scripts as a starting point.
      • +
      +

      Angular Sweet Spot

      +

      Angular simplifies application development by presenting a higher level of abstraction to the +developer. Like any abstraction, it comes at a cost of flexibility. In other words not every app +is a good fit for Angular. Angular was built with the CRUD application in mind. Luckily CRUD +applications represent the majority of web applications. To understand what Angular is +good at, though, it helps to understand when an app is not a good fit for Angular.

      +

      Games and GUI editors are examples of applications with intensive and tricky DOM manipulation. +These kinds of apps are different from CRUD apps, and as a result are probably not a good fit for Angular. +In these cases it may be better to use a library with a lower level of abstraction, such as jQuery.

      +

      The Zen of Angular

      +

      Angular is built around the belief that declarative code is better than imperative when it comes +to building UIs and wiring software components together, while imperative code is excellent for +expressing business logic.

      +
        +
      • It is a very good idea to decouple DOM manipulation from app logic. This dramatically improves +the testability of the code.
      • +
      • It is a really, really good idea to regard app testing as equal in importance to app +writing. Testing difficulty is dramatically affected by the way the code is structured.
      • +
      • It is an excellent idea to decouple the client side of an app from the server side. This +allows development work to progress in parallel, and allows for reuse of both sides.
      • +
      • It is very helpful indeed if the framework guides developers through the entire journey of +building an app: from designing the UI, through writing the business logic, to testing.
      • +
      • It is always good to make common tasks trivial and difficult tasks possible.
      • +
      +

      Angular frees you from the following pains:

      +
        +
      • Registering callbacks: Registering callbacks clutters your code, making it hard to see the +forest for the trees. Removing common boilerplate code such as callbacks is a good thing. It +vastly reduces the amount of JavaScript coding you have to do, and it makes it easier to see +what your application does.
      • +
      • Manipulating HTML DOM programmatically: Manipulating HTML DOM is a cornerstone of AJAX +applications, but it's cumbersome and error-prone. By declaratively describing how the UI +should change as your application state changes, you are freed from low-level DOM manipulation +tasks. Most applications written with Angular never have to programmatically manipulate the +DOM, although you can if you want to.
      • +
      • Marshaling data to and from the UI: CRUD operations make up the majority of AJAX +applications' tasks. The flow of marshaling data from the server to an internal object to an HTML +form, allowing users to modify the form, validating the form, displaying validation errors, +returning to an internal model, and then back to the server, creates a lot of boilerplate +code. Angular eliminates almost all of this boilerplate, leaving code that describes the +overall flow of the application rather than all of the implementation details.
      • +
      • Writing tons of initialization code just to get started: Typically you need to write a lot +of plumbing just to get a basic "Hello World" AJAX app working. With Angular you can bootstrap +your app easily using services, which are auto-injected into your application in a +Guice-like dependency-injection style. This allows you +to get started developing features quickly. As a bonus, you get full control over the +initialization process in automated tests.
      • +
      + + diff --git a/1.2.30/docs/partials/guide/migration.html b/1.2.30/docs/partials/guide/migration.html new file mode 100644 index 0000000000..e53b43cba8 --- /dev/null +++ b/1.2.30/docs/partials/guide/migration.html @@ -0,0 +1,530 @@ + Improve this Doc + + +

      Migrating from 1.0 to 1.2

      +

      AngularJS version 1.2 introduces several breaking changes that may require changes to your +application's source code.

      +

      Although we try to avoid breaking changes, there are some cases where it is unavoidable. +AngularJS 1.2 has undergone a thorough security review to make applications safer by default, +which has driven many of these changes. Several new features, especially animations, would not +be possible without a few changes. Finally, some outstanding bugs were best fixed by changing +an existing API.

      +
      +

      Note: AngularJS versions 1.1.x are considered "experimental" with breaking changes between minor releases. +Version 1.2 is the result of several versions on the 1.1 branch, and has a stable API.

      + +

      If you have an application on 1.1 and want to migrate it to 1.2, everything in the guide +below should still apply, but you may want to consult the +changelog as well.

      +
      + + + + +

      ngRoute has been moved into its own module

      +

      Just like ngResource, ngRoute is now its own module.

      +

      Applications that use $route, ngView, and/or $routeParams will now need to load an +angular-route.js file and have their application's module dependency on the ngRoute module.

      +

      Before:

      +
      <script src="angular.js"></script>
      +
      +
      var myApp = angular.module('myApp', ['someOtherModule']);
      +
      +

      After:

      +
      <script src="angular.js"></script>
      +<script src="angular-route.js"></script>
      +
      +
      var myApp = angular.module('myApp', ['ngRoute', 'someOtherModule']);
      +
      +

      See 5599b55b.

      +

      Templates no longer automatically unwrap promises

      +

      $parse and templates in general will no longer automatically unwrap promises.

      +

      Before:

      +
      $scope.foo = $http({method: 'GET', url: '/someUrl'});
      +
      +
      <p>{{foo}}</p>
      +
      +

      After:

      +
      $http({method: 'GET', url: '/someUrl'})
      +.success(function(data) {
      +  $scope.foo = data;
      +});
      +
      +
      <p>{{foo}}</p>
      +
      +

      This feature has been deprecated. If absolutely needed, it can be reenabled for now via the +$parseProvider.unwrapPromises(true) API.

      +

      See 5dc35b52, +b6a37d11.

      +

      Syntax for named wildcard parameters changed in $route

      +

      To migrate the code, follow the example below. Here, *highlight becomes :highlight*

      +

      Before:

      +
      $routeProvider.when('/Book1/:book/Chapter/:chapter/*highlight/edit',
      +{controller: noop, templateUrl: 'Chapter.html'});
      +
      +

      After:

      +
      $routeProvider.when('/Book1/:book/Chapter/:chapter/:highlight*/edit',
      +{controller: noop, templateUrl: 'Chapter.html'});
      +
      +

      See 04cebcc1.

      +

      You can only bind one expression to *[src], *[ng-src] or action

      +

      With the exception of <a> and <img> elements, you cannot bind more than one expression to the +src or action attribute of elements.

      +

      This is one of several improvements to security introduces by Angular 1.2.

      +

      Concatenating expressions makes it hard to understand whether some combination of concatenated +values are unsafe to use and potentially subject to XSS vulnerabilities. To simplify the task of +auditing for XSS issues, we now require that a single expression be used for *[src/ng-src] +bindings such as bindings for iframe[src], object[src], etc. In addition, this requirement is +enforced for form tags with action attributes.

      + + + + + + + + + + + + + + + + + + + + +
      Examples
      <img src="{{a}}/{{b}}">ok
      <iframe src="{{a}}/{{b}}"></iframe>bad
      <iframe src="{{a}}"></iframe>ok
      + + +

      To migrate your code, you can combine multiple expressions using a method attached to your scope.

      +

      Before:

      +
      scope.baseUrl = 'page';
      +scope.a = 1;
      +scope.b = 2;
      +
      +
      <!-- Are a and b properly escaped here? Is baseUrl controlled by user? -->
      +<iframe src="{{baseUrl}}?a={{a}&b={{b}}">
      +
      +

      After:

      +
      var baseUrl = "page";
      +scope.getIframeSrc = function() {
      +
      +  // One should think about their particular case and sanitize accordingly
      +  var qs = ["a", "b"].map(function(value, name) {
      +      return encodeURIComponent(name) + "=" +
      +             encodeURIComponent(value);
      +    }).join("&");
      +
      +  // `baseUrl` isn't exposed to a user's control, so we don't have to worry about escaping it.
      +  return baseUrl + "?" + qs;
      +};
      +
      +
      <iframe src="{{getIframeSrc()}}">
      +
      +

      See 38deedd6.

      +

      Interpolations inside DOM event handlers are now disallowed

      +

      DOM event handlers execute arbitrary Javascript code. Using an interpolation for such handlers +means that the interpolated value is a JS string that is evaluated. Storing or generating such +strings is error prone and leads to XSS vulnerabilities. On the other hand, ngClick and other +Angular specific event handlers evaluate Angular expressions in non-window (Scope) context which +makes them much safer.

      +

      To migrate the code follow the example below:

      +

      Before:

      +
      JS:   scope.foo = 'alert(1)';
      +HTML: <div onclick="{{foo}}">
      +
      +

      After:

      +
      JS:   scope.foo = function() { alert(1); }
      +HTML: <div ng-click="foo()">
      +
      +

      See 39841f2e.

      +

      Directives cannot end with -start or -end

      +

      This change was necessary to enable multi-element directives. The best fix is to rename existing +directives so that they don't end with these suffixes.

      +

      See e46100f7.

      +

      In $q, promise.always has been renamed promise.finally

      +

      The reason for this change is to align $q with the Q promise +library, despite the fact that this makes it a bit more difficult +to use with non-ES5 browsers, like IE8.

      +

      finally also goes well together with the catch API that was added to $q recently and is part +of the DOM promises standard.

      +

      To migrate the code follow the example below.

      +

      Before:

      +
      $http.get('/foo').always(doSomething);
      +
      +

      After:

      +
      $http.get('/foo').finally(doSomething);
      +
      +

      Or for IE8-compatible code:

      +
      $http.get('/foo')['finally'](doSomething);
      +
      +

      See f078762d.

      +

      ngMobile is now ngTouch

      +

      Many touch-enabled devices are not mobile devices, so we decided to rename this module to better +reflect its concerns.

      +

      To migrate, replace all references to ngMobile with ngTouch and angular-mobile.js with +angular-touch.js.

      +

      See 94ec84e7.

      +

      resource.$then has been removed

      +

      Resource instances do not have a $then function anymore. Use the $promise.then instead.

      +

      Before:

      +
      Resource.query().$then(callback);
      +
      +

      After:

      +
      Resource.query().$promise.then(callback);
      +
      +

      See 05772e15.

      +

      Resource methods return the promise

      +

      Methods of a resource instance return the promise rather than the instance itself.

      +

      Before:

      +
      resource.$save().chaining = true;
      +
      +

      After:

      +
      resource.$save();
      +resource.chaining = true;
      +
      +

      See 05772e15.

      +

      Resource promises are resolved with the resource instance

      +

      On success, the resource promise is resolved with the resource instance rather than HTTP response object.

      +

      Use interceptor API to access the HTTP response object.

      +

      Before:

      +
      Resource.query().$then(function(response) {...});
      +
      +

      After:

      +
      var Resource = $resource('/url', {}, {
      +get: {
      +  method: 'get',
      +  interceptor: {
      +    response: function(response) {
      +      // expose response
      +      return response;
      +    }
      +  }
      +}
      +});
      +
      +

      See 05772e15.

      +

      $location.search supports multiple keys

      +

      $location.search now supports multiple keys with the +same value provided that the values are stored in an array.

      +

      Before this change:

      +
        +
      • parseKeyValue only took the last key overwriting all the previous keys.
      • +
      • toKeyValue joined the keys together in a comma delimited string.
      • +
      +

      This was deemed buggy behavior. If your server relied on this behavior then either the server +should be fixed, or a simple serialization of the array should be done on the client before +passing it to $location.

      +

      See 80739409.

      +

      ngBindHtmlUnsafe has been removed and replaced by ngBindHtml

      +

      ngBindHtml provides ngBindHtmlUnsafe like +behavior (evaluate an expression and innerHTML the result into the DOM) when bound to the result +of $sce.trustAsHtml(string). When bound to a plain string, the string is sanitized via +$sanitize before being innerHTML'd. If the $sanitize service isn't available (ngSanitize +module is not loaded) and the bound expression evaluates to a value that is not trusted an +exception is thrown.

      +

      When using this directive you can either include ngSanitize in your module's dependencies (See the +example at the ngBindHtml reference) or use the $sce service to set the value as +trusted.

      +

      See dae69473.

      +

      Form names that are expressions are evaluated

      +

      If you have form names that will evaluate as an expression:

      +
      <form name="ctrl.form">
      +
      +

      And if you are accessing the form from your controller:

      +

      Before:

      +
      function($scope) {
      +$scope['ctrl.form'] // form controller instance
      +}
      +
      +

      After:

      +
      function($scope) {
      +$scope.ctrl.form // form controller instance
      +}
      +
      +

      This makes it possible to access a form from a controller using the new "controller as" syntax. +Supporting the previous behavior offers no benefit.

      +

      See 8ea802a1.

      +

      hasOwnProperty disallowed as an input name

      +

      Inputs with name equal to hasOwnProperty are not allowed inside form or ngForm directives.

      +

      Before, inputs whose name was "hasOwnProperty" were quietly ignored and not added to the scope. +Now a badname exception is thrown. Using "hasOwnProperty" for an input name would be very unusual +and bad practice. To migrate, change your input name.

      +

      See 7a586e5c.

      + +

      The order of postLink fn is now mirror opposite of the order in which corresponding preLinking and compile functions execute.

      +

      Previously the compile/link fns executed in order, sorted by priority:

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      #StepOld Sort OrderNew Sort Order
      1Compile FnsHigh → Low
      2Compile child nodes
      3PreLink FnsHigh → Low
      4Link child nodes
      5PostLink FnsHigh → LowLow → High
      + +

      "High → Low" here refers to the priority option of a directive.

      +

      Very few directives in practice rely on the order of postLinking functions (unlike on the order +of compile functions), so in the rare case of this change affecting an existing directive, it might +be necessary to convert it to a preLinking function or give it negative priority.

      +

      You can look at the diff of this +commit to see how an internal +attribute interpolation directive was adjusted.

      +

      See 31f190d4.

      +

      Directive priority

      +

      the priority of ngRepeat, ngSwitchWhen, ngIf, ngInclude and ngView has changed. This could affect directives that explicitly specify their priority.

      +

      In order to make ngRepeat, ngSwitchWhen, ngIf, ngInclude and ngView work together in all common scenarios their directives are being adjusted to achieve the following precedence:

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      DirectiveOld PriorityNew Priority
      ngRepeat10001000
      ngSwitchWhen500800
      ngIf1000600
      ngInclude1000400
      ngView1000400
      +

      See b7af76b4.

      +

      ngScenario

      +

      browserTrigger now uses an eventData object instead of direct parameters for mouse events. +To migrate, place the keys,x and y parameters inside of an object and place that as the +third parameter for the browserTrigger function.

      +

      See 28f56a38.

      +

      ngInclude and ngView replace its entire element on update

      +

      Previously ngInclude and ngView only updated its element's content. Now these directives will +recreate the element every time a new content is included.

      +

      This ensures that a single rootElement for all the included contents always exists, which makes +definition of css styles for animations much easier.

      +

      See 7d69d52a, +aa2133ad.

      +

      URLs are now sanitized against a whitelist

      +

      A whitelist configured via $compileProvider can be used to configure what URLs are considered safe. +By default all common protocol prefixes are whitelisted including data: URIs with mime types image/*. +This change shouldn't impact apps that don't contain malicious image links.

      +

      See 1adf29af, +3e39ac7e.

      +

      Isolate scope only exposed to directives with scope property

      +

      If you declare a scope option on a directive, that directive will have an +isolate scope. In Angular 1.0, if a +directive with an isolate scope is used on an element, all directives on that same element have access +to the same isolate scope. For example, say we have the following directives:

      +
      // This directive declares an isolate scope.
      +.directive('isolateScope', function() {
      +  return {
      +    scope: {},
      +    link: function($scope) {
      +      console.log('one = ' + $scope.$id);
      +    }
      +  };
      +})
      +
      +// This directive does not.
      +.directive('nonIsolateScope', function() {
      +  return {
      +    link: function($scope) {
      +      console.log('two = ' + $scope.$id);
      +    }
      +  };
      +});
      +
      +

      Now what happens if we use both directives on the same element?

      +
      <div isolate-scope non-isolate-scope></div>
      +
      +

      In Angular 1.0, the nonIsolateScope directive will have access to the isolateScope directive’s scope. The +log statements will print the same id, because the scope is the same. But in Angular 1.2, the nonIsolateScope +will not use the same scope as isolateScope. Instead, it will inherit the parent scope. The log statements +will print different id’s.

      +

      If your code depends on the Angular 1.0 behavior (non-isolate directive needs to access state +from within the isolate scope), change the isolate directive to use scope locals to pass these explicitly:

      +

      Before

      +
      <input ng-model="$parent.value" ng-isolate>
      +
      +.directive('ngIsolate', function() {
      +  return {
      +    scope: {},
      +    template: '{{value}}'
      +  };
      +});
      +
      +

      After

      +
      <input ng-model="value" ng-isolate>
      +
      +.directive('ngIsolate', function() {
      +  return {
      +    scope: {value: '=ngModel'},
      +    template: '{{value}}
      +  };
      +});
      +
      +

      See 909cabd3, +#1924 and +#2500.

      +

      Change to interpolation priority

      +

      Previously, the interpolation priority was -100 in 1.2.0-rc.2, and 100 before 1.2.0-rc.2. +Before this change the binding was setup in the post-linking phase.

      +

      Now the attribute interpolation (binding) executes as a directive with priority 100 and the +binding is set up in the pre-linking phase.

      +

      See 79223eae, +#4525, +#4528, and +#4649

      +

      Underscore-prefixed/suffixed properties are non-bindable

      +
      +

      Reverted: This breaking change has been reverted in 1.2.1, and so can be ignored if you're using version 1.2.1 or higher

      +
      + +

      This change introduces the notion of "private" properties (properties +whose names begin and/or end with an underscore) on the scope chain. +These properties will not be available to Angular expressions (i.e. {{ +}} interpolation in templates and strings passed to $parse) They are +freely available to JavaScript code (as before).

      +

      Motivation

      +

      Angular expressions execute in a limited context. They do not have +direct access to the global scope, window, document or the Function +constructor. However, they have direct access to names/properties on +the scope chain. It has been a long standing best practice to keep +sensitive APIs outside of the scope chain (in a closure or your +controller.) That's easier said than done for two reasons:

      +
        +
      1. JavaScript does not have a notion of private properties so if you need +someone on the scope chain for JavaScript use, you also expose it to +Angular expressions
      2. +
      3. The new controller as syntax that's now in increased usage exposes the +entire controller on the scope chain greatly increasing the exposed surface.
      4. +
      +

      Though Angular expressions are written and controlled by the developer, they:

      +
        +
      1. Typically deal with user input
      2. +
      3. Don't get the kind of test coverage that JavaScript code would
      4. +
      +

      This commit provides a way, via a naming convention, to allow restricting properties from +controllers/scopes. This means Angular expressions can access only those properties that +are actually needed by the expressions.

      +

      See 3d6a89e8.

      +

      You cannot bind to select[multiple]

      +

      Switching between select[single] and select[multiple] has always been odd due to browser quirks. +This feature never worked with two-way data-binding so it's not expected that anyone is using it.

      +

      If you are interested in properly adding this feature, please submit a pull request on Github.

      +

      See d87fa004.

      +

      Uncommon region-specific local files were removed from i18n

      +

      AngularJS uses the Google Closure library's locale files. The following locales were removed from +Closure, so Angular is not able to continue to support them:

      +

      chr, cy, el-polyton, en-zz, fr-rw, fr-sn, fr-td, fr-tg, haw, it-ch, ln-cg, +mo, ms-bn, nl-aw, nl-be, pt-ao, pt-gw, pt-mz, pt-st, ro-md, ru-md, ru-ua, +sr-cyrl-ba, sr-cyrl-me, sr-cyrl, sr-latn-ba, sr-latn-me, sr-latn, sr-rs, sv-fi, +sw-ke, ta-lk, tl-ph, ur-in, zh-hans-hk, zh-hans-mo, zh-hans-sg, zh-hans, +zh-hant-hk, zh-hant-mo, zh-hant-tw, zh-hant

      +

      Although these locales were removed from the official AngularJS repository, you can continue to +load and use your copy of the locale file provided that you maintain it yourself.

      +

      See 6382e21f.

      +

      Services can now return functions

      +

      Previously, the service constructor only returned objects regardless of whether a function was returned.

      +

      Now, $injector.instantiate (and thus $provide.service) behaves the same as the native +new operator and allows functions to be returned as a service.

      +

      If using a JavaScript preprocessor it's quite possible when upgrading that services could start behaving incorrectly. +Make sure your services return the correct type wanted.

      +

      Coffeescript example

      +
      myApp.service 'applicationSrvc', ->
      +@something = "value"
      +@someFunct = ->
      +  "something else"
      +
      +

      pre 1.2 this service would return the whole object as the service.

      +

      post 1.2 this service returns someFunct as the value of the service

      +

      you would need to change this services to

      +
      myApp.service 'applicationSrvc', ->
      +@something = "value"
      +@someFunct = ->
      +  "something else"
      +return
      +
      +

      to continue to return the complete instance.

      +

      See c22adbf1.

      + + diff --git a/1.2.30/docs/partials/guide/module.html b/1.2.30/docs/partials/guide/module.html new file mode 100644 index 0000000000..c54402da68 --- /dev/null +++ b/1.2.30/docs/partials/guide/module.html @@ -0,0 +1,264 @@ + Improve this Doc + + +

      What is a Module?

      +

      You can think of a module as a container for the different parts of your app – controllers, +services, filters, directives, etc.

      +

      Why?

      +

      Most applications have a main method that instantiates and wires together the different parts of +the application.

      +

      Angular apps don't have a main method. Instead modules declaratively specify how an application +should be bootstrapped. There are several advantages to this approach:

      +
        +
      • The declarative process is easier to understand.
      • +
      • You can package code as reusable modules.
      • +
      • The modules can be loaded in any order (or even in parallel) because modules delay execution.
      • +
      • Unit tests only have to load relevant modules, which keeps them fast.
      • +
      • End-to-end tests can use modules to override configuration.
      • +
      +

      The Basics

      +

      I'm in a hurry. How do I get a Hello World module working?

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-app="myApp">
        <div>
          {{ 'World' | greet }}
        </div>
      </div>
      +
      + +
      +
      // declare a module
      var myAppModule = angular.module('myApp', []);
      
      // configure the module.
      // in this example we will create a greeting filter
      myAppModule.filter('greet', function() {
       return function(name) {
          return 'Hello, ' + name + '!';
        };
      });
      +
      + +
      +
      it('should add Hello to the name', function() {
        expect(element(by.binding("{{ 'World' | greet }}")).getText()).toEqual('Hello, World!');
      });
      +
      + + + +
      +
      + + +

      +

      Important things to notice:

      +
        +
      • The Module API
      • +
      • The reference to myApp module in <div ng-app="myApp">. +This is what bootstraps the app using your module.
      • +
      • The empty array in angular.module('myApp', []). +This array is the list of modules myApp depends on.
      • +
      +

      Recommended Setup

      +

      While the example above is simple, it will not scale to large applications. Instead we recommend +that you break your application to multiple modules like this:

      +
        +
      • A module for each feature
      • +
      • A module for each reusable component (especially directives and filters)
      • +
      • And an application level module which depends on the above modules and contains any +initialization code.
      • +
      +

      We've also +written a document +on how we organize large apps at Google.

      +

      The above is a suggestion. Tailor it to your needs.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div ng-controller="XmplController">
        {{ greeting }}
      </div>
      +
      + +
      +
      angular.module('xmpl.service', [])
      
        .value('greeter', {
          salutation: 'Hello',
          localize: function(localization) {
            this.salutation = localization.salutation;
          },
          greet: function(name) {
            return this.salutation + ' ' + name + '!';
          }
        })
      
        .value('user', {
          load: function(name) {
            this.name = name;
          }
        });
      
      angular.module('xmpl.directive', []);
      
      angular.module('xmpl.filter', []);
      
      angular.module('xmpl', ['xmpl.service', 'xmpl.directive', 'xmpl.filter'])
      
        .run(function(greeter, user) {
          // This is effectively part of the main method initialization code
          greeter.localize({
            salutation: 'Bonjour'
          });
          user.load('World');
        })
      
        .controller('XmplController', function($scope, greeter, user){
          $scope.greeting = greeter.greet(user.name);
        });
      +
      + +
      +
      it('should add Hello to the name', function() {
        expect(element(by.binding("{{ greeting }}")).getText()).toEqual('Bonjour World!');
      });
      +
      + + + +
      +
      + + +

      +

      Module Loading & Dependencies

      +

      A module is a collection of configuration and run blocks which get applied to the application +during the bootstrap process. In its simplest form the module consist of collection of two kinds +of blocks:

      +
        +
      1. Configuration blocks - get executed during the provider registrations and configuration +phase. Only providers and constants can be injected into configuration blocks. This is to +prevent accidental instantiation of services before they have been fully configured.
      2. +
      3. Run blocks - get executed after the injector is created and are used to kickstart the +application. Only instances and constants can be injected into run blocks. This is to prevent +further system configuration during application run time.
      4. +
      +
      angular.module('myModule', []).
      +config(function(injectables) { // provider-injector
      +  // This is an example of config block.
      +  // You can have as many of these as you want.
      +  // You can only inject Providers (not instances)
      +  // into config blocks.
      +}).
      +run(function(injectables) { // instance-injector
      +  // This is an example of a run block.
      +  // You can have as many of these as you want.
      +  // You can only inject instances (not Providers)
      +  // into run blocks
      +});
      +
      +

      Configuration Blocks

      +

      There are some convenience methods on the module which are equivalent to the config block. For +example:

      +
      angular.module('myModule', []).
      +value('a', 123).
      +factory('a', function() { return 123; }).
      +directive('directiveName', ...).
      +filter('filterName', ...);
      +
      +// is same as
      +
      +angular.module('myModule', []).
      +config(function($provide, $compileProvider, $filterProvider) {
      +  $provide.value('a', 123);
      +  $provide.factory('a', function() { return 123; });
      +  $compileProvider.directive('directiveName', ...);
      +  $filterProvider.register('filterName', ...);
      +});
      +
      +
      +When bootstrapping, first Angular applies all constant definitions. +Then Angular applies configuration blocks in the same order they were registered. +
      + +

      Run Blocks

      +

      Run blocks are the closest thing in Angular to the main method. A run block is the code which +needs to run to kickstart the application. It is executed after all of the service have been +configured and the injector has been created. Run blocks typically contain code which is hard +to unit-test, and for this reason should be declared in isolated modules, so that they can be +ignored in the unit-tests.

      +

      Dependencies

      +

      Modules can list other modules as their dependencies. Depending on a module implies that required +module needs to be loaded before the requiring module is loaded. In other words the configuration +blocks of the required modules execute before the configuration blocks of the requiring module. +The same is true for the run blocks. Each module can only be loaded once, even if multiple other +modules require it.

      +

      Asynchronous Loading

      +

      Modules are a way of managing $injector configuration, and have nothing to do with loading of +scripts into a VM. There are existing projects which deal with script loading, which may be used +with Angular. Because modules do nothing at load time they can be loaded into the VM in any order +and thus script loaders can take advantage of this property and parallelize the loading process.

      +

      Creation versus Retrieval

      +

      Beware that using angular.module('myModule', []) will create the module myModule and overwrite any +existing module named myModule. Use angular.module('myModule') to retrieve an existing module.

      +
      var myModule = angular.module('myModule', []);
      +
      +// add some directives and services
      +myModule.service('myService', ...);
      +myModule.directive('myDirective', ...);
      +
      +// overwrites both myService and myDirective by creating a new module
      +var myModule = angular.module('myModule', []);
      +
      +// throws an error because myOtherModule has yet to be defined
      +var myModule = angular.module('myOtherModule');
      +
      +

      Unit Testing

      +

      A unit test is a way of instantiating a subset of an application to apply stimulus to it. +Small, structured modules help keep unit tests concise and focused.

      +
      +Each module can only be loaded once per injector. +Usually an Angular app has only one injector and modules are only loaded once. +Each test has its own injector and modules are loaded multiple times. +
      + +

      In all of these examples we are going to assume this module definition:

      +
      angular.module('greetMod', []).
      +
      +factory('alert', function($window) {
      +  return function(text) {
      +    $window.alert(text);
      +  }
      +}).
      +
      +value('salutation', 'Hello').
      +
      +factory('greet', function(alert, salutation) {
      +  return function(name) {
      +    alert(salutation + ' ' + name + '!');
      +  }
      +});
      +
      +

      Let's write some tests to show how to override configuration in tests.

      +
      describe('myApp', function() {
      +// load application module (`greetMod`) then load a special
      +// test module which overrides `$window` with a mock version,
      +// so that calling `window.alert()` will not block the test
      +// runner with a real alert box.
      +beforeEach(module('greetMod', function($provide) {
      +  $provide.value('$window', {
      +    alert: jasmine.createSpy('alert')
      +  });
      +}));
      +
      +// inject() will create the injector and inject the `greet` and
      +// `$window` into the tests.
      +it('should alert on $window', inject(function(greet, $window) {
      +  greet('World');
      +  expect($window.alert).toHaveBeenCalledWith('Hello World!');
      +}));
      +
      +// this is another way of overriding configuration in the
      +// tests using inline `module` and `inject` methods.
      +it('should alert using the alert service', function() {
      +  var alertSpy = jasmine.createSpy('alert');
      +  module(function($provide) {
      +    $provide.value('alert', alertSpy);
      +  });
      +  inject(function(greet) {
      +    greet('World');
      +    expect(alertSpy).toHaveBeenCalledWith('Hello World!');
      +  });
      +});
      +});
      +
      + + diff --git a/1.2.30/docs/partials/guide/providers.html b/1.2.30/docs/partials/guide/providers.html new file mode 100644 index 0000000000..aa6c8fa70a --- /dev/null +++ b/1.2.30/docs/partials/guide/providers.html @@ -0,0 +1,327 @@ + Improve this Doc + + +

      Providers

      +

      Each web application you build is composed of objects that collaborate to get stuff done. These +objects need to be instantiated and wired together for the app to work. In Angular apps most of +these objects are instantiated and wired together automatically by the injector service.

      +

      The injector creates two types of objects, services and specialized objects.

      +

      Services are objects whose API is defined by the developer writing the service.

      +

      Specialized objects conform to a specific Angular framework API. These objects are one of +controllers, directives, filters or animations.

      +

      The injector needs to know how to create these objects. You tell it by registering a "recipe" for +creating your object with the injector. There are five recipe types.

      +

      The most verbose, but also the most comprehensive one is a Provider recipe. The remaining four +recipe types — Value, Factory, Service and Constant — are just syntactic sugar on top of a provider +recipe.

      +

      Let's take a look at the different scenarios for creating and using services via various recipe +types. We'll start with the simplest case possible where various places in your code need a shared +string and we'll accomplish this via Value recipe.

      +

      Note: A Word on Modules

      +

      In order for the injector to know how to create and wire together all of these objects, it needs +a registry of "recipes". Each recipe has an identifier of the object and the description of how to +create this object.

      +

      Each recipe belongs to an Angular module. An Angular module is a bag +that holds one or more recipes. And since manually keeping track of module dependencies is no fun, +a module can contain information about dependencies on other modules as well.

      +

      When an Angular application starts with a given application module, Angular creates a new instance +of injector, which in turn creates a registry of recipes as a union of all recipes defined in the +core "ng" module, application module and its dependencies. The injector then consults the recipe +registry when it needs to create an object for your application.

      +

      Value Recipe

      +

      Let's say that we want to have a very simple service called "clientId" that provides a string +representing an authentication id used for some remote API. You would define it like this:

      +
      var myApp = angular.module('myApp', []);
      +myApp.value('clientId', 'a12345654321x');
      +
      +

      Notice how we created an Angular module called myApp, and specified that this module definition +contains a "recipe" for constructing the clientId service, which is a simple string in this case.

      +

      And this is how you would display it via Angular's data-binding:

      +
      myApp.controller('DemoController', ['clientId', function DemoController(clientId) {
      +this.clientId = clientId;
      +}]);
      +
      +
      <html ng-app="myApp">
      +<body ng-controller="DemoController as demo">
      +  Client ID: {{demo.clientId}}
      +</body>
      +</html>
      +
      +

      In this example, we've used the Value recipe to define the value to provide when DemoController +asks for the service with id "clientId".

      +

      On to more complex examples!

      +

      Factory Recipe

      +

      The Value recipe is very simple to write, but lacks some important features we often need when +creating services. Let's now look at the Value recipe's more powerful sibling, the Factory. The +Factory recipe adds the following abilities:

      +
        +
      • ability to use other services (have dependencies)
      • +
      • service initialization
      • +
      • delayed/lazy initialization
      • +
      +

      The Factory recipe constructs a new service using a function with zero or more arguments (these +are dependencies on other services). The return value of this function is the service instance +created by this recipe.

      +

      Note: All services in Angular are singletons. That means that the injector uses each recipe at most +once to create the object. The injector then caches the reference for all future needs.

      +

      Since a Factory is a more powerful version of the Value recipe, the same service can be constructed with it. +Using our previous clientId Value recipe example, we can rewrite it as a Factory recipe like this:

      +
      myApp.factory('clientId', function clientIdFactory() {
      +return 'a12345654321x';
      +});
      +
      +

      But given that the token is just a string literal, sticking with the Value recipe is still more +appropriate as it makes the code easier to follow.

      +

      Let's say, however, that we would also like to create a service that computes a token used for +authentication against a remote API. This token will be called apiToken and will be computed +based on the clientId value and a secret stored in the browser's local storage:

      +
      myApp.factory('apiToken', ['clientId', function apiTokenFactory(clientId) {
      +var encrypt = function(data1, data2) {
      +  // NSA-proof encryption algorithm:
      +  return (data1 + ':' + data2).toUpperCase();
      +};
      +
      +var secret = window.localStorage.getItem('myApp.secret');
      +var apiToken = encrypt(clientId, secret);
      +
      +return apiToken;
      +}]);
      +
      +

      In the code above, we see how the apiToken service is defined via the Factory recipe that depends +on the clientId service. The factory service then uses NSA-proof encryption to produce an authentication +token.

      +
      +Best Practice: name the factory functions as <serviceId>Factory +(e.g., apiTokenFactory). While this naming convention is not required, it helps when navigating the codebase +or looking at stack traces in the debugger. +
      + +

      Just like with the Value recipe, the Factory recipe can create a service of any type, whether it be a +primitive, object literal, function, or even an instance of a custom type.

      +

      Service Recipe

      +

      JavaScript developers often use custom types to write object-oriented code. Let's explore how we +could launch a unicorn into space via our unicornLauncher service which is an instance of a +custom type:

      +
      function UnicornLauncher(apiToken) {
      +
      +this.launchedCount = 0;
      +this.launch = function() {
      +  // Make a request to the remote API and include the apiToken
      +  ...
      +  this.launchedCount++;
      +}
      +}
      +
      +

      We are now ready to launch unicorns, but notice that UnicornLauncher depends on our apiToken. +We can satisfy this dependency on apiToken using the Factory recipe:

      +
      myApp.factory('unicornLauncher', ["apiToken", function(apiToken) {
      +return new UnicornLauncher(apiToken);
      +}]);
      +
      +

      This is, however, exactly the use-case that the Service recipe is the most suitable for.

      +

      The Service recipe produces a service just like the Value or Factory recipes, but it does so by +invoking a constructor with the new operator. The constructor can take zero or more arguments, +which represent dependencies needed by the instance of this type.

      +

      Note: Service recipes follow a design pattern called constructor +injection.

      +

      Since we already have a constructor for our UnicornLauncher type, we can replace the Factory recipe +above with a Service recipe like this:

      +
      myApp.service('unicornLauncher', ["apiToken", UnicornLauncher]);
      +
      +

      Much simpler!

      +

      Note: Yes, we have called one of our service recipes 'Service'. We regret this and know that we'll +be somehow punished for our misdeed. It's like we named one of our offspring 'Child'. Boy, +that would mess with the teachers.

      +

      Provider Recipe

      +

      As already mentioned in the intro, the Provider recipe is the core recipe type and +all the other recipe types are just syntactic sugar on top of it. It is the most verbose recipe +with the most abilities, but for most services it's overkill.

      +

      The Provider recipe is syntactically defined as a custom type that implements a $get method. This +method is a factory function just like the one we use in the Factory recipe. In fact, if you define +a Factory recipe, an empty Provider type with the $get method set to your factory function is +automatically created under the hood.

      +

      You should use the Provider recipe only when you want to expose an API for application-wide +configuration that must be made before the application starts. This is usually interesting only +for reusable services whose behavior might need to vary slightly between applications.

      +

      Let's say that our unicornLauncher service is so awesome that many apps use it. By default the +launcher shoots unicorns into space without any protective shielding. But on some planets the +atmosphere is so thick that we must wrap every unicorn in tinfoil before sending it on its +intergalactic trip, otherwise they would burn while passing through the atmosphere. It would then +be great if we could configure the launcher to use the tinfoil shielding for each launch in apps +that need it. We can make it configurable like so:

      +
      myApp.provider('unicornLauncher', function UnicornLauncherProvider() {
      +var useTinfoilShielding = false;
      +
      +this.useTinfoilShielding = function(value) {
      +  useTinfoilShielding = !!value;
      +};
      +
      +this.$get = ["apiToken", function unicornLauncherFactory(apiToken) {
      +
      +  // let's assume that the UnicornLauncher constructor was also changed to
      +  // accept and use the useTinfoilShielding argument
      +  return new UnicornLauncher(apiToken, useTinfoilShielding);
      +}];
      +});
      +
      +

      To turn the tinfoil shielding on in our app, we need to create a config function via the module +API and have the UnicornLauncherProvider injected into it:

      +
      myApp.config(["unicornLauncherProvider", function(unicornLauncherProvider) {
      +unicornLauncherProvider.useTinfoilShielding(true);
      +}]);
      +
      +

      Notice that the unicorn provider is injected into the config function. This injection is done by a +provider injector which is different from the regular instance injector, in that it instantiates +and wires (injects) all provider instances only.

      +

      During application bootstrap, before Angular goes off creating all services, it configures and +instantiates all providers. We call this the configuration phase of the application life-cycle. +During this phase, services aren't accessible because they haven't been created yet.

      +

      Once the configuration phase is over, interaction with providers is disallowed and the process of +creating services starts. We call this part of the application life-cycle the run phase.

      +

      Constant Recipe

      +

      We've just learned how Angular splits the life-cycle into configuration phase and run phase and how +you can provide configuration to your application via the config function. Since the config +function runs in the configuration phase when no services are available, it doesn't have access +even to simple value objects created via the Value recipe.

      +

      Since simple values, like URL prefixes, don't have dependencies or configuration, it's often handy +to make them available in both the configuration and run phases. This is what the Constant recipe +is for.

      +

      Let's say that our unicornLauncher service can stamp a unicorn with the planet name it's being +launched from if this name was provided during the configuration phase. The planet name is +application specific and is used also by various controllers during the runtime of the application. +We can then define the planet name as a constant like this:

      +
      myApp.constant('planetName', 'Greasy Giant');
      +
      +

      We could then configure the unicornLauncherProvider like this:

      +
      myApp.config(['unicornLauncherProvider', 'planetName', function(unicornLauncherProvider, planetName) {
      +unicornLauncherProvider.useTinfoilShielding(true);
      +unicornLauncherProvider.stampText(planetName);
      +}]);
      +
      +

      And since Constant recipe makes the value also available at runtime just like the Value recipe, we +can also use it in our controller and template:

      +
      myApp.controller('DemoController', ["clientId", "planetName", function DemoController(clientId, planetName) {
      +this.clientId = clientId;
      +this.planetName = planetName;
      +}]);
      +
      +
      <html ng-app="myApp">
      +<body ng-controller="DemoController as demo">
      + Client ID: {{demo.clientId}}
      + <br>
      + Planet Name: {{demo.planetName}}
      +</body>
      +</html>
      +
      +

      Special Purpose Objects

      +

      Earlier we mentioned that we also have special purpose objects that are different from services. +These objects extend the framework as plugins and therefore must implement interfaces specified by +Angular. These interfaces are Controller, Directive, Filter and Animation.

      +

      The instructions for the injector to create these special objects (with the exception of the +Controller objects) use the Factory recipe behind the scenes.

      +

      Let's take a look at how we would create a very simple component via the directive api that depends +on the planetName constant we've just defined and displays the planet name, in our case: +"Planet Name: Greasy Giant".

      +

      Since the directives are registered via the Factory recipe, we can use the same syntax as with factories.

      +
      myApp.directive('myPlanet', ['planetName', function myPlanetDirectiveFactory(planetName) {
      +// directive definition object
      +return {
      +  restrict: 'E',
      +  scope: {},
      +  link: function($scope, $element) { $element.text('Planet: ' + planetName); }
      +}
      +}]);
      +
      +

      We can then use the component like this:

      +
      <html ng-app="myApp">
      +<body>
      + <my-planet></my-planet>
      +</body>
      +</html>
      +
      +

      Using Factory recipes, you can also define Angular's filters and animations, but the controllers +are a bit special. You create a controller as a custom type that declares its dependencies as +arguments for its constructor function. This constructor is then registered with a module. Let's +take a look at the DemoController, created in one of the early examples:

      +
      myApp.controller('DemoController', ['clientId', function DemoController(clientId) {
      +this.clientId = clientId;
      +}]);
      +
      +

      The DemoController is instantiated via its constructor, every time the app needs an instance of +DemoController (in our simple app it's just once). So unlike services, controllers are not +singletons. The constructor is called with all the requested services, in our case the clientId +service.

      +

      Conclusion

      +

      To wrap it up, let's summarize the most important points:

      +
        +
      • The injector uses recipes to create two types of objects: services and special purpose objects
      • +
      • There are five recipe types that define how to create objects: Value, Factory, Service, Provider +and Constant.
      • +
      • Factory and Service are the most commonly used recipes. The only difference between them is that +the Service recipe works better for objects of a custom type, while the Factory can produce JavaScript +primitives and functions.
      • +
      • The Provider recipe is the core recipe type and all the other ones are just syntactic sugar on it.
      • +
      • Provider is the most complex recipe type. You don't need it unless you are building a reusable +piece of code that needs global configuration.
      • +
      • All special purpose objects except for the Controller are defined via Factory recipes.
      • +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Features / Recipe typeFactoryServiceValueConstantProvider
      can have dependenciesyesyesnonoyes
      uses type friendly injectionnoyesyes*yes*no
      object available in config phasenononoyesyes**
      can create functionsyesyesyesyesyes
      can create primitivesyesnoyesyesyes
      + +

      * at the cost of eager initialization by using new operator directly

      +

      ** the service object is not available during the config phase, but the provider instance is +(see the unicornLauncherProvider example above).

      + + diff --git a/1.2.30/docs/partials/guide/scope.html b/1.2.30/docs/partials/guide/scope.html new file mode 100644 index 0000000000..71bc9e25c7 --- /dev/null +++ b/1.2.30/docs/partials/guide/scope.html @@ -0,0 +1,374 @@ + Improve this Doc + + +

      What are Scopes?

      +

      scope is an object that refers to the application +model. It is an execution context for expressions. Scopes are +arranged in hierarchical structure which mimic the DOM structure of the application. Scopes can +watch expressions and propagate events.

      +

      Scope characteristics

      +
        +
      • Scopes provide APIs ($watch) to observe +model mutations.

        +
      • +
      • Scopes provide APIs ($apply) to +propagate any model changes through the system into the view from outside of the "Angular +realm" (controllers, services, Angular event handlers).

        +
      • +
      • Scopes can be nested to limit access to the properties of application components while providing +access to shared model properties. Nested scopes are either "child scopes" or "isolate scopes". +A "child scope" (prototypically) inherits properties from its parent scope. An "isolate scope" +does not. See isolated +scopes for more information.

        +
      • +
      • Scopes provide context against which expressions are evaluated. For +example {{username}} expression is meaningless, unless it is evaluated against a specific +scope which defines the username property.

        +
      • +
      +

      Scope as Data-Model

      +

      Scope is the glue between application controller and the view. During the template linking phase the directives set up +$watch expressions on the scope. The +$watch allows the directives to be notified of property changes, which allows the directive to +render the updated value to the DOM.

      +

      Both controllers and directives have reference to the scope, but not to each other. This +arrangement isolates the controller from the directive as well as from the DOM. This is an important +point since it makes the controllers view agnostic, which greatly improves the testing story of +the applications.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('scopeExample', [])
        .controller('MyController', ['$scope', function($scope) {
          $scope.username = 'World';
      
          $scope.sayHello = function() {
            $scope.greeting = 'Hello ' + $scope.username + '!';
          };
        }]);
      +
      + +
      +
      <div ng-controller="MyController">
        Your name:
          <input type="text" ng-model="username">
          <button ng-click='sayHello()'>greet</button>
        <hr>
        {{greeting}}
      </div>
      +
      + + + +
      +
      + + +

      +

      In the above example notice that the MyController assigns World to the username property of +the scope. The scope then notifies the input of the assignment, which then renders the input +with username pre-filled. This demonstrates how a controller can write data into the scope.

      +

      Similarly the controller can assign behavior to scope as seen by the sayHello method, which is +invoked when the user clicks on the 'greet' button. The sayHello method can read the username +property and create a greeting property. This demonstrates that the properties on scope update +automatically when they are bound to HTML input widgets.

      +

      Logically the rendering of {{greeting}} involves:

      +
        +
      • retrieval of the scope associated with DOM node where {{greeting}} is defined in template. +In this example this is the same scope as the scope which was passed into MyController. (We +will discuss scope hierarchies later.)

        +
      • +
      • Evaluate the greeting expression against the scope retrieved above, +and assign the result to the text of the enclosing DOM element.

        +
      • +
      +

      You can think of the scope and its properties as the data which is used to render the view. The +scope is the single source-of-truth for all things view related.

      +

      From a testability point of view, the separation of the controller and the view is desirable, because it allows us +to test the behavior without being distracted by the rendering details.

      +
      it('should say hello', function() {
      +  var scopeMock = {};
      +  var cntl = new MyController(scopeMock);
      +
      +  // Assert that username is pre-filled
      +  expect(scopeMock.username).toEqual('World');
      +
      +  // Assert that we read new username and greet
      +  scopeMock.username = 'angular';
      +  scopeMock.sayHello();
      +  expect(scopeMock.greeting).toEqual('Hello angular!');
      +});
      +
      +

      Scope Hierarchies

      +

      Each Angular application has exactly one root scope, but +may have several child scopes.

      +

      The application can have multiple scopes, because some directives create +new child scopes (refer to directive documentation to see which directives create new scopes). +When new scopes are created, they are added as children of their parent scope. This creates a tree +structure which parallels the DOM where they're attached.

      +

      When Angular evaluates {{name}}, it first looks at the scope associated with the given +element for the name property. If no such property is found, it searches the parent scope +and so on until the root scope is reached. In JavaScript this behavior is known as prototypical +inheritance, and child scopes prototypically inherit from their parents.

      +

      This example illustrates scopes in application, and prototypical inheritance of properties. The example is followed by +a diagram depicting the scope boundaries.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div class="show-scope-demo">
      <div ng-controller="GreetController">
        Hello {{name}}!
      </div>
      <div ng-controller="ListController">
        <ol>
          <li ng-repeat="name in names">{{name}} from {{department}}</li>
        </ol>
      </div>
      </div>
      +
      + +
      +
      angular.module('scopeExample', [])
        .controller('GreetController', ['$scope', '$rootScope', function($scope, $rootScope) {
          $scope.name = 'World';
          $rootScope.department = 'Angular';
        }])
        .controller('ListController', ['$scope', function($scope) {
          $scope.names = ['Igor', 'Misko', 'Vojta'];
        }]);
      +
      + +
      +
      .show-scope-demo.ng-scope,
      .show-scope-demo .ng-scope  {
        border: 1px solid red;
        margin: 3px;
      }
      +
      + + + +
      +
      + + +

      +

      +

      Notice that Angular automatically places ng-scope class on elements where scopes are +attached. The <style> definition in this example highlights in red the new scope locations. The +child scopes are necessary because the repeater evaluates {{name}} expression, but +depending on which scope the expression is evaluated it produces different result. Similarly the +evaluation of {{department}} prototypically inherits from root scope, as it is the only place +where the department property is defined.

      +

      Retrieving Scopes from the DOM.

      +

      Scopes are attached to the DOM as $scope data property, and can be retrieved for debugging +purposes. (It is unlikely that one would need to retrieve scopes in this way inside the +application.) The location where the root scope is attached to the DOM is defined by the location +of ng-app directive. Typically +ng-app is placed on the <html> element, but it can be placed on other elements as well, if, +for example, only a portion of the view needs to be controlled by Angular.

      +

      To examine the scope in the debugger:

      +
        +
      1. Right click on the element of interest in your browser and select 'inspect element'. You +should see the browser debugger with the element you clicked on highlighted.

        +
      2. +
      3. The debugger allows you to access the currently selected element in the console as $0 +variable.

        +
      4. +
      5. To retrieve the associated scope in console execute: angular.element($0).scope() or just type $scope

        +
      6. +
      +

      Scope Events Propagation

      +

      Scopes can propagate events in similar fashion to DOM events. The event can be broadcasted to the scope children or emitted to scope parents.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      angular.module('eventExample', [])
        .controller('EventController', ['$scope', function($scope) {
          $scope.count = 0;
          $scope.$on('MyEvent', function() {
            $scope.count++;
          });
        }]);
      +
      + +
      +
      <div ng-controller="EventController">
        Root scope <tt>MyEvent</tt> count: {{count}}
        <ul>
          <li ng-repeat="i in [1]" ng-controller="EventController">
            <button ng-click="$emit('MyEvent')">$emit('MyEvent')</button>
            <button ng-click="$broadcast('MyEvent')">$broadcast('MyEvent')</button>
            <br>
            Middle scope <tt>MyEvent</tt> count: {{count}}
            <ul>
              <li ng-repeat="item in [1, 2]" ng-controller="EventController">
                Leaf scope <tt>MyEvent</tt> count: {{count}}
              </li>
            </ul>
          </li>
        </ul>
      </div>
      +
      + + + +
      +
      + + +

      +

      Scope Life Cycle

      +

      The normal flow of a browser receiving an event is that it executes a corresponding JavaScript +callback. Once the callback completes the browser re-renders the DOM and returns to waiting for +more events.

      +

      When the browser calls into JavaScript the code executes outside the Angular execution context, +which means that Angular is unaware of model modifications. To properly process model +modifications the execution has to enter the Angular execution context using the $apply method. Only model modifications which +execute inside the $apply method will be properly accounted for by Angular. For example if a +directive listens on DOM events, such as ng-click it must evaluate the +expression inside the $apply method.

      +

      After evaluating the expression, the $apply method performs a $digest. In the $digest phase the scope examines all +of the $watch expressions and compares them with the previous value. This dirty checking is done +asynchronously. This means that assignment such as $scope.username="angular" will not +immediately cause a $watch to be notified, instead the $watch notification is delayed until +the $digest phase. This delay is desirable, since it coalesces multiple model updates into one +$watch notification as well as it guarantees that during the $watch notification no other +$watches are running. If a $watch changes the value of the model, it will force additional +$digest cycle.

      +
        +
      1. Creation

        +

        The root scope is created during the application +bootstrap by the $injector. During template +linking, some directives create new child scopes.

        +
      2. +
      3. Watcher registration

        +

        During template linking directives register watches on the scope. These watches will be +used to propagate model values to the DOM.

        +
      4. +
      5. Model mutation

        +

        For mutations to be properly observed, you should make them only within the scope.$apply(). (Angular APIs do this +implicitly, so no extra $apply call is needed when doing synchronous work in controllers, +or asynchronous work with $http, $timeout +or $interval services.

        +
      6. +
      7. Mutation observation

        +

        At the end of $apply, Angular performs a $digest cycle on the root scope, which then propagates throughout all child scopes. During +the $digest cycle, all $watched expressions or functions are checked for model mutation +and if a mutation is detected, the $watch listener is called.

        +
      8. +
      9. Scope destruction

        +

        When child scopes are no longer needed, it is the responsibility of the child scope creator +to destroy them via scope.$destroy() +API. This will stop propagation of $digest calls into the child scope and allow for memory +used by the child scope models to be reclaimed by the garbage collector.

        +
      10. +
      +

      Scopes and Directives

      +

      During the compilation phase, the compiler matches directives against the DOM template. The directives +usually fall into one of two categories:

      +
        +
      • Observing directives, such as +double-curly expressions {{expression}}, register listeners using the $watch() method. This type of directive needs +to be notified whenever the expression changes so that it can update the view.

        +
      • +
      • Listener directives, such as ng-click, register a listener with the DOM. When the DOM listener fires, the directive +executes the associated expression and updates the view using the $apply() method.

        +
      • +
      +

      When an external event (such as a user action, timer or XHR) is received, the associated expression must be applied to the scope through the $apply() method so that all listeners are updated +correctly.

      +

      Directives that Create Scopes

      +

      In most cases, directives and scopes interact +but do not create new instances of scope. However, some directives, such as ng-controller and ng-repeat, create new child scopes +and attach the child scope to the corresponding DOM element. You can retrieve a scope for any DOM +element by using an angular.element(aDomElement).scope() method call. +See the directives guide for more information about isolate scopes.

      +

      Controllers and Scopes

      +

      Scopes and controllers interact with each other in the following situations:

      +
        +
      • Controllers use scopes to expose controller methods to templates (see ng-controller).

        +
      • +
      • Controllers define methods (behavior) that can mutate the model (properties on the scope).

        +
      • +
      • Controllers may register watches on +the model. These watches execute immediately after the controller behavior executes.

        +
      • +
      +

      See the ng-controller for more +information.

      +

      Scope $watch Performance Considerations

      +

      Dirty checking the scope for property changes is a common operation in Angular and for this reason +the dirty checking function must be efficient. Care should be taken that the dirty checking +function does not do any DOM access, as DOM access is orders of magnitude slower than property +access on JavaScript object.

      +

      Scope $watch Depths

      +

      +

      Dirty checking can be done with three strategies: By reference, by collection contents, and by value. The strategies differ in the kinds of changes they detect, and in their performance characteristics.

      +
        +
      • Watching by reference (scope.$watch (watchExpression, listener)) detects a change when the whole value returned by the watch expression switches to a new value. If the value is an array or an object, changes inside it are not detected. This is the most efficient stategy.
      • +
      • Watching collection contents (scope.$watchCollection (watchExpression, listener)) detects changes that occur inside an array or an object: When items are added, removed, or reordered. The detection is shallow - it does not reach into nested collections. Watching collection contents is more expensive than watching by reference, because copies of the collection contents need to be maintained. However, the strategy attempts to minimize the amount of copying required.
      • +
      • Watching by value (scope.$watch (watchExpression, listener, true)) detects any change in an arbitrarily nested data structure. It is the most powerful change detection strategy, but also the most expensive. A full traversal of the nested data structure is needed on each digest, and a full copy of it needs to be held in memory.
      • +
      +

      Integration with the browser event loop

      +

      +

      The diagram and the example below describe how Angular interacts with the browser's event loop.

      +
        +
      1. The browser's event-loop waits for an event to arrive. An event is a user interaction, timer event, +or network event (response from a server).
      2. +
      3. The event's callback gets executed. This enters the JavaScript context. The callback can + modify the DOM structure.
      4. +
      5. Once the callback executes, the browser leaves the JavaScript context and +re-renders the view based on DOM changes.
      6. +
      +

      Angular modifies the normal JavaScript flow by providing its own event processing loop. This +splits the JavaScript into classical and Angular execution context. Only operations which are +applied in the Angular execution context will benefit from Angular data-binding, exception handling, +property watching, etc... You can also use $apply() to enter the Angular execution context from JavaScript. Keep in +mind that in most places (controllers, services) $apply has already been called for you by the +directive which is handling the event. An explicit call to $apply is needed only when +implementing custom event callbacks, or when working with third-party library callbacks.

      +
        +
      1. Enter the Angular execution context by calling scope.$apply(stimulusFn), where stimulusFn is +the work you wish to do in the Angular execution context.
      2. +
      3. Angular executes the stimulusFn(), which typically modifies application state.
      4. +
      5. Angular enters the $digest loop. The +loop is made up of two smaller loops which process $evalAsync queue and the $watch list. The $digest loop keeps iterating until the model +stabilizes, which means that the $evalAsync queue is empty and the $watch list does not detect any changes.
      6. +
      7. The $evalAsync queue is used to +schedule work which needs to occur outside of current stack frame, but before the browser's +view render. This is usually done with setTimeout(0), but the setTimeout(0) approach +suffers from slowness and may cause view flickering since the browser renders the view after +each event.
      8. +
      9. The $watch list is a set of expressions +which may have changed since last iteration. If a change is detected then the $watch +function is called which typically updates the DOM with the new value.
      10. +
      11. Once the Angular $digest loop finishes +the execution leaves the Angular and JavaScript context. This is followed by the browser +re-rendering the DOM to reflect any changes.
      12. +
      +

      Here is the explanation of how the Hello world example achieves the data-binding effect when the +user enters text into the text field.

      +
        +
      1. During the compilation phase:
          +
        1. the ng-model and input directive set up a keydown listener on the <input> control.
        2. +
        3. the interpolation +sets up a $watch to be notified of +name changes.
        4. +
        +
      2. +
      3. During the runtime phase:
          +
        1. Pressing an 'X' key causes the browser to emit a keydown event on the input control.
        2. +
        3. The input directive +captures the change to the input's value and calls $apply("name = 'X';") to update the +application model inside the Angular execution context.
        4. +
        5. Angular applies the name = 'X'; to the model.
        6. +
        7. The $digest loop begins
        8. +
        9. The $watch list detects a change +on the name property and notifies the interpolation, +which in turn updates the DOM.
        10. +
        11. Angular exits the execution context, which in turn exits the keydown event and with it +the JavaScript execution context.
        12. +
        13. The browser re-renders the view with update text.
        14. +
        +
      4. +
      + + diff --git a/1.2.30/docs/partials/guide/security.html b/1.2.30/docs/partials/guide/security.html new file mode 100644 index 0000000000..df0fafce89 --- /dev/null +++ b/1.2.30/docs/partials/guide/security.html @@ -0,0 +1,43 @@ + Improve this Doc + + +

      Security

      +

      This document explains some of AngularJS's security features and best practices that you should +keep in mind as you build your application.

      +

      Expression Sandboxing

      +

      AngularJS's expressions are sandboxed not for security reasons, but instead to maintain a proper +separation of application responsibilities. For example, access to window is disallowed +because it makes it easy to introduce brittle global state into your application.

      +

      However, this sandbox is not intended to stop attackers who can edit the template before it's +processed by Angular. It may be possible to run arbitrary JavaScript inside double-curly bindings +if an attacker can modify them.

      +

      But if an attacker can change arbitrary HTML templates, there's nothing stopping them from doing:

      +
      <script>somethingEvil();</script>
      +
      +

      It's better to design your application in such a way that users cannot change client-side templates. +For instance:

      +
        +
      • Do not mix client and server templates
      • +
      • Do not use user input to generate templates dynamically
      • +
      • Do not run user input through $scope.$eval
      • +
      • Consider using CSP (but don't rely only on CSP)
      • +
      +

      Mixing client-side and server-side templates

      +

      In general, we recommend against this because it can create unintended XSS vectors.

      +

      However, it's ok to mix server-side templating in the bootstrap template (index.html) as long +as user input cannot be used on the server to output html that would then be processed by Angular +in a way that would cause allow for arbitrary code execution.

      +

      For instance, you can use server-side templating to dynamically generate CSS, URLs, etc, but not +for generating templates that are bootstrapped/compiled by Angular.

      +

      Reporting a security issue

      +

      Email us at security@angularjs.org to report any potential +security issues in AngularJS.

      +

      Please keep in mind the above points about Angular's expression language.

      +

      See also

      + + + diff --git a/1.2.30/docs/partials/guide/services.html b/1.2.30/docs/partials/guide/services.html new file mode 100644 index 0000000000..5192d74a41 --- /dev/null +++ b/1.2.30/docs/partials/guide/services.html @@ -0,0 +1,275 @@ + Improve this Doc + + +

      Services

      +

      Angular services are substitutable objects that are wired together using dependency +injection (DI). You can use services to organize and share code across your app.

      +

      Angular services are:

      +
        +
      • Lazily instantiated – Angular only instantiates a service when an application component depends +on it.
      • +
      • Singletons – Each component dependent on a service gets a reference to the single instance +generated by the service factory.
      • +
      +

      Angular offers several useful services (like $http), but for most applications +you'll also want to create your own.

      +
      +Note: Like other core Angular identifiers built-in services always start with $ +(e.g. $http). +
      + + +

      Using a Service

      +

      To use an Angular service, you add it as a dependency for the component (controller, service, +filter or directive) that depends on the service. Angular's dependency injection +subsystem takes care of the rest.

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div id="simple" ng-controller="MyController">
        <p>Let's try this simple notify service, injected into the controller...</p>
        <input ng-init="message='test'" ng-model="message" >
        <button ng-click="callNotify(message);">NOTIFY</button>
        <p>(you have to click 3 times to see an alert)</p>
      </div>
      +
      + +
      +
      angular.
       module('myServiceModule', []).
        controller('MyController', ['$scope','notify', function ($scope, notify) {
          $scope.callNotify = function(msg) {
            notify(msg);
          };
        }]).
       factory('notify', ['$window', function(win) {
          var msgs = [];
          return function(msg) {
            msgs.push(msg);
            if (msgs.length == 3) {
              win.alert(msgs.join("\n"));
              msgs = [];
            }
          };
        }]);
      +
      + +
      +
      it('should test service', function() {
        expect(element(by.id('simple')).element(by.model('message')).getAttribute('value'))
            .toEqual('test');
      });
      +
      + + + +
      +
      + + +

      +
      +Note: Angular uses +constructor injection. +
      + +

      Explicit Dependency Injection

      +

      A component should explicitly define its dependencies using one of the injection +annotation methods:

      +
        +
      1. Inline array injection annotation (preferred):

        +
        myModule.controller('MyController', ['$location', function($location) { ... }]);
        +
        +
      2. +
      3. $inject property:

        +
        var MyController = function($location) { ... };
        +MyController.$inject = ['$location'];
        +myModule.controller('MyController', MyController);
        +
        +
      4. +
      +
      +Best Practice: Use the array annotation shown above. +
      + +

      Implicit Dependency Injection

      +

      Even if you don't annotate your dependencies, Angular's DI can determine the dependency from the +name of the parameter. Let's rewrite the above example to show the use of this implicit dependency +injection of $window, $scope, and our notify service:

      +

      + +

      + +   + Edit in Plunker + +
      + + +
      +
      <div id="implicit" ng-controller="MyController">
        <p>Let's try the notify service, that is implicitly injected into the controller...</p>
        <input ng-init="message='test'" ng-model="message">
        <button ng-click="callNotify(message);">NOTIFY</button>
        <p>(you have to click 3 times to see an alert)</p>
      </div>
      +
      + +
      +
      angular.module('myServiceModuleDI', []).
        factory('notify', function($window) {
          var msgs = [];
          return function(msg) {
            msgs.push(msg);
            if (msgs.length == 3) {
              $window.alert(msgs.join("\n"));
              msgs = [];
            }
          };
        }).
        controller('MyController', function($scope, notify) {
          $scope.callNotify = function(msg) {
            notify(msg);
          };
        });
      +
      + + + +
      +
      + + +

      +
      +Careful: If you plan to minify your +code, your variable names will get renamed unless you use one of the annotation techniques above. +
      + +
      + If you use a tool like ngmin in your workflow you can + use implicit dependency notation within your codebase and let ngmin automatically convert such + injectable functions to the array notation prior to minifying. +
      + + +

      Creating Services

      +

      Application developers are free to define their own services by registering the service's name and +service factory function, with an Angular module.

      +

      The service factory function generates the single object or function that represents the +service to the rest of the application. The object or function returned by the service is +injected into any component (controller, service, filter or directive) that specifies a dependency +on the service.

      +

      Registering Services

      +

      Services are registered to modules via the Module API. +Typically you use the Module#factory API to register a service:

      +
      var myModule = angular.module('myModule', []);
      +myModule.factory('serviceId', function() {
      +  var shinyNewServiceInstance;
      +  //factory function body that constructs shinyNewServiceInstance
      +  return shinyNewServiceInstance;
      +});
      +
      +

      Note that you are not registering a service instance, but rather a factory function that +will create this instance when called.

      +

      Dependencies

      +

      Services can have their own dependencies. Just like declaring dependencies in a controller, you +declare dependencies by specifying them in the service's factory function signature.

      +

      The example module below has two services, each with various dependencies:

      +
      var batchModule = angular.module('batchModule', []);
      +
      +/**
      + * The `batchLog` service allows for messages to be queued in memory and flushed
      + * to the console.log every 50 seconds.
      + *
      + * @param {*} message Message to be logged.
      + */
      +batchModule.factory('batchLog', ['$interval', '$log', function($interval, $log) {
      +  var messageQueue = [];
      +
      +  function log() {
      +    if (messageQueue.length) {
      +      $log.log('batchLog messages: ', messageQueue);
      +      messageQueue = [];
      +    }
      +  }
      +
      +  // start periodic checking
      +  $interval(log, 50000);
      +
      +  return function(message) {
      +    messageQueue.push(message);
      +  }
      +}]);
      +
      +/**
      + * `routeTemplateMonitor` monitors each `$route` change and logs the current
      + * template via the `batchLog` service.
      + */
      +batchModule.factory('routeTemplateMonitor', ['$route', 'batchLog', '$rootScope',
      +  function($route, batchLog, $rootScope) {
      +    $rootScope.$on('$routeChangeSuccess', function() {
      +      batchLog($route.current ? $route.current.template : null);
      +    });
      +  }]);
      +
      +

      In the example, note that:

      +
        +
      • The batchLog service depends on the built-in $interval and +$log services.
      • +
      • The routeTemplateMonitor service depends on the built-in $route +service and our custom batchLog service.
      • +
      • Both services use the array notation to declare their dependencies.
      • +
      • The order of identifiers in the array is the same as the order of argument +names in the factory function.
      • +
      +

      Registering a Service with $provide

      +

      You can also register services via the $provide service inside of a +module's config function:

      +
      angular.module('myModule', []).config(function($provide) {
      +$provide.factory('serviceId', function() {
      +  var shinyNewServiceInstance;
      +  //factory function body that constructs shinyNewServiceInstance
      +  return shinyNewServiceInstance;
      +});
      +});
      +
      +

      This technique is often used in unit tests to mock out a service's dependencies.

      +

      Unit Testing

      +

      The following is a unit test for the notify service from the Creating Angular Services example above. The unit test example uses a Jasmine spy (mock) instead +of a real browser alert.

      +
      var mock, notify;
      +
      +beforeEach(function() {
      +  mock = {alert: jasmine.createSpy()};
      +
      +  module(function($provide) {
      +    $provide.value('$window', mock);
      +  });
      +
      +  inject(function($injector) {
      +    notify = $injector.get('notify');
      +  });
      +});
      +
      +it('should not alert first two notifications', function() {
      +  notify('one');
      +  notify('two');
      +
      +  expect(mock.alert).not.toHaveBeenCalled();
      +});
      +
      +it('should alert all after third notification', function() {
      +  notify('one');
      +  notify('two');
      +  notify('three');
      +
      +  expect(mock.alert).toHaveBeenCalledWith("one\ntwo\nthree");
      +});
      +
      +it('should clear messages after alert', function() {
      +  notify('one');
      +  notify('two');
      +  notify('third');
      +  notify('more');
      +  notify('two');
      +  notify('third');
      +
      +  expect(mock.alert.callCount).toEqual(2);
      +  expect(mock.alert.mostRecentCall.args).toEqual(["more\ntwo\nthird"]);
      +});
      +
      + + + + + + diff --git a/1.2.30/docs/partials/guide/templates.html b/1.2.30/docs/partials/guide/templates.html new file mode 100644 index 0000000000..be27b6bbcd --- /dev/null +++ b/1.2.30/docs/partials/guide/templates.html @@ -0,0 +1,47 @@ + Improve this Doc + + +

      In Angular, templates are written with HTML that contains Angular-specific elements and attributes. +Angular combines the template with information from the model and controller to render the dynamic +view that a user sees in the browser.

      +

      These are the types of Angular elements and attributes you can use:

      +
        +
      • Directive — An attribute or element that +augments an existing DOM element or represents a reusable DOM component.
      • +
      • Markup — The double curly brace notation {{ }} to bind expressions +to elements is built-in Angular markup.
      • +
      • Filter — Formats data for display.
      • +
      • Form controls — Validates user input.
      • +
      +

      The following code snippet shows a template with directives and +curly-brace expression bindings:

      +
      <html ng-app>
      +<!-- Body tag augmented with ngController directive  -->
      +<body ng-controller="MyController">
      +  <input ng-model="foo" value="bar">
      +  <!-- Button tag with ng-click directive, and
      +         string expression 'buttonText'
      +         wrapped in "{{ }}" markup -->
      +  <button ng-click="changeFoo()">{{buttonText}}</button>
      +  <script src="angular.js">
      +</body>
      +</html>
      +
      +

      In a simple app, the template consists of HTML, CSS, and Angular directives contained +in just one HTML file (usually index.html).

      +

      In a more complex app, you can display multiple views within one main page using "partials" – +segments of template located in separate HTML files. You can use the +ngView directive to load partials based on configuration passed +to the $route service. The angular tutorial shows this +technique in steps seven and eight.

      + + + + + + diff --git a/1.2.30/docs/partials/guide/unit-testing.html b/1.2.30/docs/partials/guide/unit-testing.html new file mode 100644 index 0000000000..a05b6ca7c7 --- /dev/null +++ b/1.2.30/docs/partials/guide/unit-testing.html @@ -0,0 +1,330 @@ + Improve this Doc + + +

      JavaScript is a dynamically typed language which comes with great power of expression, but it also +comes with almost no help from the compiler. For this reason we feel very strongly that any code +written in JavaScript needs to come with a strong set of tests. We have built many features into +Angular which makes testing your Angular applications easy. So there is no excuse for not testing.

      +

      Separation of Concerns

      +

      Unit testing as the name implies is about testing individual units of code. Unit tests try to +answer questions such as "Did I think about the logic correctly?" or "Does the sort function order +the list in the right order?"

      +

      In order to answer such a question it is very important that we can isolate the unit of code under test. +That is because when we are testing the sort function we don't want to be forced into creating +related pieces such as the DOM elements, or making any XHR calls in getting the data to sort.

      +

      While this may seem obvious it can be very difficult to call an individual function on a +typical project. The reason is that the developers often mix concerns resulting in a +piece of code which does everything. It makes an XHR request, it sorts the response data and then it +manipulates the DOM.

      +

      With Angular we try to make it easy for you to do the right thing, and so we +provide dependency injection for your XHR (which you can mock out) and we created abstractions which +allow you to sort your model without having to resort to manipulating the DOM. So that in the end, +it is easy to write a sort function which sorts some data, so that your test can create a data set, +apply the function, and assert that the resulting model is in the correct order. The test does not +have to wait for the XHR response to arrive, create the right kind of test DOM, nor assert that your +function has mutated the DOM in the right way.

      +

      With great power comes great responsibility

      +

      Angular is written with testability in mind, but it still requires that you do the right thing. +We tried to make the right thing easy, but if you ignore these guidelines you may end up with an +untestable application.

      +

      Dependency Injection

      +

      There are several ways in which you can get a hold of a dependency. You can:

      +
        +
      1. Create it using the new operator.
      2. +
      3. Look for it in a well-known place, also known as a global singleton.
      4. +
      5. Ask a registry (also known as service registry) for it. (But how do you get a hold of +the registry? Most likely by looking it up in a well known place. See #2.)
      6. +
      7. Expect it to be handed to you.
      8. +
      +

      Out of the four options in the list above, only the last one is testable. Let's look at why:

      +

      Using the new operator

      +

      While there is nothing wrong with the new operator fundamentally, a problem arises when calling new +on a constructor. This permanently binds the call site to the type. For example, let's say that we try to +instantiate an XHR that will retrieve data from the server.

      +
      function MyClass() {
      +this.doWork = function() {
      +  var xhr = new XHR();
      +  xhr.open(method, url, true);
      +  xhr.onreadystatechange = function() {...}
      +  xhr.send();
      +}
      +}
      +
      +

      A problem surfaces in tests when we would like to instantiate a MockXHR that would +allow us to return fake data and simulate network failures. By calling new XHR() we are +permanently bound to the actual XHR and there is no way to replace it. Yes, we could monkey +patch, but that is a bad idea for many reasons which are outside the scope of this document.

      +

      Here's an example of how the class above becomes hard to test when resorting to monkey patching:

      +
      var oldXHR = XHR;
      +XHR = function MockXHR() {};
      +var myClass = new MyClass();
      +myClass.doWork();
      +// assert that MockXHR got called with the right arguments
      +XHR = oldXHR; // if you forget this bad things will happen
      +
      +

      Global look-up:

      +

      Another way to approach the problem is to look for the service in a well-known location.

      +
      function MyClass() {
      +this.doWork = function() {
      +  global.xhr({
      +    method:'...',
      +    url:'...',
      +    complete:function(response){ ... }
      +  })
      +}
      +}
      +
      +

      While no new dependency instance is created, it is fundamentally the same as new in +that no way exists to intercept the call to global.xhr for testing purposes, other then +through monkey patching. The basic issue for testing is that a global variable needs to be mutated in +order to replace it with call to a mock method. For further explanation of why this is bad see: Brittle Global +State & Singletons

      +

      The class above is hard to test since we have to change the global state:

      +
      var oldXHR = global.xhr;
      +global.xhr = function mockXHR() {};
      +var myClass = new MyClass();
      +myClass.doWork();
      +// assert that mockXHR got called with the right arguments
      +global.xhr = oldXHR; // if you forget this bad things will happen
      +
      +

      Service Registry:

      +

      It may seem that this can be solved by having a registry of all the services and then +having the tests replace the services as needed.

      +
      function MyClass() {
      +var serviceRegistry = ????;
      +this.doWork = function() {
      +  var xhr = serviceRegistry.get('xhr');
      +  xhr({
      +    method:'...',
      +    url:'...',
      +    complete:function(response){ ... }
      +  })
      +}
      +
      +

      However, where does the serviceRegistry come from? If it is:

      +
        +
      • new-ed up, the test has no chance to reset the services for testing.
      • +
      • a global look-up then the service returned is global as well (but resetting is easier, since +only one global variable exists to be reset).
      • +
      +

      The class above is hard to test since we have to change the global state:

      +
      var oldServiceLocator = global.serviceLocator;
      +global.serviceLocator.set('xhr', function mockXHR() {});
      +var myClass = new MyClass();
      +myClass.doWork();
      +// assert that mockXHR got called with the right arguments
      +global.serviceLocator = oldServiceLocator; // if you forget this bad things will happen
      +
      +

      Passing in Dependencies:

      +

      Last, the dependency can be passed in.

      +
      function MyClass(xhr) {
      +this.doWork = function() {
      +  xhr({
      +    method:'...',
      +    url:'...',
      +    complete:function(response){ ... }
      +  })
      +}
      +
      +

      This is the preferred method since the code makes no assumptions about the origin of xhr and cares +instead about whoever created the class responsible for passing it in. Since the creator of the +class should be different code than the user of the class, it separates the responsibility of +creation from the logic. This is dependency-injection in a nutshell.

      +

      The class above is testable, since in the test we can write:

      +
      function xhrMock(args) {...}
      +var myClass = new MyClass(xhrMock);
      +myClass.doWork();
      +// assert that xhrMock got called with the right arguments
      +
      +

      Notice that no global variables were harmed in the writing of this test.

      +

      Angular comes with dependency injection built-in, making the right thing +easy to do, but you still need to do it if you wish to take advantage of the testability story.

      +

      Controllers

      +

      What makes each application unique is its logic, and the logic is what we would like to test. If the logic +for your application contains DOM manipulation, it will be hard to test. See the example +below:

      +
      function PasswordCtrl() {
      +// get references to DOM elements
      +var msg = $('.ex1 span');
      +var input = $('.ex1 input');
      +var strength;
      +
      +this.grade = function() {
      +  msg.removeClass(strength);
      +  var pwd = input.val();
      +  password.text(pwd);
      +  if (pwd.length > 8) {
      +    strength = 'strong';
      +  } else if (pwd.length > 3) {
      +    strength = 'medium';
      +  } else {
      +    strength = 'weak';
      +  }
      +  msg
      +   .addClass(strength)
      +   .text(strength);
      +}
      +}
      +
      +

      The code above is problematic from a testability point of view since it requires your test to have the right kind +of DOM present when the code executes. The test would look like this:

      +
      var input = $('<input type="text"/>');
      +var span = $('<span>');
      +$('body').html('<div class="ex1">')
      +  .find('div')
      +    .append(input)
      +    .append(span);
      +var pc = new PasswordCtrl();
      +input.val('abc');
      +pc.grade();
      +expect(span.text()).toEqual('weak');
      +$('body').empty();
      +
      +

      In angular the controllers are strictly separated from the DOM manipulation logic and this results in +a much easier testability story as the following example shows:

      +
      function PasswordCtrl($scope) {
      +$scope.password = '';
      +$scope.grade = function() {
      +  var size = $scope.password.length;
      +  if (size > 8) {
      +    $scope.strength = 'strong';
      +  } else if (size > 3) {
      +    $scope.strength = 'medium';
      +  } else {
      +    $scope.strength = 'weak';
      +  }
      +};
      +}
      +
      +

      and the test is straight forward:

      +
      var $scope = {};
      +var pc = $controller('PasswordCtrl', { $scope: $scope });
      +$scope.password = 'abc';
      +$scope.grade();
      +expect($scope.strength).toEqual('weak');
      +
      +

      Notice that the test is not only much shorter, it is also easier to follow what is happening. We say +that such a test tells a story, rather than asserting random bits which don't seem to be related.

      +

      Filters

      +

      Filters are functions which transform the data into a user readable +format. They are important because they remove the formatting responsibility from the application +logic, further simplifying the application logic.

      +
      myModule.filter('length', function() {
      +return function(text) {
      +  return ('' + (text || '')).length;
      +}
      +});
      +
      +var length = $filter('length');
      +expect(length(null)).toEqual(0);
      +expect(length('abc')).toEqual(3);
      +
      +

      Directives

      +

      Directives in angular are responsible for encapsulating complex functionality within custom HTML tags, +attributes, classes or comments. Unit tests are very important for directives because the components +you create with directives may be used throughout your application and in many different contexts.

      +

      Simple HTML Element Directive

      +

      Let's start with an angular app with no dependencies.

      +
      var app = angular.module('myApp', []);
      +
      +

      Now we can add a directive to our app.

      +
      app.directive('aGreatEye', function () {
      +return {
      +    restrict: 'E',
      +    replace: true,
      +    template: '<h1>lidless, wreathed in flame, {{1 + 1}} times</h1>'
      +};
      +});
      +
      +

      This directive is used as a tag <a-great-eye></a-great-eye>. It replaces the entire tag with the +template <h1>lidless, wreathed in flame, {{1 + 1}} times</h1>. Now we are going to write a jasmine unit test to +verify this functionality. Note that the expression {{1 + 1}} times will also be evaluated in the rendered content.

      +
      describe('Unit testing great quotes', function() {
      +var $compile;
      +var $rootScope;
      +
      +// Load the myApp module, which contains the directive
      +beforeEach(module('myApp'));
      +
      +// Store references to $rootScope and $compile
      +// so they are available to all tests in this describe block
      +beforeEach(inject(function(_$compile_, _$rootScope_){
      +  // The injector unwraps the underscores (_) from around the parameter names when matching
      +  $compile = _$compile_;
      +  $rootScope = _$rootScope_;
      +}));
      +
      +it('Replaces the element with the appropriate content', function() {
      +    // Compile a piece of HTML containing the directive
      +    var element = $compile("<a-great-eye></a-great-eye>")($rootScope);
      +    // fire all the watches, so the scope expression {{1 + 1}} will be evaluated
      +    $rootScope.$digest();
      +    // Check that the compiled element contains the templated content
      +    expect(element.html()).toContain("lidless, wreathed in flame, 2 times");
      +});
      +});
      +
      +

      We inject the $compile service and $rootScope before each jasmine test. The $compile service is used +to render the aGreatEye directive. After rendering the directive we ensure that the directive has +replaced the content and "lidless, wreathed in flame, 2 times" is present.

      +

      Testing Transclusion Directives

      +

      Directives that use transclusion are treated specially by the compiler. Before their compile +function is called, the contents of the directive's element are removed from the element and +provided via a transclusion function. The directive's template is then appended to the directive's +element, to which it can then insert the transcluded content into its template.

      +

      Before compilation:

      +
      <div translude-directive>
      +Some transcluded content
      +</div>
      +
      +

      After transclusion extraction:

      +
      <div transclude-directive></div>
      +
      +

      After compilation:

      +
      <div transclude-directive>
      +Some Template
      +<span ng-transclude>Some transcluded content</span>
      +</div>
      +
      +

      If the directive is using 'element' transclusion, the compiler will actually remove the +directive's entire element from the DOM and replace it with a comment node. The compiler then +inserts the directive's template "after" this comment node, as a sibling.

      +

      Before compilation

      +
      <div element-transclude>
      +Some Content
      +</div>
      +
      +

      After transclusion extraction

      +
      <!-- elementTransclude -->
      +
      +

      After compilation:

      +
      <!-- elementTransclude -->
      +<div element-transclude>
      +  Some Template
      +  <span ng-transclude>Some transcluded content</span>
      +</div>
      +
      +

      It is important to be aware of this when writing tests for directives that use 'element' +transclusion. If you place the directive on the root element of the DOM fragment that you +pass to $compile, then the DOM node returned from the linking function will be the +comment node and you will lose the ability to access the template and transcluded content.

      +
      var node = $compile('<div element-transclude></div>')($rootScope);
      +expect(node[0].nodeType).toEqual(node.COMMENT_NODE);
      +expect(node[1]).toBeUndefined();
      +
      +

      To cope with this you simply ensure that your 'element' transclude directive is wrapped in an +element, such as a <div>.

      +
      var node = $compile('<div><div element-transclude></div></div>')($rootScope);
      +var contents = node.contents();
      +expect(contents[0].nodeType).toEqual(node.COMMENT_NODE);
      +expect(contents[1].nodeType).toEqual(node.ELEMENT_NODE);
      +
      +

      Testing Directives With External Templates

      +

      If your directive uses templateUrl, consider using +karma-ng-html2js-preprocessor +to pre-compile HTML templates and thus avoid having to load them over HTTP during test execution. +Otherwise you may run into issues if the test directory hierarchy differs from the application's.

      +

      Sample project

      +

      See the angular-seed project for an example.

      + + diff --git a/1.2.30/docs/partials/misc.html b/1.2.30/docs/partials/misc.html new file mode 100644 index 0000000000..d749d53a23 --- /dev/null +++ b/1.2.30/docs/partials/misc.html @@ -0,0 +1,12 @@ + Improve this Doc + + +

      Miscellaneous Links

      + + + diff --git a/1.2.30/docs/partials/misc/contribute.html b/1.2.30/docs/partials/misc/contribute.html new file mode 100644 index 0000000000..3fc60a9646 --- /dev/null +++ b/1.2.30/docs/partials/misc/contribute.html @@ -0,0 +1,152 @@ + Improve this Doc + + +

      Building and Testing AngularJS

      +

      This document describes how to set up your development environment to build and test AngularJS, and +explains the basic mechanics of using git, node, npm, grunt, and bower.

      +

      See the contributing guidelines +for how to contribute your own code to AngularJS.

      +
        +
      1. Installing Dependencies
      2. +
      3. Forking Angular on Github
      4. +
      5. Building AngularJS
      6. +
      7. Running a Local Development Web Server
      8. +
      9. Running the Unit Test Suite
      10. +
      11. Running the End-to-end Test Suite
      12. +
      +

      Installing Dependencies

      +

      Before you can build AngularJS, you must install and configure the following dependencies on your +machine:

      +
        +
      • Git: The Github Guide to +Installing Git is a good source of information.

        +
      • +
      • Node.js: We use Node to generate the documentation, run a +development web server, run tests, and generate distributable files. Depending on your system, you can install Node either from source or as a +pre-packaged bundle.

        +
      • +
      • Java: We minify JavaScript using our +Closure Tools jar. Make sure you have Java (version 7 or higher) installed +and included in your PATH variable.

        +
      • +
      • Grunt: We use Grunt as our build system. Install the grunt command-line tool globally with:

        +
        npm install -g grunt-cli
        +
        +
      • +
      • Bower: We use Bower to manage client-side packages for the docs. Install the bower command-line tool globally with:

        +
        npm install -g bower
        +
        +
      • +
      +

      Note: You may need to use sudo (for OSX, *nix, BSD etc) or run your command shell as Administrator (for Windows) to install Grunt & +Bower globally.

      +

      Forking Angular on Github

      +

      To create a Github account, follow the instructions here. +Afterwards, go ahead and fork the main AngularJS repository.

      +

      Building AngularJS

      +

      To build AngularJS, you clone the source code repository and use Grunt to generate the non-minified and +minified AngularJS files:

      +
      # Clone your Github repository:
      +git clone "git@github.com:<github username>/angular.js.git"
      +
      +# Go to the AngularJS directory:
      +cd angular.js
      +
      +# Add the main AngularJS repository as an upstream remote to your repository:
      +git remote add upstream "https://github.com/angular/angular.js.git"
      +
      +# Install node.js dependencies:
      +npm install
      +
      +# Install bower components:
      +bower install
      +
      +# Build AngularJS:
      +grunt package
      +
      +
      +Note: If you're using Windows, you must use an elevated command prompt (right click, run as +Administrator). This is because grunt package creates some symbolic links. +
      + +
      +Note: If you're using Linux, and npm install fails with the message +'Please try running this command again as root/Administrator.', you may need to globally install grunt and bower: +
        +
      • sudo npm install -g grunt-cli
      • +
      • sudo npm install -g bower
      • +
      + +
      + +

      The build output can be located under the build directory. It consists of the following files and +directories:

      +
        +
      • angular-<version>.zip — The complete zip file, containing all of the release build +artifacts.

        +
      • +
      • angular.js — The non-minified angular script.

        +
      • +
      • angular.min.js — The minified angular script.

        +
      • +
      • angular-scenario.js — The angular End2End test runner.

        +
      • +
      • docs/ — A directory that contains all of the files needed to run docs.angularjs.org.

        +
      • +
      • docs/index.html — The main page for the documentation.

        +
      • +
      • docs/docs-scenario.html — The End2End test runner for the documentation application.

        +
      • +
      +

      Running a Local Development Web Server

      +

      To debug code and run end-to-end tests, it is often useful to have a local HTTP server. For this purpose, we have +made available a local web server based on Node.js.

      +
        +
      1. To start the web server, run:

        +
        grunt webserver
        +
        +
      2. +
      3. To access the local server, enter the following URL into your web browser:

        +
        http://localhost:8000/
        +
        +

        By default, it serves the contents of the AngularJS project directory.

        +
      4. +
      5. To access the locally served docs, visit this URL:

        +
        http://localhost:8000/build/docs/
        +
        +
      6. +
      +

      Running the Unit Test Suite

      +

      We write unit and integration tests with Jasmine and execute them with Karma. To run all of the +tests once on Chrome run:

      +
      grunt test:unit
      +
      +

      To run the tests on other browsers (Chrome, ChromeCanary, Firefox, Opera and Safari are pre-configured) use:

      +
      grunt test:unit --browsers Opera,Firefox
      +
      +

      Note there should be no spaces between browsers. Opera, Firefox is INVALID.

      +

      During development it's however more productive to continuously run unit tests every time the source or test files +change. To execute tests in this mode run:

      +
        +
      1. To start the Karma server, capture Chrome browser and run unit tests, run:

        +
        grunt autotest
        +
        +
      2. +
      3. To capture more browsers, open this URL in the desired browser (URL might be different if you have multiple instance +of Karma running, read Karma's console output for the correct URL):

        +
        http://localhost:9876/
        +
        +
      4. +
      5. To re-run tests just change any source or test file.

        +
      6. +
      +

      To learn more about all of the preconfigured Grunt tasks run:

      +
      grunt --help
      +
      +

      Running the End-to-end Test Suite

      +

      Angular's end to end tests are run with Protractor. Simply run:

      +
      grunt test:e2e
      +
      +

      This will start the webserver and run the tests on Chrome.

      + + diff --git a/1.2.30/docs/partials/misc/downloading.html b/1.2.30/docs/partials/misc/downloading.html new file mode 100644 index 0000000000..3e77a1cdff --- /dev/null +++ b/1.2.30/docs/partials/misc/downloading.html @@ -0,0 +1,85 @@ + Improve this Doc + + +

      Including angular scripts from the Google CDN

      +

      The quickest way to get started is to point your html <script> tag to a Google CDN URL. +This way, you don't have to download anything or maintain a local copy.

      +

      There are two types of angular script URLs you can point to, one for development and one for +production:

      +
        +
      • angular.js — This is the human-readable, non-minified version, suitable for web +development.
      • +
      • angular.min.js — This is the minified version, which we strongly suggest you use in +production.
      • +
      +

      To point your code to an angular script on the Google CDN server, use the following template. This +example points to the minified version 1.2.0:

      +
      <!doctype html>
      +<html ng-app>
      +  <head>
      +    <title>My Angular App</title>
      +    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>
      +  </head>
      +  <body>
      +  </body>
      +</html>
      +
      +

      Note that only versions 1.0.1 and above are available on the CDN, if you need an earlier version +you can use the http://code.angularjs.org/ URL which was the previous recommended location for +hosted code source. If you're still using the angular server you should switch to the CDN version +for even faster loading times.

      +

      Downloading and hosting angular files locally

      +

      This option is for those who want to work with angular offline, or those who want to host the +angular files on their own servers.

      +

      If you navigate to http://code.angularjs.org/, you'll see a directory listing with all of the +angular versions since we started releasing versioned build artifacts (quite late in the project +lifetime). Each directory contains all artifacts that we released for a particular version. +Download the version you want and have fun.

      +

      Each directory under http://code.angularjs.org/ includes the following set of files:

      +
        +
      • angular.js — This file is non-obfuscated, non-minified, and human-readable by +opening it it any editor or browser. In order to get better error messages during development, you +should always use this non-minified angular script.

        +
      • +
      • angular.min.js — This is a minified and obfuscated version of +angular.js created with the Closure compiler. Use this version for production in order +to minimize the size of the application that is downloaded by your user's browser.

        +
      • +
      • angular.zip — This is a zip archive that contains all of the files released +for this angular version. Use this file to get everything in a single download.

        +
      • +
      • angular-mocks.js — This file contains an implementation of mocks that makes +testing angular apps even easier. Your unit/integration test harness should load this file after +angular.js is loaded.

        +
      • +
      • angular-scenario.js — This file is a very nifty JavaScript file that allows you +to write and execute end-to-end tests for angular applications.

        +
      • +
      • angular-loader.min.js — Module loader for Angular modules. If you are loading multiple script files containing +Angular modules, you can load them asynchronously and in any order as long as you load this file first. Often the +contents of this file are copy&pasted into the index.html to avoid even the initial request to angular-loader.min.js. +See angular-seed for an example of usage.

        +
      • +
      • Additional Angular modules: optional modules with additional functionality. These files should be loaded +after the core angular.js file:

        +
          +
        • angular-animate.js - Enable animation support
        • +
        • angular-cookies.js - A convenient wrapper for reading and writing browser cookies
        • +
        • angular-resource.js - Interaction support with RESTful services via the $resource service
        • +
        • angular-route.js - Routing and deeplinking services and directives for angular apps
        • +
        • angular-sanitize.js - Functionality to sanitize HTML
        • +
        • angular-touch.js - Touch events and other helpers for touch-enabled devices
        • +
        +
      • +
      +
        +
      • docs — this directory contains all the files that compose the +http://docs.angularjs.org/ documentation app. These files are handy to see the older version of +our docs, or even more importantly, view the docs offline.

        +
      • +
      • i18n - this directory contains locale specific ngLocale angular modules to override the defaults +defined in the ng module.

        +
      • +
      + + diff --git a/1.2.30/docs/partials/misc/faq.html b/1.2.30/docs/partials/misc/faq.html new file mode 100644 index 0000000000..2e29641574 --- /dev/null +++ b/1.2.30/docs/partials/misc/faq.html @@ -0,0 +1,139 @@ + Improve this Doc + + +

      FAQ

      +

      Questions

      +

      Why is this project called "AngularJS"? Why is the namespace called "ng"?

      +

      Because HTML has Angular brackets and "ng" sounds like "Angular".

      +

      Is AngularJS a library, framework, plugin or a browser extension?

      +

      AngularJS fits the definition of a framework the best, even though it's much more lightweight than +a typical framework and that's why many confuse it with a library.

      +

      AngularJS is 100% JavaScript, 100% client-side and compatible with both desktop and mobile browsers. +So it's definitely not a plugin or some other native browser extension.

      +

      Is AngularJS a templating system?

      +

      At the highest level, Angular does look like just another templating system. But there is one +important reason why the Angular templating system is different, that makes it very good fit for +application development: bidirectional data binding. The template is compiled in the browser and +the compilation step produces a live view. This means you, the developers, don't need to write +code to constantly sync the view with the model and the model with the view as in other +templating systems.

      +

      Do I need to worry about security holes in AngularJS?

      +

      Like any other technology, AngularJS is not impervious to attack. Angular does, however, provide +built-in protection from basic security holes including cross-site scripting and HTML injection +attacks. AngularJS does round-trip escaping on all strings for you and even offers XSRF protection +for server-side communication.

      +

      AngularJS was designed to be compatible with other security measures like Content Security Policy +(CSP), HTTPS (SSL/TLS) and server-side authentication and authorization that greatly reduce the +possible attack vectors and we highly recommend their use.

      +

      Can I download the source, build, and host the AngularJS environment locally?

      +

      Yes. See instructions in Downloading.

      +

      What browsers does Angular work with?

      +

      We run our extensive test suite against the following browsers: Safari, Chrome, Firefox, Opera, +IE8, IE9 and mobile browsers (Android, Chrome Mobile, iOS Safari). See Internet +Explorer Compatibility for more details in supporting legacy IE browsers.

      +

      What's Angular's performance like?

      +

      The startup time heavily depends on your network connection, state of the cache, browser used and +available hardware, but typically we measure bootstrap time in tens or hundreds of milliseconds.

      +

      The runtime performance will vary depending on the number and complexity of bindings on the page +as well as the speed of your backend (for apps that fetch data from the backend). Just for an +illustration we typically build snappy apps with hundreds or thousands of active bindings.

      +

      How big is the angular.js file that I need to include?

      +

      The size of the file is < 36KB compressed and minified.

      +

      Can I use the open-source Closure Library with Angular?

      +

      Yes, you can use widgets from the Closure Library +in Angular.

      +

      Does Angular use the jQuery library?

      +

      Yes, Angular can use jQuery if it's present in your app when the +application is being bootstrapped. If jQuery is not present in your script path, Angular falls back +to its own implementation of the subset of jQuery that we call jQLite.

      +

      Due to a change to use on()/off() rather than bind()/unbind(), Angular 1.2 only operates with +jQuery 1.7.1 or above. However, Angular does not currently support jQuery 2.x or above.

      +

      What is testability like in Angular?

      +

      Very testable and designed this way from ground up. It has an integrated dependency injection +framework, provides mocks for many heavy dependencies (server-side communication). See +ngMock for details.

      +

      How can I learn more about Angular?

      +

      Watch the July 17, 2012 talk +"AngularJS Intro + Dependency Injection".

      +

      How is Angular licensed?

      +

      The MIT License.

      +

      Can I download and use the Angular logo artwork?

      +

      Yes! You can find design files in our github repository, under "angular.js/images/logo" +The logo design is licensed under a "Creative Commons Attribution-ShareAlike 3.0 Unported License". If you have some other use in mind, contact us.

      +

      How can I get some AngularJS schwag?

      +

      We often bring a few t-shirts and stickers to events where we're presenting. If you want to order your own, the folks who +make our schwag will be happy to do a custom run for you, based on our existing template. By using the design they have on file, +they'll waive the setup costs, and you can order any quantity you need.

      +

      Stickers +For orders of 250 stickers or more within Canada or the United States, contact Tom Witting (or anyone in sales) via email at tom@stickergiant.com, and tell him you want to order some AngularJS +stickers just like the ones in job #42711. You'll have to give them your own info for billing and shipping.

      +

      As long as the design stays exactly the same, StickerGiant will give you a reorder discount.

      +

      For a smaller order, or for other countries, we suggest downloading the logo artwork and making your own.

      +

      Common Pitfalls

      +

      The Angular support channel (#angularjs on Freenode) sees a number of recurring pitfalls that new users of Angular fall into. +This document aims to point them out before you discover them the hard way.

      +

      DOM Manipulation

      +

      Stop trying to use jQuery to modify the DOM in controllers. Really. +That includes adding elements, removing elements, retrieving their contents, showing and hiding them. +Use built-in directives, or write your own where necessary, to do your DOM manipulation. +See below about duplicating functionality.

      +

      If you're struggling to break the habit, consider removing jQuery from your app. +Really. Angular has the $http service and powerful directives that make it almost always unnecessary. +Angular's bundled jQLite has a handful of the features most commonly used in writing Angular directives, especially binding to events.

      +

      Trying to duplicate functionality that already exists

      +

      There's a good chance that your app isn't the first to require certain functionality. +There are a few pieces of Angular that are particularly likely to be reimplemented out of old habits.

      +

      ng-repeat

      +

      ng-repeat gets this a lot. +People try to use jQuery (see above) to add more elements to some container as they're fetched from the server. +No, bad dog. +This is what ng-repeat is for, and it does its job very well. +Store the data from the server in an array on your $scope, and bind it to the DOM with ng-repeat.

      +

      ng-show

      +

      ng-show gets this frequently too. +Conditionally showing and hiding things using jQuery is a common pattern in other apps, but Angular has a better way. +ng-show (and ng-hide) conditionally show and hide elements based on boolean expressions. +Describe the conditions for showing and hiding an element in terms of $scope variables:

      +
      <div ng-show="!loggedIn">Click <a href="#/login">here</a> to log in</div>
      +
      +

      Note also the counterpart ng-hide and similar ng-disabled. +Note especially the powerful ng-switch that should be used instead of several mutually exclusive ng-shows.

      +

      ng-class

      +

      ng-class is the last of the big three. +Conditionally applying classes to elements is another thing commonly done manually using jQuery. +Angular, of course, has a better way. +You can give ng-class a whitespace-separated set of class names, and then it's identical to ordinary class. +That's not very exciting, so there's a second syntax:

      +
      <div ng-class="{ errorClass: isError, warningClass: isWarning, okClass: !isError && !isWarning }">...</div>
      +
      +

      Where you give ng-class an object, whose keys are CSS class names and whose values are conditional expressions using $scope variables. +The element will then have all the classes whose conditions are truthy, and none of those whose conditions are falsy.

      +

      Note also the handy ng-class-even and ng-class-odd, and the related though somewhat different ng-style.

      +

      $watch and $apply

      +

      Angular's two-way data binding is the root of all awesome in Angular. +However, it's not magic, and there are some situations where you need to give it a nudge in the right direction.

      +

      When you bind a value to an element in Angular using ng-model, ng-repeat, etc., Angular creates a $watch on that value. +Then whenever a value on a scope changes, all $watches observing that element are executed, and everything updates.

      +

      Sometimes, usually when you're writing a custom directive, you will have to define your own $watch on a scope value to make the directive react to changes.

      +

      On the flip side, sometimes you change a scope value in some code but the app doesn't react to it. +Angular checks for scope variable changes after pieces of your code have finished running; for example, when ng-click calls a function on your scope, Angular will check for changes and react. +However, some code is outside of Angular and you'll have to call scope.$apply() yourself to trigger the update. +This is most commonly seen in event handlers in custom directives.

      +

      Combining ng-repeat with other directives

      +

      ng-repeat is extremely useful, one of the most powerful directives in Angular. +However the transformation it applies to the DOM is substantial. +Therefore applying other directives (such as ng-show, ng-controller and others) to the same element as ng-repeat generally leads to problems.

      +

      If you want to apply a directive to the whole repeat, wrap the repeat in a parent element and put it there. +If you want to apply a directive to each inner piece of the repeat, put it on a child of the element with ng-repeat.

      +

      $rootScope exists, but it can be used for evil

      +

      Scopes in Angular form a hierarchy, prototypally inheriting from a root scope at the top of the tree. +Usually this can be ignored, since most views have a controller, and therefore a scope, of their own.

      +

      Occasionally there are pieces of data that you want to make global to the whole app. +For these, you can inject $rootScope and set values on it like any other scope. +Since the scopes inherit from the root scope, these values will be available to the expressions attached to directives like ng-show just like values on your local $scope.

      +

      Of course, global state sucks and you should use $rootScope sparingly, like you would (hopefully) use with global variables in any language. +In particular, don't use it for code, only data. +If you're tempted to put a function on $rootScope, it's almost always better to put it in a service that can be injected where it's needed, and more easily tested.

      +

      Conversely, don't create a service whose only purpose in life is to store and return bits of data.

      + + diff --git a/1.2.30/docs/partials/misc/started.html b/1.2.30/docs/partials/misc/started.html new file mode 100644 index 0000000000..8e850a16ea --- /dev/null +++ b/1.2.30/docs/partials/misc/started.html @@ -0,0 +1,36 @@ + Improve this Doc + + +

      Getting Started

      +

      We want you to have an easy time while starting to use Angular. We've put together the following steps on your path to +becoming an Angular expert.

      +
        +
      1. Read the conceptual overview.
        Understand Angular's vocabulary and how all the Angular +components work together.
      2. +
      3. Do the AngularJS Tutorial.
        Walk end-to-end through building an application complete with tests +on top of a node.js web server. Covers every major AngularJS feature and shows you how to set up your development +environment.
      4. +
      5. Download or clone the Seed App project template.
        Gives you a +starter app with a directory layout, test harness, and scripts to begin building your application.
      6. +
      +

      Further Steps

      +

      Watch Videos

      +

      If you haven’t had a chance to watch the videos from the homepage, please check out:

      + +

      And visit our YouTube channel for more AngularJS video presentations and +tutorials.

      +

      Subscribe

      + +

      Read more

      +

      The AngularJS documentation includes the Developer Guide covering concepts and the +API Reference for syntax and usage.

      + + diff --git a/1.2.30/docs/partials/tutorial.html b/1.2.30/docs/partials/tutorial.html new file mode 100644 index 0000000000..e2137a4ed4 --- /dev/null +++ b/1.2.30/docs/partials/tutorial.html @@ -0,0 +1,193 @@ + Improve this Doc + + +

      PhoneCat Tutorial App

      +

      A great way to get introduced to AngularJS is to work through this tutorial, which walks you through +the construction of an AngularJS web app. The app you will build is a catalog that displays a list +of Android devices, lets you filter the list to see only devices that interest you, and then view +details for any device.

      +

      demo
+application running in the browser

      +

      Follow the tutorial to see how Angular makes browsers smarter — without the use of native +extensions or plug-ins:

      +
        +
      • See examples of how to use client-side data binding to build dynamic views of data that change +immediately in response to user actions.
      • +
      • See how Angular keeps your views in sync with your data without the need for DOM manipulation.
      • +
      • Learn a better, easier way to test your web apps, with Karma and Protractor.
      • +
      • Learn how to use dependency injection and services to make common web tasks, such as getting data +into your app, easier.
      • +
      +

      When you finish the tutorial you will be able to:

      +
        +
      • Create a dynamic application that works in all modern browsers.
      • +
      • Use data binding to wire up your data model to your views.
      • +
      • Create and run unit tests, with Karma.
      • +
      • Create and run end to end tests, with Protractor.
      • +
      • Move application logic out of the template and into Controllers.
      • +
      • Get data from a server using Angular services.
      • +
      • Apply animations to your application, using ngAnimate.
      • +
      • Identify resources for learning more about AngularJS.
      • +
      +

      The tutorial guides you through the entire process of building a simple application, including +writing and running unit and end-to-end tests. Experiments at the end of each step provide +suggestions for you to learn more about AngularJS and the application you are building.

      +

      You can go through the whole tutorial in a couple of hours or you may want to spend a pleasant day +really digging into it. If you're looking for a shorter introduction to AngularJS, check out the +Getting Started document.

      +

      Get Started

      +

      The rest of this page explains how you can set up your local machine for development. +If you just want to read the tutorial then you can just go straight to the first step: +Step 0 - Bootstrapping.

      +

      Working with the code

      +

      You can follow along with this tutorial and hack on the code in the comfort of your own computer. +In this way you can get hands-on practice of really writing AngularJS code and also on using the +recommended testing tools.

      +

      The tutorial relies on the use of the Git versioning system for source code management. +You don't need to know anything about Git to follow the tutorial other than how to install and run +a few git commands.

      +

      Install Git

      +

      You can download and install Git from http://git-scm.com/download. Once installed you should have +access to the git command line tool. The main commands that you will need to use are:

      +
        +
      • git clone ... : clone a remote repository onto your local machine
      • +
      • git checkout ... : check out a particular branch or a tagged version of the code to hack on
      • +
      +

      Download angular-phonecat

      +

      Clone the angular-phonecat repository located at GitHub by running the following +command:

      +
      git clone --depth=14 https://github.com/angular/angular-phonecat.git
      +
      +

      This command creates the angular-phonecat directory in your current directory.

      +
      The --depth=14 option just tells Git to pull down only the last 14 commits. This makes the +download much smaller and faster. +
      + +

      Change your current directory to angular-phonecat.

      +
      cd angular-phonecat
      +
      +

      The tutorial instructions, from now on, assume you are running all commands from the +angular-phonecat directory.

      +

      Install Node.js

      +

      If you want to run the preconfigured local web-server and the test tools then you will also need +Node.js v0.10.27+.

      +

      You can download a Node.js installer for your operating system from http://nodejs.org/download/.

      +

      Check the version of Node.js that you have installed by running the following command:

      +
      node --version
      +
      +

      In Debian based distributions, there is a name clash with another utility called node. The +suggested solution is to also install the nodejs-legacy apt package, which renames node to +nodejs.

      +
      apt-get install nodejs-legacy npm
      +nodejs --version
      +npm --version
      +
      +
      If you need to run a different versions of node.js + in your local environment, consider installing + + Node Version Manager (nvm) + . +
      + +

      Once you have Node.js installed on your machine you can download the tool dependencies by running:

      +
      npm install
      +
      +

      This command will download the following tools, into the node_modules directory:

      +
        +
      • Bower - client-side code package manager
      • +
      • Http-Server - simple local static web server
      • +
      • Karma - unit test runner
      • +
      • Protractor - end to end (E2E) test runner
      • +
      +

      Running npm install will also automatically use bower to download the Angular framework into the +app/bower_components directory.

      +
      + Note the angular-phonecat project is setup to install and run these utilities via npm scripts. + This means that you do not have to have any of these utilities installed globally on your system + to follow the tutorial. See Installing Helper Tools below for more information. +
      + +

      The project is preconfigured with a number of npm helper scripts to make it easy to run the common +tasks that you will need while developing:

      +
        +
      • npm start : start a local development web-server
      • +
      • npm test : start the Karma unit test runner
      • +
      • npm run protractor : run the Protractor end to end (E2E) tests
      • +
      • npm run update-webdriver : install the drivers needed by Protractor
      • +
      +

      Install Helper Tools (optional)

      +

      The Bower, Http-Server, Karma and Protractor modules are also executables, which can be installed +globally and run directly from a terminal/command prompt. You don't need to do this to follow the +tutorial, but if you decide you do want to run them directly, you can install these modules globally +using, sudo npm install -g ....

      +

      For instance to install the Bower command line executable you would do:

      +
      sudo npm install -g bower
      +
      +

      (Omit the sudo if running on Windows)

      +

      Then you can run the bower tool directly, such as:

      +
      bower install
      +
      +

      Running Development Web Server

      +

      While Angular applications are purely client-side code, and it is possible to open them in a web +browser directly from the file system, it is better to serve them from a HTTP web server. In +particular, for security reasons, most modern browsers will not allow JavaScript to make server +requests if the page is loaded directly from the file system.

      +

      The angular-phonecat project is configured with a simple static web server for hosting the +application during development. Start the web server by running:

      +
      npm start
      +
      +

      This will create a local webserver that is listening to port 8000 on your local machine. +You can now browse to the application at:

      +
      http://localhost:8000/app/index.html
      +
      +

      Running Unit Tests

      +

      We use unit tests to ensure that the JavaScript code in our application is operating correctly. +Unit tests focus on testing small isolated parts of the application. The unit tests are kept in the +test/unit directory.

      +

      The angular-phonecat project is configured to use Karma to run the unit tests for the +application. Start Karma by running:

      +
      npm test
      +
      +

      This will start the Karma unit test runner. Karma will read the configuration file at +test/karma.conf.js. This configuration file tells Karma to:

      +
        +
      • open up a Chrome browser and connect it to Karma
      • +
      • execute all the unit tests in this browser
      • +
      • report the results of these tests in the terminal/command line window
      • +
      • watch all the project's JavaScript files and re-run the tests whenever any of these change
      • +
      +

      It is good to leave this running all the time, in the background, as it will give you immediate +feedback about whether your changes pass the unit tests while you are working on the code.

      +

      Running End to End Tests

      +

      We use End to End tests to ensure that the application as a whole operates as expected. +End to End tests are designed to test the whole client side application, in particular that the +views are displaying and behaving correctly. It does this by simulating real user interaction with +the real application running in the browser.

      +

      The End to End tests are kept in the test/e2e directory.

      +

      The angular-phonecat project is configured to use Protractor to run the End to End +tests for the application. Protractor relies upon a set of drivers to allow it to interact with +the browser. You can install these drivers by running:

      +
      npm run update-webdriver
      +
      +

      (You should only need to do this once.)

      +

      Since Protractor works by interacting with a running application, we need to start our web server:

      +
      npm start
      +
      +

      Then in a separate terminal/command line window, we can run the Protractor test scripts against the +application by running:

      +
      npm run protractor
      +
      +

      Protractor will read the configuration file at test/protractor-conf.js. This configuration tells +Protractor to:

      +
        +
      • open up a Chrome browser and connect it to the application
      • +
      • execute all the End to End tests in this browser
      • +
      • report the results of these tests in the terminal/command line window
      • +
      • close down the browser and exit
      • +
      +

      It is good to run the end to end tests whenever you make changes to the HTML views or want to check +that the application as a whole is executing correctly. It is very common to run End to End tests +before pushing a new commit of changes to a remote repository.

      + + + diff --git a/1.2.30/docs/partials/tutorial/step_00.html b/1.2.30/docs/partials/tutorial/step_00.html new file mode 100644 index 0000000000..f5694e4fbf --- /dev/null +++ b/1.2.30/docs/partials/tutorial/step_00.html @@ -0,0 +1,131 @@ + Improve this Doc + + +
        + + +

        You are now ready to build the AngularJS phonecat app. In this step, you will become familiar +with the most important source code files, learn how to start the development servers bundled with +angular-seed, and run the application in the browser.

        +

        In angular-phonecat directory, run this command:

        +
        git checkout -f step-0
        +
        +

        This resets your workspace to step 0 of the tutorial app.

        +

        You must repeat this for every future step in the tutorial and change the number to the number of +the step you are on. This will cause any changes you made within your working directory to be lost.

        +

        If you haven't already done so you need to install the dependencies by running:

        +
        npm install
        +
        +

        To see the app running in a browser, open a separate terminal/command line tab or window, then +run npm start to start the web server. Now, open a browser window for the app and navigate to +http://localhost:8000/app/

        +

        You can now see the page in your browser. It's not very exciting, but that's OK.

        +

        The HTML page that displays "Nothing here yet!" was constructed with the HTML code shown below. +The code contains some key Angular elements that we will need as we progress.

        +

        app/index.html:

        +
        <!doctype html>
        +<html lang="en" ng-app>
        +<head>
        +  <meta charset="utf-8">
        +  <title>My HTML File</title>
        +  <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css">
        +  <link rel="stylesheet" href="css/app.css">
        +  <script src="bower_components/angular/angular.js"></script>
        +</head>
        +<body>
        +
        +  <p>Nothing here {{'yet' + '!'}}</p>
        +
        +</body>
        +</html>
        +
        +

        What is the code doing?

        +
          +
        • ng-app directive:

          +
          <html ng-app>
          +
          +

          The ng-app attribute represents an Angular directive named ngApp (Angular uses +name-with-dashes for its custom attributes and camelCase for the corresponding directives +which implement them). +This directive is used to flag the html element that Angular should consider to be the root element +of our application. +This gives application developers the freedom to tell Angular if the entire html page or only a +portion of it should be treated as the Angular application.

          +
        • +
        • AngularJS script tag:

          +
          <script src="bower_components/angular/angular.js">
          +
          +

          This code downloads the angular.js script and registers a callback that will be executed by the +browser when the containing HTML page is fully downloaded. When the callback is executed, Angular +looks for the ngApp directive. If +Angular finds the directive, it will bootstrap the application with the root of the application DOM +being the element on which the ngApp directive was defined.

          +
        • +
        • Double-curly binding with an expression:

          +
          Nothing here {{'yet' + '!'}}
          +
          +

          This line demonstrates two core features of Angular's templating capabilities:

          +
            +
          • a binding, denoted by double-curlies {{ }}
          • +
          • a simple expression 'yet' + '!' used in this binding.
          • +
          +

          The binding tells Angular that it should evaluate an expression and insert the result into the +DOM in place of the binding. Rather than a one-time insert, as we'll see in the next steps, a +binding will result in efficient continuous updates whenever the result of the expression +evaluation changes.

          +

          Angular expression is a JavaScript-like code snippet that is +evaluated by Angular in the context of the current model scope, rather than within the scope of +the global context (window).

          +

          As expected, once this template is processed by Angular, the html page contains the text: +"Nothing here yet!".

          +
        • +
        +

        Bootstrapping AngularJS apps

        +

        Bootstrapping AngularJS apps automatically using the ngApp directive is very easy and suitable +for most cases. In advanced cases, such as when using script loaders, you can use +imperative / manual way to bootstrap the app.

        +

        There are 3 important things that happen during the app bootstrap:

        +
          +
        1. The injector that will be used for dependency injection is created.

          +
        2. +
        3. The injector will then create the root scope that will +become the context for the model of our application.

          +
        4. +
        5. Angular will then "compile" the DOM starting at the ngApp root element, processing any +directives and bindings found along the way.

          +
        6. +
        +

        Once an application is bootstrapped, it will then wait for incoming browser events (such as mouse +click, key press or incoming HTTP response) that might change the model. Once such an event occurs, +Angular detects if it caused any model changes and if changes are found, Angular will reflect them +in the view by updating all of the affected bindings.

        +

        The structure of our application is currently very simple. The template contains just one directive +and one static binding, and our model is empty. That will soon change!

        +

        +

        What are all these files in my working directory?

        +

        Most of the files in your working directory come from the angular-seed project which +is typically used to bootstrap new Angular projects. The seed project is pre-configured to install +the angular framework (via bower into the app/bower_components/ folder) and tools for developing +a typical web app (via npm).

        +

        For the purposes of this tutorial, we modified the angular-seed with the following changes:

        +
          +
        • Removed the example app
        • +
        • Added phone images to app/img/phones/
        • +
        • Added phone data files (JSON) to app/phones/
        • +
        • Added a dependency on Bootstrap in the bower.json file.
        • +
        +

        Experiments

        +
          +
        • Try adding a new expression to the index.html that will do some math:

          +
          <p>1 + 2 = {{ 1 + 2 }}</p>
          +
          +
        • +
        +

        Summary

        +

        Now let's go to step 1 and add some content to the web app.

        +
          + + + + + diff --git a/1.2.30/docs/partials/tutorial/step_01.html b/1.2.30/docs/partials/tutorial/step_01.html new file mode 100644 index 0000000000..7f5e79f53a --- /dev/null +++ b/1.2.30/docs/partials/tutorial/step_01.html @@ -0,0 +1,44 @@ + Improve this Doc + + +
            + + +

            In order to illustrate how Angular enhances standard HTML, you will create a purely static HTML +page and then examine how we can turn this HTML code into a template that Angular will use to +dynamically display the same result with any set of data.

            +

            In this step you will add some basic information about two cell phones to an HTML page.

            +
              +
            • The page now contains a list with information about two phones.
            • +
            +
            + + +

            app/index.html:

            +
            <ul>
            +  <li>
            +    <span>Nexus S</span>
            +    <p>
            +      Fast just got faster with Nexus S.
            +    </p>
            +  </li>
            +  <li>
            +    <span>Motorola XOOM™ with Wi-Fi</span>
            +    <p>
            +      The Next, Next Generation tablet.
            +    </p>
            +  </li>
            +</ul>
            +
            +

            Experiments

            +
              +
            • Try adding more static HTML to index.html. For example:

              +
              <p>Total number of phones: 2</p>
              +
              +
            • +
            +

            Summary

            +

            This addition to your app uses static HTML to display the list. Now, let's go to step 2 to learn how to use AngularJS to dynamically generate the same list.

            +
              + + diff --git a/1.2.30/docs/partials/tutorial/step_02.html b/1.2.30/docs/partials/tutorial/step_02.html new file mode 100644 index 0000000000..6e1b6bcf88 --- /dev/null +++ b/1.2.30/docs/partials/tutorial/step_02.html @@ -0,0 +1,226 @@ + Improve this Doc + + +
                + + +

                Now it's time to make the web page dynamic — with AngularJS. We'll also add a test that verifies the +code for the controller we are going to add.

                +

                There are many ways to structure the code for an application. For Angular apps, we encourage the use of +the Model-View-Controller (MVC) design pattern +to decouple the code and to separate concerns. With that in mind, let's use a little Angular and +JavaScript to add model, view, and controller components to our app.

                +
                  +
                • The list of three phones is now generated dynamically from data
                • +
                +
                + + +

                View and Template

                +

                In Angular, the view is a projection of the model through the HTML template. This means that +whenever the model changes, Angular refreshes the appropriate binding points, which updates the +view.

                +

                The view component is constructed by Angular from this template:

                +

                app/index.html:

                +
                <html ng-app="phonecatApp">
                +<head>
                +  ...
                +  <script src="bower_components/angular/angular.js"></script>
                +  <script src="js/controllers.js"></script>
                +</head>
                +<body ng-controller="PhoneListCtrl">
                +
                +  <ul>
                +    <li ng-repeat="phone in phones">
                +      {{phone.name}}
                +      <p>{{phone.snippet}}</p>
                +    </li>
                +  </ul>
                +
                +</body>
                +</html>
                +
                +

                We replaced the hard-coded phone list with the ngRepeat directive +and two Angular expressions:

                +
                  +
                • The ng-repeat="phone in phones" attribute in the <li> tag is an Angular repeater directive. +The repeater tells Angular to create a <li> element for each phone in the list using the <li> +tag as the template.
                • +
                • The expressions wrapped in curly braces ({{phone.name}} and {{phone.snippet}}) will be replaced +by the value of the expressions.
                • +
                +

                We have added a new directive, called ng-controller, which attaches a PhoneListCtrl +controller to the <body> tag. At this point:

                +
                  +
                • The expressions in curly braces ({{phone.name}} and {{phone.snippet}} denote +bindings, which are referring to our application model, which is set up in our PhoneListCtrl +controller.
                • +
                +
                +Note: We have specified an Angular Module to load using ng-app="phonecatApp", +where phonecatApp is the name of our module. This module will contain the PhoneListCtrl. +
                + +

                +

                Model and Controller

                +

                The data model (a simple array of phones in object literal notation) is now instantiated within +the PhoneListCtrl controller. The controller is simply a constructor function that takes a +$scope parameter:

                +

                app/js/controllers.js:

                +
                var phonecatApp = angular.module('phonecatApp', []);
                +
                +phonecatApp.controller('PhoneListCtrl', function ($scope) {
                +  $scope.phones = [
                +    {'name': 'Nexus S',
                +     'snippet': 'Fast just got faster with Nexus S.'},
                +    {'name': 'Motorola XOOM™ with Wi-Fi',
                +     'snippet': 'The Next, Next Generation tablet.'},
                +    {'name': 'MOTOROLA XOOM™',
                +     'snippet': 'The Next, Next Generation tablet.'}
                +  ];
                +});
                +
                +

                Here we declared a controller called PhoneListCtrl and registered it in an AngularJS +module, phonecatApp. Notice that our ng-app directive (on the <html> tag) now specifies the phonecatApp +module name as the module to load when bootstrapping the Angular application.

                +

                Although the controller is not yet doing very much, it plays a crucial role. By providing context +for our data model, the controller allows us to establish data-binding between +the model and the view. We connected the dots between the presentation, data, and logic components +as follows:

                +
                  +
                • The ngController directive, located on the <body> tag, +references the name of our controller, PhoneListCtrl (located in the JavaScript file +controllers.js).

                  +
                • +
                • The PhoneListCtrl controller attaches the phone data to the $scope that was injected into our +controller function. This scope is a prototypical descendant of the root scope that was created +when the application was defined. This controller scope is available to all bindings located within +the <body ng-controller="PhoneListCtrl"> tag.

                  +
                • +
                +

                Scope

                +

                The concept of a scope in Angular is crucial. A scope can be seen as the glue which allows the +template, model and controller to work together. Angular uses scopes, along with the information +contained in the template, data model, and controller, to keep models and views separate, but in +sync. Any changes made to the model are reflected in the view; any changes that occur in the view +are reflected in the model.

                +

                To learn more about Angular scopes, see the angular scope documentation.

                +

                Tests

                +

                The "Angular way" of separating controller from the view, makes it easy to test code as it is being +developed. If our controller is available on the global namespace then we could simply instantiate it +with a mock scope object:

                +
                describe('PhoneListCtrl', function(){
                +
                +it('should create "phones" model with 3 phones', function() {
                +  var scope = {},
                +      ctrl = new PhoneListCtrl(scope);
                +
                +  expect(scope.phones.length).toBe(3);
                +});
                +
                +});
                +
                +

                The test instantiates PhoneListCtrl and verifies that the phones array property on the scope +contains three records. This example demonstrates how easy it is to create a unit test for code in +Angular. Since testing is such a critical part of software development, we make it easy to create +tests in Angular so that developers are encouraged to write them.

                +

                Testing non-Global Controllers

                +

                In practice, you will not want to have your controller functions in the global namespace. Instead, +you can see that we have registered it via an anonymous constructor function on the phonecatApp +module.

                +

                In this case Angular provides a service, $controller, which will retrieve your controller by name. +Here is the same test using $controller:

                +

                test/unit/controllersSpec.js:

                +
                describe('PhoneListCtrl', function(){
                +
                +beforeEach(module('phonecatApp'));
                +
                +it('should create "phones" model with 3 phones', inject(function($controller) {
                +  var scope = {},
                +      ctrl = $controller('PhoneListCtrl', {$scope:scope});
                +
                +  expect(scope.phones.length).toBe(3);
                +}));
                +
                +});
                +
                +
                  +
                • Before each test we tell Angular to load the phonecatApp module.
                • +
                • We ask Angular to inject the $controller service into our test function
                • +
                • We use $controller to create an instance of the PhoneListCtrl
                • +
                • With this instance, we verify that the phones array property on the scope contains three records.
                • +
                +

                Writing and Running Tests

                +

                Angular developers prefer the syntax of Jasmine's Behavior-driven Development (BDD) framework when +writing tests. Although Angular does not require you to use Jasmine, we wrote all of the tests in +this tutorial in Jasmine v1.3. You can learn about Jasmine on the Jasmine home page and +at the Jasmine docs.

                +

                The angular-seed project is pre-configured to run unit tests using Karma but you will need +to ensure that Karma and its necessary plugins are installed. You can do this by running +npm install.

                +

                To run the tests, and then watch the files for changes: npm test.

                +
                  +
                • Karma will start a new instance of Chrome browser automatically. Just ignore it and let it run in + the background. Karma will use this browser for test execution.
                • +
                • You should see the following or similar output in the terminal:

                  +
                  +  info: Karma server started at http://localhost:9876/
                  +  info (launcher): Starting  browser "Chrome"
                  +  info (Chrome 22.0): Connected on socket id tPUm9DXcLHtZTKbAEO-n
                  +  Chrome 22.0: Executed 1 of 1 SUCCESS (0.093 secs / 0.004 secs)
                  +
                  + +

                  Yay! The test passed! Or not...

                  +
                • +
                • To rerun the tests, just change any of the source or test .js files. Karma will notice the change +and will rerun the tests for you. Now isn't that sweet?
                • +
                +
                +Make sure you don't minimize the browser that Karma opened. On some OS, memory assigned to a minimized +browser is limited, which results in your karma tests running extremely slow. +
                + +

                Experiments

                +
                  +
                • Add another binding to index.html. For example:

                  +
                  <p>Total number of phones: {{phones.length}}</p>
                  +
                  +
                • +
                • Create a new model property in the controller and bind to it from the template. For example:

                  +
                  $scope.name = "World";
                  +
                  +

                  Then add a new binding to index.html:

                  +
                  <p>Hello, {{name}}!</p>
                  +
                  +

                  Refresh your browser and verify that it says "Hello, World!".

                  +
                • +
                • Update the unit test for the controller in ./test/unit/controllersSpec.js to reflect the previous change. For example by adding:

                  +
                  expect(scope.name).toBe('World');
                  +
                  +
                • +
                • Create a repeater in index.html that constructs a simple table:

                  +
                  <table>
                  +  <tr><th>row number</th></tr>
                  +  <tr ng-repeat="i in [0, 1, 2, 3, 4, 5, 6, 7]"><td>{{i}}</td></tr>
                  +</table>
                  +
                  +

                  Now, make the list 1-based by incrementing i by one in the binding:

                  +
                  <table>
                  +  <tr><th>row number</th></tr>
                  +  <tr ng-repeat="i in [0, 1, 2, 3, 4, 5, 6, 7]"><td>{{i+1}}</td></tr>
                  +</table>
                  +
                  +

                  Extra points: try and make an 8x8 table using an additional ng-repeat.

                  +
                • +
                • Make the unit test fail by changing expect(scope.phones.length).toBe(3) to instead use toBe(4).

                  +
                • +
                +

                Summary

                +

                You now have a dynamic app that features separate model, view, and controller components, and you +are testing as you go. Now, let's go to step 3 to learn how to add full text search +to the app.

                +
                  + + + + diff --git a/1.2.30/docs/partials/tutorial/step_03.html b/1.2.30/docs/partials/tutorial/step_03.html new file mode 100644 index 0000000000..be87dc8574 --- /dev/null +++ b/1.2.30/docs/partials/tutorial/step_03.html @@ -0,0 +1,195 @@ + Improve this Doc + + +
                    + + +

                    We did a lot of work in laying a foundation for the app in the last step, so now we'll do something +simple; we will add full text search (yes, it will be simple!). We will also write an end-to-end +test, because a good end-to-end test is a good friend. It stays with your app, keeps an eye on it, +and quickly detects regressions.

                    +
                      +
                    • The app now has a search box. Notice that the phone list on the page changes depending on what a +user types into the search box.
                    • +
                    +
                    + + +

                    Controller

                    +

                    We made no changes to the controller.

                    +

                    Template

                    +

                    app/index.html:

                    +
                    <div class="container-fluid">
                    +  <div class="row">
                    +    <div class="col-md-2">
                    +      <!--Sidebar content-->
                    +
                    +      Search: <input ng-model="query">
                    +
                    +    </div>
                    +    <div class="col-md-10">
                    +      <!--Body content-->
                    +
                    +      <ul class="phones">
                    +        <li ng-repeat="phone in phones | filter:query">
                    +          {{phone.name}}
                    +          <p>{{phone.snippet}}</p>
                    +        </li>
                    +      </ul>
                    +
                    +    </div>
                    +  </div>
                    +</div>
                    +
                    +

                    We added a standard HTML <input> tag and used Angular's +filter function to process the input for the +ngRepeat directive.

                    +

                    This lets a user enter search criteria and immediately see the effects of their search on the phone +list. This new code demonstrates the following:

                    +
                      +
                    • Data-binding: This is one of the core features in Angular. When the page loads, Angular binds the +name of the input box to a variable of the same name in the data model and keeps the two in sync.

                      +

                      In this code, the data that a user types into the input box (named query) is immediately +available as a filter input in the list repeater (phone in phones | filter:query). When +changes to the data model cause the repeater's input to change, the repeater efficiently updates +the DOM to reflect the current state of the model.

                      +
                    • +
                    +

                    +
                      +
                    • Use of the filter filter: The filter function uses the +query value to create a new array that contains only those records that match the query.

                      +

                      ngRepeat automatically updates the view in response to the changing number of phones returned +by the filter filter. The process is completely transparent to the developer.

                      +
                    • +
                    +

                    Test

                    +

                    In Step 2, we learned how to write and run unit tests. Unit tests are perfect for testing +controllers and other components of our application written in JavaScript, but they can't easily +test DOM manipulation or the wiring of our application. For these, an end-to-end test is a much +better choice.

                    +

                    The search feature was fully implemented via templates and data-binding, so we'll write our first +end-to-end test, to verify that the feature works.

                    +

                    test/e2e/scenarios.js:

                    +
                    describe('PhoneCat App', function() {
                    +
                    +describe('Phone list view', function() {
                    +
                    +  beforeEach(function() {
                    +    browser.get('app/index.html');
                    +  });
                    +
                    +
                    +  it('should filter the phone list as a user types into the search box', function() {
                    +
                    +    var phoneList = element.all(by.repeater('phone in phones'));
                    +    var query = element(by.model('query'));
                    +
                    +    expect(phoneList.count()).toBe(3);
                    +
                    +    query.sendKeys('nexus');
                    +    expect(phoneList.count()).toBe(1);
                    +
                    +    query.clear();
                    +    query.sendKeys('motorola');
                    +    expect(phoneList.count()).toBe(2);
                    +  });
                    +});
                    +});
                    +
                    +

                    This test verifies that the search box and the repeater are correctly wired together. Notice how +easy it is to write end-to-end tests in Angular. Although this example is for a simple test, it +really is that easy to set up any functional, readable, end-to-end test.

                    +

                    Running End to End Tests with Protractor

                    +

                    Even though the syntax of this test looks very much like our controller unit test written with +Jasmine, the end-to-end test uses APIs of Protractor. Read +about the Protractor APIs at http://angular.github.io/protractor/#/api.

                    +

                    Much like Karma is the test runner for unit tests, we use Protractor to run end-to-end tests. +Try it with npm run protractor. End-to-end tests are slow, so unlike with unit tests, Protractor +will exit after the test run and will not automatically rerun the test suite on every file change. +To rerun the test suite, execute npm run protractor again.

                    +
                    + Note: You must ensure your application is being served via a web-server to test with protractor. + You can do this using npm start. + You also need to ensure you've installed the protractor and updated webdriver prior to running the + npm run protractor. You can do this by issuing npm install and npm run update-webdriver into + your terminal. +
                    + + +

                    Experiments

                    +

                    Display Current Query

                    +

                    Display the current value of the query model by adding a {{query}} binding into the +index.html template, and see how it changes when you type in the input box.

                    +

                    Display Query in Title

                    +

                    Let's see how we can get the current value of the query model to appear in the HTML page title.

                    +
                      +
                    • Add an end-to-end test into the describe block, test/e2e/scenarios.js should look like this:

                      +
                      describe('PhoneCat App', function() {
                      +
                      +  describe('Phone list view', function() {
                      +
                      +    beforeEach(function() {
                      +      browser.get('app/index.html');
                      +    });
                      +
                      +    var phoneList = element.all(by.repeater('phone in phones'));
                      +    var query = element(by.model('query'));
                      +
                      +    it('should filter the phone list as a user types into the search box', function() {
                      +      expect(phoneList.count()).toBe(3);
                      +
                      +      query.sendKeys('nexus');
                      +      expect(phoneList.count()).toBe(1);
                      +
                      +      query.clear();
                      +      query.sendKeys('motorola');
                      +      expect(phoneList.count()).toBe(2);
                      +    });
                      +
                      +    it('should display the current filter value in the title bar', function() {
                      +      query.clear();
                      +      expect(browser.getTitle()).toMatch(/Google Phone Gallery:\s*$/);
                      +
                      +      query.sendKeys('nexus');
                      +      expect(browser.getTitle()).toMatch(/Google Phone Gallery: nexus$/);
                      +    });
                      +  });
                      +});
                      +
                      +

                      Run protractor (npm run protractor) to see this test fail.

                      +
                    • +
                    +
                      +
                    • You might think you could just add the {{query}} to the title tag element as follows:

                      +
                      <title>Google Phone Gallery: {{query}}</title>
                      +
                      +

                      However, when you reload the page, you won't see the expected result. This is because the "query" +model lives in the scope, defined by the ng-controller="PhoneListCtrl" directive, on the body +element:

                      +
                      <body ng-controller="PhoneListCtrl">
                      +
                      +

                      If you want to bind to the query model from the <title> element, you must move the +ngController declaration to the HTML element because it is the common parent of both the body +and title elements:

                      +
                      <html ng-app="phonecatApp" ng-controller="PhoneListCtrl">
                      +
                      +

                      Be sure to remove the ng-controller declaration from the body element.

                      +
                    • +
                    • Re-run npm run protractor to see the test now pass.

                      +
                    • +
                    • While using double curlies works fine within the title element, you might have noticed that +for a split second they are actually displayed to the user while the page is loading. A better +solution would be to use the ngBind or +ngBindTemplate directives, which are invisible to the user +while the page is loading:

                      +
                      <title ng-bind-template="Google Phone Gallery: {{query}}">Google Phone Gallery</title>
                      +
                      +
                    • +
                    +

                    Summary

                    +

                    We have now added full text search and included a test to verify that search works! Now let's go on +to step 4 to learn how to add sorting capability to the phone app.

                    +
                      + + diff --git a/1.2.30/docs/partials/tutorial/step_04.html b/1.2.30/docs/partials/tutorial/step_04.html new file mode 100644 index 0000000000..a781cf2b67 --- /dev/null +++ b/1.2.30/docs/partials/tutorial/step_04.html @@ -0,0 +1,168 @@ + Improve this Doc + + +
                        + + +

                        In this step, you will add a feature to let your users control the order of the items in the phone +list. The dynamic ordering is implemented by creating a new model property, wiring it together with +the repeater, and letting the data binding magic do the rest of the work.

                        +
                          +
                        • In addition to the search box, the app displays a drop down menu that allows users to control the +order in which the phones are listed.
                        • +
                        +
                        + + +

                        Template

                        +

                        app/index.html:

                        +
                        Search: <input ng-model="query">
                        +Sort by:
                        +<select ng-model="orderProp">
                        +  <option value="name">Alphabetical</option>
                        +  <option value="age">Newest</option>
                        +</select>
                        +
                        +
                        +<ul class="phones">
                        +  <li ng-repeat="phone in phones | filter:query | orderBy:orderProp">
                        +    <span>{{phone.name}}</span>
                        +    <p>{{phone.snippet}}</p>
                        +  </li>
                        +</ul>
                        +
                        +

                        We made the following changes to the index.html template:

                        +
                          +
                        • First, we added a <select> html element named orderProp, so that our users can pick from the +two provided sorting options.
                        • +
                        +

                        +
                          +
                        • We then chained the filter filter with orderBy +filter to further process the input into the repeater. orderBy is a filter that takes an input +array, copies it and reorders the copy which is then returned.
                        • +
                        +

                        Angular creates a two way data-binding between the select element and the orderProp model. +orderProp is then used as the input for the orderBy filter.

                        +

                        As we discussed in the section about data-binding and the repeater in step 3, whenever the model +changes (for example because a user changes the order with the select drop down menu), Angular's +data-binding will cause the view to automatically update. No bloated DOM manipulation code is +necessary!

                        +

                        Controller

                        +

                        app/js/controllers.js:

                        +
                        var phonecatApp = angular.module('phonecatApp', []);
                        +
                        +phonecatApp.controller('PhoneListCtrl', function ($scope) {
                        +  $scope.phones = [
                        +    {'name': 'Nexus S',
                        +     'snippet': 'Fast just got faster with Nexus S.',
                        +     'age': 1},
                        +    {'name': 'Motorola XOOM™ with Wi-Fi',
                        +     'snippet': 'The Next, Next Generation tablet.',
                        +     'age': 2},
                        +    {'name': 'MOTOROLA XOOM™',
                        +     'snippet': 'The Next, Next Generation tablet.',
                        +     'age': 3}
                        +  ];
                        +
                        +  $scope.orderProp = 'age';
                        +});
                        +
                        +
                          +
                        • We modified the phones model - the array of phones - and added an age property to each phone +record. This property is used to order phones by age.

                          +
                        • +
                        • We added a line to the controller that sets the default value of orderProp to age. If we had +not set a default value here, the orderBy filter would remain uninitialized until our +user picked an option from the drop down menu.

                          +

                          This is a good time to talk about two-way data-binding. Notice that when the app is loaded in the +browser, "Newest" is selected in the drop down menu. This is because we set orderProp to 'age' +in the controller. So the binding works in the direction from our model to the UI. Now if you +select "Alphabetically" in the drop down menu, the model will be updated as well and the phones +will be reordered. That is the data-binding doing its job in the opposite direction — from the UI +to the model.

                          +
                        • +
                        +

                        Test

                        +

                        The changes we made should be verified with both a unit test and an end-to-end test. Let's look at +the unit test first.

                        +

                        test/unit/controllersSpec.js:

                        +
                        describe('PhoneCat controllers', function() {
                        +
                        +describe('PhoneListCtrl', function(){
                        +  var scope, ctrl;
                        +
                        +  beforeEach(module('phonecatApp'));
                        +
                        +  beforeEach(inject(function($controller) {
                        +    scope = {};
                        +    ctrl = $controller('PhoneListCtrl', {$scope:scope});
                        +  }));
                        +
                        +  it('should create "phones" model with 3 phones', function() {
                        +    expect(scope.phones.length).toBe(3);
                        +  });
                        +
                        +
                        +  it('should set the default value of orderProp model', function() {
                        +    expect(scope.orderProp).toBe('age');
                        +  });
                        +});
                        +});
                        +
                        +

                        The unit test now verifies that the default ordering property is set.

                        +

                        We used Jasmine's API to extract the controller construction into a beforeEach block, which is +shared by all tests in the parent describe block.

                        +

                        You should now see the following output in the Karma tab:

                        +
                        Chrome 22.0: Executed 2 of 2 SUCCESS (0.021 secs / 0.001 secs)
                        + + +

                        Let's turn our attention to the end-to-end test.

                        +

                        test/e2e/scenarios.js:

                        +
                        ...
                        +it('should be possible to control phone order via the drop down select box', function() {
                        +
                        +  var phoneNameColumn = element.all(by.repeater('phone in phones').column('{{phone.name}}'));
                        +  var query = element(by.model('query'));
                        +
                        +  function getNames() {
                        +    return phoneNameColumn.map(function(elm) {
                        +      return elm.getText();
                        +    });
                        +  }
                        +
                        +  query.sendKeys('tablet'); //let's narrow the dataset to make the test assertions shorter
                        +
                        +  expect(getNames()).toEqual([
                        +    "Motorola XOOM\u2122 with Wi-Fi",
                        +    "MOTOROLA XOOM\u2122"
                        +  ]);
                        +
                        +  element(by.model('orderProp')).element(by.css('option[value="name"]')).click();
                        +
                        +  expect(getNames()).toEqual([
                        +    "MOTOROLA XOOM\u2122",
                        +    "Motorola XOOM\u2122 with Wi-Fi"
                        +  ]);
                        +});...
                        +
                        +

                        The end-to-end test verifies that the ordering mechanism of the select box is working correctly.

                        +

                        You can now rerun npm run protractor to see the tests run.

                        +

                        Experiments

                        +
                          +
                        • In the PhoneListCtrl controller, remove the statement that sets the orderProp value and +you'll see that Angular will temporarily add a new blank ("unknown") option to the drop-down list and the +ordering will default to unordered/natural order.

                          +
                        • +
                        • Add an {{orderProp}} binding into the index.html template to display its current value as +text.

                          +
                        • +
                        • Reverse the sort order by adding a - symbol before the sorting value: <option value="-age">Oldest</option>

                          +
                        • +
                        +

                        Summary

                        +

                        Now that you have added list sorting and tested the app, go to step 5 to learn +about Angular services and how Angular uses dependency injection.

                        +
                          + + diff --git a/1.2.30/docs/partials/tutorial/step_05.html b/1.2.30/docs/partials/tutorial/step_05.html new file mode 100644 index 0000000000..44e554ed2a --- /dev/null +++ b/1.2.30/docs/partials/tutorial/step_05.html @@ -0,0 +1,227 @@ + Improve this Doc + + +
                            + + +

                            Enough of building an app with three phones in a hard-coded dataset! Let's fetch a larger dataset +from our server using one of Angular's built-in services called $http. We will use Angular's dependency +injection (DI) to provide the service to the PhoneListCtrl controller.

                            +
                              +
                            • There is now a list of 20 phones, loaded from the server.
                            • +
                            +
                            + + +

                            Data

                            +

                            The app/phones/phones.json file in your project is a dataset that contains a larger list of phones +stored in the JSON format.

                            +

                            Following is a sample of the file:

                            +
                            [
                            +{
                            + "age": 13,
                            + "id": "motorola-defy-with-motoblur",
                            + "name": "Motorola DEFY\u2122 with MOTOBLUR\u2122",
                            + "snippet": "Are you ready for everything life throws your way?"
                            + ...
                            +},
                            +...
                            +]
                            +
                            +

                            Controller

                            +

                            We'll use Angular's $http service in our controller to make an HTTP +request to your web server to fetch the data in the app/phones/phones.json file. $http is just +one of several built-in Angular services that handle common operations +in web apps. Angular injects these services for you where you need them.

                            +

                            Services are managed by Angular's DI subsystem. Dependency injection +helps to make your web apps both well-structured (e.g., separate components for presentation, data, +and control) and loosely coupled (dependencies between components are not resolved by the +components themselves, but by the DI subsystem).

                            +

                            app/js/controllers.js:

                            +
                            var phonecatApp = angular.module('phonecatApp', []);
                            +
                            +phonecatApp.controller('PhoneListCtrl', function ($scope, $http) {
                            +  $http.get('phones/phones.json').success(function(data) {
                            +    $scope.phones = data;
                            +  });
                            +
                            +  $scope.orderProp = 'age';
                            +});
                            +
                            +

                            $http makes an HTTP GET request to our web server, asking for phones/phones.json (the url is +relative to our index.html file). The server responds by providing the data in the json file. +(The response might just as well have been dynamically generated by a backend server. To the +browser and our app they both look the same. For the sake of simplicity we used a json file in this +tutorial.)

                            +

                            The $http service returns a promise object with a success +method. We call this method to handle the asynchronous response and assign the phone data to the +scope controlled by this controller, as a model called phones. Notice that Angular detected the +json response and parsed it for us!

                            +

                            To use a service in Angular, you simply declare the names of the dependencies you need as arguments +to the controller's constructor function, as follows:

                            +
                            phonecatApp.controller('PhoneListCtrl', function ($scope, $http) {...}
                            +
                            +

                            Angular's dependency injector provides services to your controller when the controller is being +constructed. The dependency injector also takes care of creating any transitive dependencies the +service may have (services often depend upon other services).

                            +

                            Note that the names of arguments are significant, because the injector uses these to look up the +dependencies.

                            +

                            +

                            $ Prefix Naming Convention

                            +

                            You can create your own services, and in fact we will do exactly that in step 11. As a naming +convention, Angular's built-in services, Scope methods and a few other Angular APIs have a $ +prefix in front of the name.

                            +

                            The $ prefix is there to namespace Angular-provided services. +To prevent collisions it's best to avoid naming your services and models anything that begins with a $.

                            +

                            If you inspect a Scope, you may also notice some properties that begin with $$. These +properties are considered private, and should not be accessed or modified.

                            +

                            A Note on Minification

                            +

                            Since Angular infers the controller's dependencies from the names of arguments to the controller's +constructor function, if you were to minify the JavaScript code for +PhoneListCtrl controller, all of its function arguments would be minified as well, and the +dependency injector would not be able to identify services correctly.

                            +

                            We can overcome this problem by annotating the function with the names of the dependencies, provided +as strings, which will not get minified. There are two ways to provide these injection annotations:

                            +
                              +
                            • Create a $inject property on the controller function which holds an array of strings. +Each string in the array is the name of the service to inject for the corresponding parameter. +In our example we would write:

                              +
                              function PhoneListCtrl($scope, $http) {...}
                              +PhoneListCtrl.$inject = ['$scope', '$http'];
                              +phonecatApp.controller('PhoneListCtrl', PhoneListCtrl);
                              +
                              +
                            • +
                            • Use an inline annotation where, instead of just providing the function, you provide an array. +This array contains a list of the service names, followed by the function itself.

                              +
                              function PhoneListCtrl($scope, $http) {...}
                              +phonecatApp.controller('PhoneListCtrl', ['$scope', '$http', PhoneListCtrl]);
                              +
                              +
                            • +
                            +

                            Both of these methods work with any function that can be injected by Angular, so it's up to your +project's style guide to decide which one you use.

                            +

                            When using the second method, it is common to provide the constructor function inline as an +anonymous function when registering the controller:

                            +
                            phonecatApp.controller('PhoneListCtrl', ['$scope', '$http', function($scope, $http) {...}]);
                            +
                            +

                            From this point onward, we're going to use the inline method in the tutorial. With that in mind, +let's add the annotations to our PhoneListCtrl:

                            +

                            app/js/controllers.js:

                            +
                            var phonecatApp = angular.module('phonecatApp', []);
                            +
                            +phonecatApp.controller('PhoneListCtrl', ['$scope', '$http',
                            +  function ($scope, $http) {
                            +    $http.get('phones/phones.json').success(function(data) {
                            +      $scope.phones = data;
                            +    });
                            +
                            +    $scope.orderProp = 'age';
                            +  }]);
                            +
                            +

                            Test

                            +

                            test/unit/controllersSpec.js:

                            +

                            Because we started using dependency injection and our controller has dependencies, constructing the +controller in our tests is a bit more complicated. We could use the new operator and provide the +constructor with some kind of fake $http implementation. However, Angular provides a mock $http +service that we can use in unit tests. We configure "fake" responses to server requests by calling +methods on a service called $httpBackend:

                            +
                            describe('PhoneCat controllers', function() {
                            +
                            +describe('PhoneListCtrl', function(){
                            +  var scope, ctrl, $httpBackend;
                            +
                            +  // Load our app module definition before each test.
                            +  beforeEach(module('phonecatApp'));
                            +
                            +  // The injector ignores leading and trailing underscores here (i.e. _$httpBackend_).
                            +  // This allows us to inject a service but then attach it to a variable
                            +  // with the same name as the service in order to avoid a name conflict.
                            +  beforeEach(inject(function(_$httpBackend_, $rootScope, $controller) {
                            +    $httpBackend = _$httpBackend_;
                            +    $httpBackend.expectGET('phones/phones.json').
                            +        respond([{name: 'Nexus S'}, {name: 'Motorola DROID'}]);
                            +
                            +    scope = $rootScope.$new();
                            +    ctrl = $controller('PhoneListCtrl', {$scope: scope});
                            +  }));
                            +
                            +

                            Note: Because we loaded Jasmine and angular-mocks.js in our test environment, we got two helper +methods module and inject that we'll +use to access and configure the injector.

                            +

                            We created the controller in the test environment, as follows:

                            +
                              +
                            • We used the inject helper method to inject instances of +$rootScope, +$controller and +$httpBackend services into the Jasmine's beforeEach +function. These instances come from an injector which is recreated from scratch for every single +test. This guarantees that each test starts from a well known starting point and each test is +isolated from the work done in other tests.

                              +
                            • +
                            • We created a new scope for our controller by calling $rootScope.$new()

                              +
                            • +
                            • We called the injected $controller function passing the name of the PhoneListCtrl controller +and the created scope as parameters.

                              +
                            • +
                            +

                            Because our code now uses the $http service to fetch the phone list data in our controller, before +we create the PhoneListCtrl child scope, we need to tell the testing harness to expect an +incoming request from the controller. To do this we:

                            +
                              +
                            • Request $httpBackend service to be injected into our beforeEach function. This is a mock +version of the service that in a production environment facilitates all XHR and JSONP requests. +The mock version of this service allows you to write tests without having to deal with +native APIs and the global state associated with them — both of which make testing a nightmare.

                              +
                            • +
                            • Use the $httpBackend.expectGET method to train the $httpBackend service to expect an incoming +HTTP request and tell it what to respond with. Note that the responses are not returned until we call +the $httpBackend.flush method.

                              +
                            • +
                            +

                            Now we will make assertions to verify that the phones model doesn't exist on scope before +the response is received:

                            +
                            it('should create "phones" model with 2 phones fetched from xhr', function() {
                            +  expect(scope.phones).toBeUndefined();
                            +  $httpBackend.flush();
                            +
                            +  expect(scope.phones).toEqual([{name: 'Nexus S'},
                            +                               {name: 'Motorola DROID'}]);
                            +});
                            +
                            +
                              +
                            • We flush the request queue in the browser by calling $httpBackend.flush(). This causes the +promise returned by the $http service to be resolved with the trained response. See +'Flushing HTTP requests' in the mock $httpBackend documentation for +a full explanation of why this is necessary.

                              +
                            • +
                            • We make the assertions, verifying that the phone model now exists on the scope.

                              +
                            • +
                            +

                            Finally, we verify that the default value of orderProp is set correctly:

                            +
                            it('should set the default value of orderProp model', function() {
                            +  expect(scope.orderProp).toBe('age');
                            +});
                            +
                            +

                            You should now see the following output in the Karma tab:

                            +
                            Chrome 22.0: Executed 2 of 2 SUCCESS (0.028 secs / 0.007 secs)
                            + + + +

                            Experiments

                            +
                              +
                            • At the bottom of index.html, add a <pre>{{phones | filter:query | orderBy:orderProp | json}}</pre> +binding to see the list of phones displayed in json format.

                              +
                            • +
                            • In the PhoneListCtrl controller, pre-process the http response by limiting the number of phones +to the first 5 in the list. Use the following code in the $http callback:

                              +
                              $scope.phones = data.splice(0, 5);
                              +
                              +
                            • +
                            +

                            Summary

                            +

                            Now that you have learned how easy it is to use Angular services (thanks to Angular's dependency +injection), go to step 6, where you will add some +thumbnail images of phones and some links.

                            +
                              + + diff --git a/1.2.30/docs/partials/tutorial/step_06.html b/1.2.30/docs/partials/tutorial/step_06.html new file mode 100644 index 0000000000..628a9563c7 --- /dev/null +++ b/1.2.30/docs/partials/tutorial/step_06.html @@ -0,0 +1,83 @@ + Improve this Doc + + +
                                + + +

                                In this step, you will add thumbnail images for the phones in the phone list, and links that, for +now, will go nowhere. In subsequent steps you will use the links to display additional information +about the phones in the catalog.

                                +
                                  +
                                • There are now links and images of the phones in the list.
                                • +
                                +
                                + +

                                Data

                                +

                                Note that the phones.json file contains unique IDs and image URLs for each of the phones. The +URLs point to the app/img/phones/ directory.

                                +

                                app/phones/phones.json (sample snippet):

                                +
                                [
                                +{
                                +  ...
                                +  "id": "motorola-defy-with-motoblur",
                                +  "imageUrl": "img/phones/motorola-defy-with-motoblur.0.jpg",
                                +  "name": "Motorola DEFY\u2122 with MOTOBLUR\u2122",
                                +  ...
                                +},
                                +...
                                +]
                                +
                                +

                                Template

                                +

                                app/index.html:

                                +
                                ...
                                +<ul class="phones">
                                +  <li ng-repeat="phone in phones | filter:query | orderBy:orderProp" class="thumbnail">
                                +    <a href="#/phones/{{phone.id}}" class="thumb"><img ng-src="{{phone.imageUrl}}"></a>
                                +    <a href="#/phones/{{phone.id}}">{{phone.name}}</a>
                                +    <p>{{phone.snippet}}</p>
                                +  </li>
                                +</ul>
                                +...
                                +
                                +

                                To dynamically generate links that will in the future lead to phone detail pages, we used the +now-familiar double-curly brace binding in the href attribute values. In step 2, we added the +{{phone.name}} binding as the element content. In this step the {{phone.id}} binding is used in +the element attribute.

                                +

                                We also added phone images next to each record using an image tag with the ngSrc directive. That directive prevents the +browser from treating the Angular {{ expression }} markup literally, and initiating a request to +invalid URL http://localhost:8000/app/{{phone.imageUrl}}, which it would have done if we had only +specified an attribute binding in a regular src attribute (<img src="{{phone.imageUrl}}">). +Using the ngSrc directive prevents the browser from making an http request to an invalid location.

                                +

                                Test

                                +

                                test/e2e/scenarios.js:

                                +
                                ...
                                +it('should render phone specific links', function() {
                                +  var query = element(by.model('query'));
                                +  query.sendKeys('nexus');
                                +  element.all(by.css('.phones li a')).first().click();
                                +  browser.getLocationAbsUrl().then(function(url) {
                                +    expect(url.split('#')[1]).toBe('/phones/nexus-s');
                                +  });
                                +});
                                +...
                                +
                                +

                                We added a new end-to-end test to verify that the app is generating correct links to the phone +views that we will implement in the upcoming steps.

                                +

                                You can now rerun npm run protractor to see the tests run.

                                +

                                Experiments

                                +
                                  +
                                • Replace the ng-src directive with a plain old src attribute. Using tools such as Firebug, +or Chrome's Web Inspector, or inspecting the webserver access logs, confirm that the app is indeed +making an extraneous request to /app/%7B%7Bphone.imageUrl%7D%7D (or +/app/{{phone.imageUrl}}).

                                  +

                                  The issue here is that the browser will fire a request for that invalid image address as soon as +it hits the img tag, which is before Angular has a chance to evaluate the expression and inject +the valid address.

                                  +
                                • +
                                +

                                Summary

                                +

                                Now that you have added phone images and links, go to step 7 to learn about Angular +layout templates and how Angular makes it easy to create applications that have multiple views.

                                +
                                  + + diff --git a/1.2.30/docs/partials/tutorial/step_07.html b/1.2.30/docs/partials/tutorial/step_07.html new file mode 100644 index 0000000000..090dac4db5 --- /dev/null +++ b/1.2.30/docs/partials/tutorial/step_07.html @@ -0,0 +1,298 @@ + Improve this Doc + + +
                                    + + +

                                    In this step, you will learn how to create a layout template and how to build an app that has +multiple views by adding routing, using an Angular module called 'ngRoute'.

                                    +
                                      +
                                    • When you now navigate to app/index.html, you are redirected to app/index.html/#/phones +and the phone list appears in the browser.
                                    • +
                                    • When you click on a phone link the url changes to one specific to that phone and the stub of a +phone detail page is displayed.
                                    • +
                                    +
                                    + +

                                    Dependencies

                                    +

                                    The routing functionality added by this step is provided by angular in the ngRoute module, which +is distributed separately from the core Angular framework.

                                    +

                                    We are using Bower to install client side dependencies. This step updates the +bower.json configuration file to include the new dependency:

                                    +
                                    {
                                    +"name": "angular-phonecat",
                                    +"description": "A starter project for AngularJS",
                                    +"version": "0.0.0",
                                    +"homepage": "https://github.com/angular/angular-phonecat",
                                    +"license": "MIT",
                                    +"private": true,
                                    +"dependencies": {
                                    +  "angular": "1.2.x",
                                    +  "angular-mocks": "~1.2.x",
                                    +  "jquery": "1.10.2",
                                    +  "bootstrap": "~3.1.1",
                                    +  "angular-route": "~1.2.x"
                                    +}
                                    +}
                                    +
                                    +

                                    The new dependency "angular-route": "~1.2.x" tells bower to install a version of the +angular-route component that is compatible with version 1.2.x. We must tell bower to download +and install this dependency.

                                    +

                                    If you have bower installed globally then you can run bower install but for this project we have +preconfigured npm to run bower install for us:

                                    +
                                    npm install
                                    +
                                    +

                                    Multiple Views, Routing and Layout Template

                                    +

                                    Our app is slowly growing and becoming more complex. Before step 7, the app provided our users with +a single view (the list of all phones), and all of the template code was located in the +index.html file. The next step in building the app is to add a view that will show detailed +information about each of the devices in our list.

                                    +

                                    To add the detailed view, we could expand the index.html file to contain template code for both +views, but that would get messy very quickly. Instead, we are going to turn the index.html +template into what we call a "layout template". This is a template that is common for all views in +our application. Other "partial templates" are then included into this layout template depending on +the current "route" — the view that is currently displayed to the user.

                                    +

                                    Application routes in Angular are declared via the $routeProvider, +which is the provider of the $route service. This service makes it easy to +wire together controllers, view templates, and the current URL location in the browser. Using this +feature we can implement deep linking, which lets us +utilize the browser's history (back and forward navigation) and bookmarks.

                                    +

                                    A Note About DI, Injector and Providers

                                    +

                                    As you noticed, dependency injection (DI) is at the core of +AngularJS, so it's important for you to understand a thing or two about how it works.

                                    +

                                    When the application bootstraps, Angular creates an injector that will be used to find and inject all +of the services that are required by your app. The injector itself doesn't know anything about what +$http or $route services do, in fact it doesn't even know about the existence of these services +unless it is configured with proper module definitions.

                                    +

                                    The injector only carries out the following steps :

                                    +
                                      +
                                    • load the module definition(s) that you specify in your app
                                    • +
                                    • register all Providers defined in these module definitions
                                    • +
                                    • when asked to do so, inject a specified function and any necessary dependencies (services) that +it lazily instantiates via their Providers.
                                    • +
                                    +

                                    Providers are objects that provide (create) instances of services and expose configuration APIs +that can be used to control the creation and runtime behavior of a service. In case of the $route +service, the $routeProvider exposes APIs that allow you to define routes for your application.

                                    +
                                    +Note: Providers can only be injected into config functions. Thus you could not inject +$routeProvider into PhoneListCtrl. +
                                    + +

                                    Angular modules solve the problem of removing global state from the application and provide a way +of configuring the injector. As opposed to AMD or require.js modules, Angular modules don't try to +solve the problem of script load ordering or lazy script fetching. These goals are totally independent and +both module systems can live side by side and fulfill their goals.

                                    +

                                    To deepen your understanding of DI on Angular, see +Understanding Dependency Injection.

                                    +

                                    Template

                                    +

                                    The $route service is usually used in conjunction with the ngView directive. The role of the ngView directive is to include the view template for the current +route into the layout template. This makes it a perfect fit for our index.html template.

                                    +
                                    +Note: Starting with AngularJS version 1.2, ngRoute is in its own module and must be loaded by +loading the additional angular-route.js file, which we download via Bower above. +
                                    + +

                                    app/index.html:

                                    +
                                    <!doctype html>
                                    +<html lang="en" ng-app="phonecatApp">
                                    +<head>
                                    +...
                                    +  <script src="bower_components/angular/angular.js"></script>
                                    +  <script src="bower_components/angular-route/angular-route.js"></script>
                                    +  <script src="js/app.js"></script>
                                    +  <script src="js/controllers.js"></script>
                                    +</head>
                                    +<body>
                                    +
                                    +  <div ng-view></div>
                                    +
                                    +</body>
                                    +</html>
                                    +
                                    +

                                    We have added two new <script> tags in our index file to load up extra JavaScript files into our +application:

                                    +
                                      +
                                    • angular-route.js : defines the Angular ngRoute module, which provides us with routing.
                                    • +
                                    • app.js : this file now holds the root module of our application.
                                    • +
                                    +

                                    Note that we removed most of the code in the index.html template and replaced it with a single +line containing a div with the ng-view attribute. The code that we removed was placed into the +phone-list.html template:

                                    +

                                    app/partials/phone-list.html:

                                    +
                                    <div class="container-fluid">
                                    +<div class="row">
                                    +  <div class="col-md-2">
                                    +    <!--Sidebar content-->
                                    +
                                    +    Search: <input ng-model="query">
                                    +    Sort by:
                                    +    <select ng-model="orderProp">
                                    +      <option value="name">Alphabetical</option>
                                    +      <option value="age">Newest</option>
                                    +    </select>
                                    +
                                    +  </div>
                                    +  <div class="col-md-10">
                                    +    <!--Body content-->
                                    +
                                    +    <ul class="phones">
                                    +      <li ng-repeat="phone in phones | filter:query | orderBy:orderProp" class="thumbnail">
                                    +        <a href="#/phones/{{phone.id}}" class="thumb"><img ng-src="{{phone.imageUrl}}"></a>
                                    +        <a href="#/phones/{{phone.id}}">{{phone.name}}</a>
                                    +        <p>{{phone.snippet}}</p>
                                    +      </li>
                                    +    </ul>
                                    +
                                    +  </div>
                                    +</div>
                                    +</div>
                                    +
                                    +
                                    +TODO! + +
                                    + +

                                    We also added a placeholder template for the phone details view:

                                    +

                                    app/partials/phone-detail.html:

                                    +
                                    TBD: detail view for <span>{{phoneId}}</span>
                                    +
                                    +

                                    Note how we are using the phoneId expression which will be defined in the PhoneDetailCtrl controller.

                                    +

                                    The App Module

                                    +

                                    To improve the organization of the app, we are making use of Angular's ngRoute module and we've +moved the controllers into their own module phonecatControllers (as shown below).

                                    +

                                    We added angular-route.js to index.html and created a new phonecatControllers module in +controllers.js. That's not all we need to do to be able to use their code, however. We also have +to add the modules as dependencies of our app. By listing these two modules as dependencies of +phonecatApp, we can use the directives and services they provide.

                                    +

                                    app/js/app.js:

                                    +
                                    var phonecatApp = angular.module('phonecatApp', [
                                    +'ngRoute',
                                    +'phonecatControllers'
                                    +]);
                                    +
                                    +...
                                    +
                                    +

                                    Notice the second argument passed to angular.module, ['ngRoute', 'phonecatControllers']. This +array lists the modules that phonecatApp depends on.

                                    +
                                    ...
                                    +
                                    +phonecatApp.config(['$routeProvider',
                                    +  function($routeProvider) {
                                    +    $routeProvider.
                                    +      when('/phones', {
                                    +        templateUrl: 'partials/phone-list.html',
                                    +        controller: 'PhoneListCtrl'
                                    +      }).
                                    +      when('/phones/:phoneId', {
                                    +        templateUrl: 'partials/phone-detail.html',
                                    +        controller: 'PhoneDetailCtrl'
                                    +      }).
                                    +      otherwise({
                                    +        redirectTo: '/phones'
                                    +      });
                                    +  }]);
                                    +
                                    +

                                    Using the phonecatApp.config() method, we request the $routeProvider to be injected into our +config function and use the $routeProvider.when() method to +define our routes.

                                    +

                                    Our application routes are defined as follows:

                                    +
                                      +
                                    • when('/phones'): The phone list view will be shown when the URL hash fragment is /phones. To +construct this view, Angular will use the phone-list.html template and the PhoneListCtrl +controller.

                                      +
                                    • +
                                    • when('/phones/:phoneId'): The phone details view will be shown when the URL hash fragment +matches '/phone/:phoneId', where :phoneId is a variable part of the URL. To construct the phone +details view, Angular will use the phone-detail.html template and the PhoneDetailCtrl +controller.

                                      +
                                    • +
                                    • otherwise({redirectTo: '/phones'}): triggers a redirection to /phones when the browser +address doesn't match either of our routes.

                                      +
                                    • +
                                    +

                                    We reused the PhoneListCtrl controller that we constructed in previous steps and we added a new, +empty PhoneDetailCtrl controller to the app/js/controllers.js file for the phone details view.

                                    +

                                    Note the use of the :phoneId parameter in the second route declaration. The $route service uses +the route declaration — '/phones/:phoneId' — as a template that is matched against the current +URL. All variables defined with the : notation are extracted into the +$routeParams object.

                                    +

                                    Controllers

                                    +

                                    app/js/controllers.js:

                                    +
                                    var phonecatControllers = angular.module('phonecatControllers', []);
                                    +
                                    +phonecatControllers.controller('PhoneListCtrl', ['$scope', '$http',
                                    +  function ($scope, $http) {
                                    +    $http.get('phones/phones.json').success(function(data) {
                                    +      $scope.phones = data;
                                    +    });
                                    +
                                    +    $scope.orderProp = 'age';
                                    +  }]);
                                    +
                                    +phonecatControllers.controller('PhoneDetailCtrl', ['$scope', '$routeParams',
                                    +  function($scope, $routeParams) {
                                    +    $scope.phoneId = $routeParams.phoneId;
                                    +  }]);
                                    +
                                    +

                                    Again, note that we created a new module called phonecatControllers. For small AngularJS +applications, it's common to create just one module for all of your controllers if there are just a +few. As your application grows it is quite common to refactor your code into additional modules. +For larger apps, you will probably want to create separate modules for each major feature of +your app.

                                    +

                                    Because our example app is relatively small, we'll just add all of our controllers to the +phonecatControllers module.

                                    +

                                    Test

                                    +

                                    To automatically verify that everything is wired properly, we wrote end-to-end tests that navigate +to various URLs and verify that the correct view was rendered.

                                    +
                                    ...
                                    + it('should redirect index.html to index.html#/phones', function() {
                                    +  browser.get('app/index.html');
                                    +  browser.getLocationAbsUrl().then(function(url) {
                                    +      expect(url.split('#')[1]).toBe('/phones');
                                    +    });
                                    +});
                                    +
                                    +describe('Phone list view', function() {
                                    +  beforeEach(function() {
                                    +    browser.get('app/index.html#/phones');
                                    +  });
                                    +...
                                    +
                                    +describe('Phone detail view', function() {
                                    +
                                    +  beforeEach(function() {
                                    +    browser.get('app/index.html#/phones/nexus-s');
                                    +  });
                                    +
                                    +
                                    +  it('should display placeholder page with phoneId', function() {
                                    +    expect(element(by.binding('phoneId')).getText()).toBe('nexus-s');
                                    +  });
                                    +});
                                    +
                                    +

                                    You can now rerun npm run protractor to see the tests run.

                                    +

                                    Experiments

                                    +
                                      +
                                    • Try to add an {{orderProp}} binding to index.html, and you'll see that nothing happens even +when you are in the phone list view. This is because the orderProp model is visible only in the +scope managed by PhoneListCtrl, which is associated with the <div ng-view> element. If you add +the same binding into the phone-list.html template, the binding will work as expected.
                                    • +
                                    +
                                    +* In PhoneCatCtrl, create a new model called "hero" with this.hero = 'Zoro'. In +PhoneListCtrl let's shadow it with this.hero = 'Batman', and in PhoneDetailCtrl we'll use +this.hero = "Captain Proton". Then add the <p>hero = {{hero}}</p> to all three of our templates +(index.html, phone-list.html, and phone-detail.html). Open the app and you'll see scope +inheritance and model property shadowing do some wonders. +
                                    + + +

                                    Summary

                                    +

                                    With the routing set up and the phone list view implemented, we're ready to go to step 8 to implement the phone details view.

                                    +
                                      + + + + + diff --git a/1.2.30/docs/partials/tutorial/step_08.html b/1.2.30/docs/partials/tutorial/step_08.html new file mode 100644 index 0000000000..95e46751b0 --- /dev/null +++ b/1.2.30/docs/partials/tutorial/step_08.html @@ -0,0 +1,157 @@ + Improve this Doc + + +
                                        + + +

                                        In this step, you will implement the phone details view, which is displayed when a user clicks on a +phone in the phone list.

                                        +
                                          +
                                        • When you click on a phone on the list, the phone details page with phone-specific information +is displayed.
                                        • +
                                        +

                                        To implement the phone details view we used $http to fetch our data, and we +fleshed out the phone-detail.html view template.

                                        +
                                        + + +

                                        Data

                                        +

                                        In addition to phones.json, the app/phones/ directory also contains one json file for each +phone:

                                        +

                                        app/phones/nexus-s.json: (sample snippet)

                                        +
                                        {
                                        +"additionalFeatures": "Contour Display, Near Field Communications (NFC),...",
                                        +"android": {
                                        +    "os": "Android 2.3",
                                        +    "ui": "Android"
                                        +},
                                        +...
                                        +"images": [
                                        +    "img/phones/nexus-s.0.jpg",
                                        +    "img/phones/nexus-s.1.jpg",
                                        +    "img/phones/nexus-s.2.jpg",
                                        +    "img/phones/nexus-s.3.jpg"
                                        +],
                                        +"storage": {
                                        +    "flash": "16384MB",
                                        +    "ram": "512MB"
                                        +}
                                        +}
                                        +
                                        +

                                        Each of these files describes various properties of the phone using the same data structure. We'll +show this data in the phone detail view.

                                        +

                                        Controller

                                        +

                                        We'll expand the PhoneDetailCtrl by using the $http service to fetch the json files. This works +the same way as the phone list controller.

                                        +

                                        app/js/controllers.js:

                                        +
                                        var phonecatControllers = angular.module('phonecatControllers',[]);
                                        +
                                        +phonecatControllers.controller('PhoneDetailCtrl', ['$scope', '$routeParams', '$http',
                                        +  function($scope, $routeParams, $http) {
                                        +    $http.get('phones/' + $routeParams.phoneId + '.json').success(function(data) {
                                        +      $scope.phone = data;
                                        +    });
                                        +  }]);
                                        +
                                        +

                                        To construct the URL for the HTTP request, we use $routeParams.phoneId extracted from the current +route by the $route service.

                                        +

                                        Template

                                        +

                                        The TBD placeholder line has been replaced with lists and bindings that comprise the phone details. +Note where we use the Angular {{expression}} markup and ngRepeat to project phone data from +our model into the view.

                                        +

                                        app/partials/phone-detail.html:

                                        +
                                        <img ng-src="{{phone.images[0]}}" class="phone">
                                        +
                                        +<h1>{{phone.name}}</h1>
                                        +
                                        +<p>{{phone.description}}</p>
                                        +
                                        +<ul class="phone-thumbs">
                                        +  <li ng-repeat="img in phone.images">
                                        +    <img ng-src="{{img}}">
                                        +  </li>
                                        +</ul>
                                        +
                                        +<ul class="specs">
                                        +  <li>
                                        +    <span>Availability and Networks</span>
                                        +    <dl>
                                        +      <dt>Availability</dt>
                                        +      <dd ng-repeat="availability in phone.availability">{{availability}}</dd>
                                        +    </dl>
                                        +  </li>
                                        +    ...
                                        +  <li>
                                        +    <span>Additional Features</span>
                                        +    <dd>{{phone.additionalFeatures}}</dd>
                                        +  </li>
                                        +</ul>
                                        +
                                        +
                                        +TODO! + +
                                        + +

                                        Test

                                        +

                                        We wrote a new unit test that is similar to the one we wrote for the PhoneListCtrl controller in +step 5.

                                        +

                                        test/unit/controllersSpec.js:

                                        +
                                        beforeEach(module('phonecatApp'));
                                        +
                                        +...
                                        +
                                        +describe('PhoneDetailCtrl', function(){
                                        +  var scope, $httpBackend, ctrl;
                                        +
                                        +  beforeEach(inject(function(_$httpBackend_, $rootScope, $routeParams, $controller) {
                                        +    $httpBackend = _$httpBackend_;
                                        +    $httpBackend.expectGET('phones/xyz.json').respond({name:'phone xyz'});
                                        +
                                        +    $routeParams.phoneId = 'xyz';
                                        +    scope = $rootScope.$new();
                                        +    ctrl = $controller('PhoneDetailCtrl', {$scope: scope});
                                        +  }));
                                        +
                                        +
                                        +  it('should fetch phone detail', function() {
                                        +    expect(scope.phone).toBeUndefined();
                                        +    $httpBackend.flush();
                                        +
                                        +    expect(scope.phone).toEqual({name:'phone xyz'});
                                        +  });
                                        +});
                                        +...
                                        +
                                        +

                                        You should now see the following output in the Karma tab:

                                        +
                                        Chrome 22.0: Executed 3 of 3 SUCCESS (0.039 secs / 0.012 secs)
                                        + + +

                                        We also added a new end-to-end test that navigates to the Nexus S detail page and verifies that the +heading on the page is "Nexus S".

                                        +

                                        test/e2e/scenarios.js:

                                        +
                                        ...
                                        +describe('Phone detail view', function() {
                                        +
                                        +  beforeEach(function() {
                                        +    browser.get('app/index.html#/phones/nexus-s');
                                        +  });
                                        +
                                        +
                                        +  it('should display nexus-s page', function() {
                                        +    expect(element(by.binding('phone.name')).getText()).toBe('Nexus S');
                                        +  });
                                        +});
                                        +...
                                        +
                                        +

                                        You can now rerun npm run protractor to see the tests run.

                                        +

                                        Experiments

                                        +
                                          +
                                        • Using the Protractor API, +write a test that verifies that we display 4 thumbnail images on the Nexus S details page.
                                        • +
                                        +

                                        Summary

                                        +

                                        Now that the phone details view is in place, proceed to step 9 to learn how to +write your own custom display filter.

                                        +
                                          + + diff --git a/1.2.30/docs/partials/tutorial/step_09.html b/1.2.30/docs/partials/tutorial/step_09.html new file mode 100644 index 0000000000..5b27e4e79e --- /dev/null +++ b/1.2.30/docs/partials/tutorial/step_09.html @@ -0,0 +1,108 @@ + Improve this Doc + + +
                                            + +

                                            In this step you will learn how to create your own custom display filter.

                                            +
                                              +
                                            • In the previous step, the details page displayed either "true" or "false" to indicate whether +certain phone features were present or not. We have used a custom filter to convert those text +strings into glyphs: ✓ for "true", and ✘ for "false". Let's see what the filter code looks like.
                                            • +
                                            +
                                            + + +

                                            Custom Filter

                                            +

                                            In order to create a new filter, you are going to create a phonecatFilters module and register +your custom filter with this module:

                                            +

                                            app/js/filters.js:

                                            +
                                            angular.module('phonecatFilters', []).filter('checkmark', function() {
                                            +return function(input) {
                                            +  return input ? '\u2713' : '\u2718';
                                            +};
                                            +});
                                            +
                                            +

                                            The name of our filter is "checkmark". The input evaluates to either true or false, and we +return one of the two unicode characters we have chosen to represent true (\u2713 -> ✓) or false (\u2718 -> ✘).

                                            +

                                            Now that our filter is ready, we need to register the phonecatFilters module as a dependency for +our main phonecatApp module.

                                            +

                                            app/js/app.js:

                                            +
                                            ...
                                            +angular.module('phonecatApp', ['ngRoute','phonecatControllers','phonecatFilters']).
                                            +...
                                            +
                                            +

                                            Template

                                            +

                                            Since the filter code lives in the app/js/filters.js file, we need to include this file in our +layout template.

                                            +

                                            app/index.html:

                                            +
                                            ...
                                            +<script src="js/controllers.js"></script>
                                            +<script src="js/filters.js"></script>
                                            +...
                                            +
                                            +

                                            The syntax for using filters in Angular templates is as follows:

                                            +
                                            {{ expression | filter }}
                                            +
                                            +

                                            Let's employ the filter in the phone details template:

                                            +

                                            app/partials/phone-detail.html:

                                            +
                                            ...
                                            +<dl>
                                            +  <dt>Infrared</dt>
                                            +  <dd>{{phone.connectivity.infrared | checkmark}}</dd>
                                            +  <dt>GPS</dt>
                                            +  <dd>{{phone.connectivity.gps | checkmark}}</dd>
                                            +</dl>
                                            +...
                                            +
                                            +

                                            Test

                                            +

                                            Filters, like any other component, should be tested and these tests are very easy to write.

                                            +

                                            test/unit/filtersSpec.js:

                                            +
                                            describe('filter', function() {
                                            +
                                            +beforeEach(module('phonecatFilters'));
                                            +
                                            +describe('checkmark', function() {
                                            +
                                            +  it('should convert boolean values to unicode checkmark or cross',
                                            +      inject(function(checkmarkFilter) {
                                            +    expect(checkmarkFilter(true)).toBe('\u2713');
                                            +    expect(checkmarkFilter(false)).toBe('\u2718');
                                            +  }));
                                            +});
                                            +});
                                            +
                                            +

                                            We must call beforeEach(module('phonecatFilters')) before any of +our filter tests execute. This call loads our phonecatFilters module into the injector +for this test run.

                                            +

                                            Note that we call the helper function, inject(function(checkmarkFilter) { ... }), to get +access to the filter that we want to test. See angular.mock.inject().

                                            +

                                            Notice that the suffix 'Filter' is appended to your filter name when injected. +See the Filter Guide +section where this is outlined.

                                            +

                                            You should now see the following output in the Karma tab:

                                            +
                                            Chrome 22.0: Executed 4 of 4 SUCCESS (0.034 secs / 0.012 secs)
                                            + + +

                                            Experiments

                                            +
                                              +
                                            • Let's experiment with some of the built-in Angular filters and add the +following bindings to index.html:

                                              +
                                                +
                                              • {{ "lower cap string" | uppercase }}
                                              • +
                                              • {{ {foo: "bar", baz: 23} | json }}
                                              • +
                                              • {{ 1304375948024 | date }}
                                              • +
                                              • {{ 1304375948024 | date:"MM/dd/yyyy @ h:mma" }}
                                              • +
                                              +
                                            • +
                                            • We can also create a model with an input element, and combine it with a filtered binding. Add +the following to index.html:

                                              +
                                              <input ng-model="userInput"> Uppercased: {{ userInput | uppercase }}
                                              +
                                              +
                                            • +
                                            +

                                            Summary

                                            +

                                            Now that you have learned how to write and test a custom filter, go to step 10 to +learn how we can use Angular to enhance the phone details page further.

                                            +
                                              + + diff --git a/1.2.30/docs/partials/tutorial/step_10.html b/1.2.30/docs/partials/tutorial/step_10.html new file mode 100644 index 0000000000..73b4f0ccc7 --- /dev/null +++ b/1.2.30/docs/partials/tutorial/step_10.html @@ -0,0 +1,150 @@ + Improve this Doc + + +
                                                + + +

                                                In this step, you will add a clickable phone image swapper to the phone details page.

                                                +
                                                  +
                                                • The phone details view displays one large image of the current phone and several smaller thumbnail +images. It would be great if we could replace the large image with any of the thumbnails just by +clicking on the desired thumbnail image. Let's have a look at how we can do this with Angular.
                                                • +
                                                +
                                                + +

                                                Controller

                                                +

                                                app/js/controllers.js:

                                                +
                                                ...
                                                +var phonecatControllers = angular.module('phonecatControllers',[]);
                                                +
                                                +phonecatControllers.controller('PhoneDetailCtrl', ['$scope', '$routeParams', '$http',
                                                +  function($scope, $routeParams, $http) {
                                                +    $http.get('phones/' + $routeParams.phoneId + '.json').success(function(data) {
                                                +      $scope.phone = data;
                                                +      $scope.mainImageUrl = data.images[0];
                                                +    });
                                                +
                                                +    $scope.setImage = function(imageUrl) {
                                                +      $scope.mainImageUrl = imageUrl;
                                                +    }
                                                +  }]);
                                                +
                                                +

                                                In the PhoneDetailCtrl controller, we created the mainImageUrl model property and set its +default value to the first phone image URL.

                                                +

                                                We also created a setImage event handler function that will change the value of mainImageUrl.

                                                +

                                                Template

                                                +

                                                app/partials/phone-detail.html:

                                                +
                                                <img ng-src="{{mainImageUrl}}" class="phone">
                                                +
                                                +...
                                                +
                                                +<ul class="phone-thumbs">
                                                +  <li ng-repeat="img in phone.images">
                                                +    <img ng-src="{{img}}" ng-click="setImage(img)">
                                                +  </li>
                                                +</ul>
                                                +...
                                                +
                                                +

                                                We bound the ngSrc directive of the large image to the mainImageUrl property.

                                                +

                                                We also registered an ngClick +handler with thumbnail images. When a user clicks on one of the thumbnail images, the handler will +use the setImage event handler function to change the value of the mainImageUrl property to the +URL of the thumbnail image.

                                                +
                                                +TODO! + +
                                                + +

                                                Test

                                                +

                                                To verify this new feature, we added two end-to-end tests. One verifies that the main image is set +to the first phone image by default. The second test clicks on several thumbnail images and +verifies that the main image changed appropriately.

                                                +

                                                test/e2e/scenarios.js:

                                                +
                                                ...
                                                +describe('Phone detail view', function() {
                                                +
                                                +...
                                                +
                                                +  it('should display the first phone image as the main phone image', function() {
                                                +    expect(element(by.css('img.phone')).getAttribute('src')).toMatch(/img\/phones\/nexus-s.0.jpg/);
                                                +  });
                                                +
                                                +
                                                +  it('should swap main image if a thumbnail image is clicked on', function() {
                                                +    element(by.css('.phone-thumbs li:nth-child(3) img')).click();
                                                +    expect(element(by.css('img.phone')).getAttribute('src')).toMatch(/img\/phones\/nexus-s.2.jpg/);
                                                +
                                                +    element(by.css('.phone-thumbs li:nth-child(1) img')).click();
                                                +    expect(element(by.css('img.phone')).getAttribute('src')).toMatch(/img\/phones\/nexus-s.0.jpg/);
                                                +  });
                                                +});
                                                +
                                                +

                                                You can now rerun npm run protractor to see the tests run.

                                                +

                                                You also have to refactor one of your unit tests because of the addition of the mainImageUrl +model property to the PhoneDetailCtrl controller. Below, we create the function xyzPhoneData +which returns the appropriate json with the images attribute in order to get the test to pass.

                                                +

                                                test/unit/controllersSpec.js:

                                                +
                                                ...
                                                + beforeEach(module('phonecatApp'));
                                                +
                                                +...
                                                +
                                                +describe('PhoneDetailCtrl', function(){
                                                +   var scope, $httpBackend, ctrl,
                                                +       xyzPhoneData = function() {
                                                +         return {
                                                +           name: 'phone xyz',
                                                +           images: ['image/url1.png', 'image/url2.png']
                                                +         }
                                                +       };
                                                +
                                                +
                                                +   beforeEach(inject(function(_$httpBackend_, $rootScope, $routeParams, $controller) {
                                                +     $httpBackend = _$httpBackend_;
                                                +     $httpBackend.expectGET('phones/xyz.json').respond(xyzPhoneData());
                                                +
                                                +     $routeParams.phoneId = 'xyz';
                                                +     scope = $rootScope.$new();
                                                +     ctrl = $controller('PhoneDetailCtrl', {$scope: scope});
                                                +   }));
                                                +
                                                +
                                                +   it('should fetch phone detail', function() {
                                                +     expect(scope.phone).toBeUndefined();
                                                +     $httpBackend.flush();
                                                +
                                                +     expect(scope.phone).toEqual(xyzPhoneData());
                                                +   });
                                                + });
                                                +
                                                +

                                                Your unit tests should now be passing.

                                                +

                                                Experiments

                                                +
                                                  +
                                                • Let's add a new controller method to PhoneDetailCtrl:

                                                  +
                                                  $scope.hello = function(name) {
                                                  +    alert('Hello ' + (name || 'world') + '!');
                                                  +}
                                                  +
                                                  +

                                                  and add:

                                                  +
                                                  <button ng-click="hello('Elmo')">Hello</button>
                                                  +
                                                  +

                                                  to the phone-detail.html template.

                                                  +
                                                • +
                                                +
                                                +TODO! + The controller methods are inherited between controllers/scopes, so you can use the same snippet +in the phone-list.html template as well. + +* Move the hello method from PhoneCatCtrl to PhoneListCtrl and you'll see that the button +declared in index.html will stop working, while the one declared in the phone-list.html +template remains operational. +
                                                + + +

                                                Summary

                                                +

                                                With the phone image swapper in place, we're ready for step 11 to +learn an even better way to fetch data.

                                                +
                                                  + + diff --git a/1.2.30/docs/partials/tutorial/step_11.html b/1.2.30/docs/partials/tutorial/step_11.html new file mode 100644 index 0000000000..11b628f99b --- /dev/null +++ b/1.2.30/docs/partials/tutorial/step_11.html @@ -0,0 +1,238 @@ + Improve this Doc + + +
                                                    + + +

                                                    In this step, you will change the way our app fetches data.

                                                    +
                                                      +
                                                    • We defined a custom service that represents a RESTful client. Using this client we +can make requests to the server for data in an easier way, without having to deal with the +lower-level $http API, HTTP methods and URLs.
                                                    • +
                                                    +
                                                    + +

                                                    Dependencies

                                                    +

                                                    The RESTful functionality is provided by Angular in the ngResource module, which is distributed +separately from the core Angular framework.

                                                    +

                                                    We are using Bower to install client side dependencies. This step updates the +bower.json configuration file to include the new dependency:

                                                    +
                                                    {
                                                    +"name": "angular-seed",
                                                    +"description": "A starter project for AngularJS",
                                                    +"version": "0.0.0",
                                                    +"homepage": "https://github.com/angular/angular-seed",
                                                    +"license": "MIT",
                                                    +"private": true,
                                                    +"dependencies": {
                                                    +  "angular": "1.2.x",
                                                    +  "angular-mocks": "~1.2.x",
                                                    +  "bootstrap": "~3.1.1",
                                                    +  "angular-route": "~1.2.x",
                                                    +  "angular-resource": "~1.2.x"
                                                    +}
                                                    +}
                                                    +
                                                    +

                                                    The new dependency "angular-resource": "~1.2.x" tells bower to install a version of the +angular-resource component that is compatible with version 1.2.x. We must ask bower to download +and install this dependency. We can do this by running:

                                                    +
                                                    npm install
                                                    +
                                                    +
                                                    + Warning: If a new version of Angular has been released since you last ran npm install, then you may have a + problem with the bower install due to a conflict between the versions of angular.js that need to + be installed. If you get this then simply delete your app/bower_components folder before running + npm install. +
                                                    + +
                                                    + Note: If you have bower installed globally then you can run bower install but for this project we have + preconfigured npm install to run bower for us. +
                                                    + + +

                                                    Template

                                                    +

                                                    Our custom resource service will be defined in app/js/services.js so we need to include this file +in our layout template. Additionally, we also need to load the angular-resource.js file, which +contains the ngResource module:

                                                    +

                                                    app/index.html.

                                                    +
                                                    ...
                                                    +<script src="bower_components/angular-resource/angular-resource.js"></script>
                                                    +<script src="js/services.js"></script>
                                                    +...
                                                    +
                                                    +

                                                    Service

                                                    +

                                                    We create our own service to provide access to the phone data on the server:

                                                    +

                                                    app/js/services.js.

                                                    +
                                                    var phonecatServices = angular.module('phonecatServices', ['ngResource']);
                                                    +
                                                    +phonecatServices.factory('Phone', ['$resource',
                                                    +  function($resource){
                                                    +    return $resource('phones/:phoneId.json', {}, {
                                                    +      query: {method:'GET', params:{phoneId:'phones'}, isArray:true}
                                                    +    });
                                                    +  }]);
                                                    +
                                                    +

                                                    We used the module API to register a custom service using a factory function. We passed in the name +of the service - 'Phone' - and the factory function. The factory function is similar to a +controller's constructor in that both can declare dependencies to be injected via function +arguments. The Phone service declared a dependency on the $resource service.

                                                    +

                                                    The $resource service makes it easy to create a +RESTful client with just a few lines of code. This client can then be used in our +application, instead of the lower-level $http service.

                                                    +

                                                    app/js/app.js.

                                                    +
                                                    ...
                                                    +angular.module('phonecatApp', ['ngRoute', 'phonecatControllers','phonecatFilters', 'phonecatServices']).
                                                    +...
                                                    +
                                                    +

                                                    We need to add the 'phonecatServices' module dependency to 'phonecatApp' module's requires array.

                                                    +

                                                    Controller

                                                    +

                                                    We simplified our sub-controllers (PhoneListCtrl and PhoneDetailCtrl) by factoring out the +lower-level $http service, replacing it with a new service called +Phone. Angular's $resource service is easier to +use than $http for interacting with data sources exposed as RESTful resources. It is also easier +now to understand what the code in our controllers is doing.

                                                    +

                                                    app/js/controllers.js.

                                                    +
                                                    var phonecatControllers = angular.module('phonecatControllers', []);
                                                    +
                                                    +...
                                                    +
                                                    +phonecatControllers.controller('PhoneListCtrl', ['$scope', 'Phone', function($scope, Phone) {
                                                    +  $scope.phones = Phone.query();
                                                    +  $scope.orderProp = 'age';
                                                    +}]);
                                                    +
                                                    +phonecatControllers.controller('PhoneDetailCtrl', ['$scope', '$routeParams', 'Phone', function($scope, $routeParams, Phone) {
                                                    +  $scope.phone = Phone.get({phoneId: $routeParams.phoneId}, function(phone) {
                                                    +    $scope.mainImageUrl = phone.images[0];
                                                    +  });
                                                    +
                                                    +  $scope.setImage = function(imageUrl) {
                                                    +    $scope.mainImageUrl = imageUrl;
                                                    +  }
                                                    +}]);
                                                    +
                                                    +

                                                    Notice how in PhoneListCtrl we replaced:

                                                    +
                                                    $http.get('phones/phones.json').success(function(data) {
                                                    +$scope.phones = data;
                                                    +});
                                                    +
                                                    +

                                                    with:

                                                    +
                                                    $scope.phones = Phone.query();
                                                    +
                                                    +

                                                    This is a simple statement that we want to query for all phones.

                                                    +

                                                    An important thing to notice in the code above is that we don't pass any callback functions when +invoking methods of our Phone service. Although it looks as if the result were returned +synchronously, that is not the case at all. What is returned synchronously is a "future" — an +object, which will be filled with data when the XHR response returns. Because of the data-binding +in Angular, we can use this future and bind it to our template. Then, when the data arrives, the +view will automatically update.

                                                    +

                                                    Sometimes, relying on the future object and data-binding alone is not sufficient to do everything +we require, so in these cases, we can add a callback to process the server response. The +PhoneDetailCtrl controller illustrates this by setting the mainImageUrl in a callback.

                                                    +

                                                    Test

                                                    +

                                                    Because we're now using the ngResource module, it's necessary to +update the Karma config file with angular-resource so the new tests will pass.

                                                    +

                                                    test/karma.conf.js:

                                                    +
                                                    files : [
                                                    +  'app/bower_components/angular/angular.js',
                                                    +  'app/bower_components/angular-route/angular-route.js',
                                                    +  'app/bower_components/angular-resource/angular-resource.js',
                                                    +  'app/bower_components/angular-mocks/angular-mocks.js',
                                                    +  'app/js/**/*.js',
                                                    +  'test/unit/**/*.js'
                                                    +],
                                                    +
                                                    +

                                                    We have modified our unit tests to verify that our new service is issuing HTTP requests and +processing them as expected. The tests also check that our controllers are interacting with the +service correctly.

                                                    +

                                                    The $resource service augments the response object +with methods for updating and deleting the resource. If we were to use the standard toEqual +matcher, our tests would fail because the test values would not match the responses exactly. To +solve the problem, we use a newly-defined toEqualData Jasmine matcher. When +the toEqualData matcher compares two objects, it takes only object properties into account and +ignores methods.

                                                    +

                                                    test/unit/controllersSpec.js:

                                                    +
                                                    describe('PhoneCat controllers', function() {
                                                    +
                                                    +beforeEach(function(){
                                                    +  this.addMatchers({
                                                    +    toEqualData: function(expected) {
                                                    +      return angular.equals(this.actual, expected);
                                                    +    }
                                                    +  });
                                                    +});
                                                    +
                                                    +beforeEach(module('phonecatApp'));
                                                    +beforeEach(module('phonecatServices'));
                                                    +
                                                    +
                                                    +describe('PhoneListCtrl', function(){
                                                    +  var scope, ctrl, $httpBackend;
                                                    +
                                                    +  beforeEach(inject(function(_$httpBackend_, $rootScope, $controller) {
                                                    +    $httpBackend = _$httpBackend_;
                                                    +    $httpBackend.expectGET('phones/phones.json').
                                                    +        respond([{name: 'Nexus S'}, {name: 'Motorola DROID'}]);
                                                    +
                                                    +    scope = $rootScope.$new();
                                                    +    ctrl = $controller('PhoneListCtrl', {$scope: scope});
                                                    +  }));
                                                    +
                                                    +
                                                    +  it('should create "phones" model with 2 phones fetched from xhr', function() {
                                                    +    expect(scope.phones).toEqualData([]);
                                                    +    $httpBackend.flush();
                                                    +
                                                    +    expect(scope.phones).toEqualData(
                                                    +        [{name: 'Nexus S'}, {name: 'Motorola DROID'}]);
                                                    +  });
                                                    +
                                                    +
                                                    +  it('should set the default value of orderProp model', function() {
                                                    +    expect(scope.orderProp).toBe('age');
                                                    +  });
                                                    +});
                                                    +
                                                    +
                                                    +describe('PhoneDetailCtrl', function(){
                                                    +  var scope, $httpBackend, ctrl,
                                                    +      xyzPhoneData = function() {
                                                    +        return {
                                                    +          name: 'phone xyz',
                                                    +          images: ['image/url1.png', 'image/url2.png']
                                                    +        }
                                                    +      };
                                                    +
                                                    +
                                                    +  beforeEach(inject(function(_$httpBackend_, $rootScope, $routeParams, $controller) {
                                                    +    $httpBackend = _$httpBackend_;
                                                    +    $httpBackend.expectGET('phones/xyz.json').respond(xyzPhoneData());
                                                    +
                                                    +    $routeParams.phoneId = 'xyz';
                                                    +    scope = $rootScope.$new();
                                                    +    ctrl = $controller('PhoneDetailCtrl', {$scope: scope});
                                                    +  }));
                                                    +
                                                    +
                                                    +  it('should fetch phone detail', function() {
                                                    +    expect(scope.phone).toEqualData({});
                                                    +    $httpBackend.flush();
                                                    +
                                                    +    expect(scope.phone).toEqualData(xyzPhoneData());
                                                    +  });
                                                    +});
                                                    +});
                                                    +
                                                    +

                                                    You should now see the following output in the Karma tab:

                                                    +
                                                    Chrome 22.0: Executed 4 of 4 SUCCESS (0.038 secs / 0.01 secs)
                                                    + + +

                                                    Summary

                                                    +

                                                    With the phone image swapper in place, we're ready for step 12 (the last step!) to +learn how to improve this application with animations.

                                                    +
                                                      + + + + diff --git a/1.2.30/docs/partials/tutorial/step_12.html b/1.2.30/docs/partials/tutorial/step_12.html new file mode 100644 index 0000000000..1a5ace4b76 --- /dev/null +++ b/1.2.30/docs/partials/tutorial/step_12.html @@ -0,0 +1,450 @@ + Improve this Doc + + +
                                                        + + +

                                                        In this final step, we will enhance our phonecat web application by attaching CSS and JavaScript +animations on top of the template code we created before.

                                                        +
                                                          +
                                                        • We now use the ngAnimate module to enable animations throughout the application.
                                                        • +
                                                        • We also use common ng directives to automatically trigger hooks for animations to tap into.
                                                        • +
                                                        • When an animation is found then the animation will run in between the standard DOM operation that +is being issued on the element at the given time (e.g. inserting and removing nodes on +ngRepeat or adding and removing classes on +ngClass).
                                                        • +
                                                        +
                                                        + +

                                                        Dependencies

                                                        +

                                                        The animation functionality is provided by Angular in the ngAnimate module, which is distributed +separately from the core Angular framework. In addition we will use jQuery in this project to do +extra JavaScript animations.

                                                        +

                                                        We are using Bower to install client side dependencies. This step updates the +bower.json configuration file to include the new dependency:

                                                        +
                                                        {
                                                        +"name": "angular-seed",
                                                        +"description": "A starter project for AngularJS",
                                                        +"version": "0.0.0",
                                                        +"homepage": "https://github.com/angular/angular-seed",
                                                        +"license": "MIT",
                                                        +"private": true,
                                                        +"dependencies": {
                                                        +  "angular": "1.2.x",
                                                        +  "angular-mocks": "~1.2.x",
                                                        +  "bootstrap": "~3.1.1",
                                                        +  "angular-route": "~1.2.x",
                                                        +  "angular-resource": "~1.2.x",
                                                        +  "jquery": "1.10.2",
                                                        +  "angular-animate": "~1.2.x"
                                                        +}
                                                        +}
                                                        +
                                                        +
                                                          +
                                                        • "angular-animate": "~1.2.x" tells bower to install a version of the +angular-animate component that is compatible with version 1.2.x.
                                                        • +
                                                        • "jquery": "1.10.2" tells bower to install the 1.10.2 version of jQuery. Note that this is not an +Angular library, it is the standard jQuery library. We can use bower to install a wide range of 3rd +party libraries.
                                                        • +
                                                        +

                                                        We must ask bower to download and install this dependency. We can do this by running:

                                                        +
                                                        npm install
                                                        +
                                                        +
                                                        + Warning: If a new version of Angular has been released since you last ran npm install, then you may have a + problem with the bower install due to a conflict between the versions of angular.js that need to + be installed. If you get this then simply delete your app/bower_components folder before running + npm install. +
                                                        + +
                                                        + Note: If you have bower installed globally then you can run bower install but for this project we have + preconfigured npm install to run bower for us. +
                                                        + + +

                                                        How Animations work with ngAnimate

                                                        +

                                                        To get an idea of how animations work with AngularJS, please read the +AngularJS Animation Guide first.

                                                        +

                                                        Template

                                                        +

                                                        The changes required within the HTML template code is to link the asset files which define the animations as +well as the angular-animate.js file. The animation module, known as ngAnimate, is +defined within angular-animate.js and contains the code necessary to make your application become animation +aware.

                                                        +

                                                        Here's what needs to be changed in the index file:

                                                        +

                                                        app/index.html.

                                                        +
                                                        ...
                                                        +<!-- for CSS Transitions and/or Keyframe Animations -->
                                                        +<link rel="stylesheet" href="css/animations.css">
                                                        +
                                                        +...
                                                        +
                                                        +<!-- jQuery is used for JavaScript animations (include this before angular.js) -->
                                                        +<script src="bower_components/jquery/jquery.js"></script>
                                                        +
                                                        +...
                                                        +
                                                        +<!-- required module to enable animation support in AngularJS -->
                                                        +<script src="bower_components/angular-animate/angular-animate.js"></script>
                                                        +
                                                        +<!-- for JavaScript Animations -->
                                                        +<script src="js/animations.js"></script>
                                                        +
                                                        +...
                                                        +
                                                        +
                                                        + Important: Be sure to use jQuery version 1.10.x. AngularJS does not yet support jQuery 2.x. + Be sure to load jQuery before all AngularJS scripts, otherwise AngularJS won't detect jQuery and + animations will not work as expected. +
                                                        + +

                                                        Animations can now be created within the CSS code (animations.css) as well as the JavaScript code (animations.js). +But before we start, let's create a new module which uses the ngAnimate module as a dependency just like we did before +with ngResource.

                                                        +

                                                        Module & Animations

                                                        +

                                                        app/js/animations.js.

                                                        +
                                                        angular.module('phonecatAnimations', ['ngAnimate']);
                                                        +// ...
                                                        +// this module will later be used to define animations
                                                        +// ...
                                                        +
                                                        +

                                                        And now let's attach this module to our application module...

                                                        +

                                                        app/js/app.js.

                                                        +
                                                        // ...
                                                        +angular.module('phonecatApp', [
                                                        +  'ngRoute',
                                                        +
                                                        +  'phonecatAnimations',
                                                        +  'phonecatControllers',
                                                        +  'phonecatFilters',
                                                        +  'phonecatServices',
                                                        +]);
                                                        +// ...
                                                        +
                                                        +

                                                        Now, the phonecat module is animation aware. Let's make some animations!

                                                        +

                                                        Animating ngRepeat with CSS Transition Animations

                                                        +

                                                        We'll start off by adding CSS transition animations to our ngRepeat directive present on the phone-list.html page. +First let's add an extra CSS class to our repeated element so that we can hook into it with our CSS animation code.

                                                        +

                                                        app/partials/phone-list.html.

                                                        +
                                                        <!--
                                                        +Let's change the repeater HTML to include a new CSS class
                                                        +which we will later use for animations:
                                                        +-->
                                                        +<ul class="phones">
                                                        +<li ng-repeat="phone in phones | filter:query | orderBy:orderProp"
                                                        +    class="thumbnail phone-listing">
                                                        +  <a href="#/phones/{{phone.id}}" class="thumb"><img ng-src="{{phone.imageUrl}}"></a>
                                                        +  <a href="#/phones/{{phone.id}}">{{phone.name}}</a>
                                                        +  <p>{{phone.snippet}}</p>
                                                        +</li>
                                                        +</ul>
                                                        +
                                                        +

                                                        Notice how we added the phone-listing CSS class? This is all we need in our HTML code to get animations working.

                                                        +

                                                        Now for the actual CSS transition animation code:

                                                        +

                                                        app/css/animations.css

                                                        +
                                                        .phone-listing.ng-enter,
                                                        +.phone-listing.ng-leave,
                                                        +.phone-listing.ng-move {
                                                        +  -webkit-transition: 0.5s linear all;
                                                        +  -moz-transition: 0.5s linear all;
                                                        +  -o-transition: 0.5s linear all;
                                                        +  transition: 0.5s linear all;
                                                        +}
                                                        +
                                                        +.phone-listing.ng-enter,
                                                        +.phone-listing.ng-move {
                                                        +  opacity: 0;
                                                        +  height: 0;
                                                        +  overflow: hidden;
                                                        +}
                                                        +
                                                        +.phone-listing.ng-move.ng-move-active,
                                                        +.phone-listing.ng-enter.ng-enter-active {
                                                        +  opacity: 1;
                                                        +  height: 120px;
                                                        +}
                                                        +
                                                        +.phone-listing.ng-leave {
                                                        +  opacity: 1;
                                                        +  overflow: hidden;
                                                        +}
                                                        +
                                                        +.phone-listing.ng-leave.ng-leave-active {
                                                        +  opacity: 0;
                                                        +  height: 0;
                                                        +  padding-top: 0;
                                                        +  padding-bottom: 0;
                                                        +}
                                                        +
                                                        +

                                                        As you can see our phone-listing CSS class is combined together with the animation hooks that occur when items are +inserted into and removed from the list:

                                                        +
                                                          +
                                                        • The ng-enter class is applied to the element when a new phone is added to the list and rendered on the page.
                                                        • +
                                                        • The ng-move class is applied when items are moved around in the list.
                                                        • +
                                                        • The ng-leave class is applied when they're removed from the list.
                                                        • +
                                                        +

                                                        The phone listing items are added and removed depending on the data passed to the ng-repeat attribute. +For example, if the filter data changes the items will be animated in and out of the repeat list.

                                                        +

                                                        Something important to note is that when an animation occurs, two sets of CSS classes +are added to the element:

                                                        +
                                                          +
                                                        1. a "starting" class that represents the style at the beginning of the animation
                                                        2. +
                                                        3. an "active" class that represents the style at the end of the animation
                                                        4. +
                                                        +

                                                        The name of the starting class is the name of event that is fired (like enter, move or leave) prefixed with +ng-. So an enter event will result in a class called ng-enter.

                                                        +

                                                        The active class name is the same as the starting class's but with an -active suffix. +This two-class CSS naming convention allows the developer to craft an animation, beginning to end.

                                                        +

                                                        In our example above, elements expand from a height of 0 to 120 pixels when items are added or moved, +around and collapsing the items before removing them from the list. +There's also a nice fade-in and fade-out effect that also occurs at the same time. All of this is handled +by the CSS transition declarations at the top of the example code above.

                                                        +

                                                        Although most modern browsers have good support for CSS transitions +and CSS animations, IE9 and earlier do not. +If you want animations that are backwards-compatible with older browsers, consider using JavaScript-based animations, +which are described in detail below.

                                                        +

                                                        Animating ngView with CSS Keyframe Animations

                                                        +

                                                        Next let's add an animation for transitions between route changes in ngView.

                                                        +

                                                        To start, let's add a new CSS class to our HTML like we did in the example above. +This time, instead of the ng-repeat element, let's add it to the element containing the ng-view directive. +In order to do this, we'll have to make some small changes to the HTML code so that we can have more control over our +animations between view changes.

                                                        +

                                                        app/index.html.

                                                        +
                                                        <div class="view-container">
                                                        +<div ng-view class="view-frame"></div>
                                                        +</div>
                                                        +
                                                        +

                                                        With this change, the ng-view directive is nested inside a parent element with +a view-container CSS class. This class adds a position: relative style so that the positioning of the ng-view +is relative to this parent as it animates transitions.

                                                        +

                                                        With this in place, let's add the CSS for this transition animation to our animations.css file:

                                                        +

                                                        app/css/animations.css.

                                                        +
                                                        .view-container {
                                                        +position: relative;
                                                        +}
                                                        +
                                                        +.view-frame.ng-enter, .view-frame.ng-leave {
                                                        +background: white;
                                                        +position: absolute;
                                                        +top: 0;
                                                        +left: 0;
                                                        +right: 0;
                                                        +}
                                                        +
                                                        +.view-frame.ng-enter {
                                                        +-webkit-animation: 0.5s fade-in;
                                                        +-moz-animation: 0.5s fade-in;
                                                        +-o-animation: 0.5s fade-in;
                                                        +animation: 0.5s fade-in;
                                                        +z-index: 100;
                                                        +}
                                                        +
                                                        +.view-frame.ng-leave {
                                                        +-webkit-animation: 0.5s fade-out;
                                                        +-moz-animation: 0.5s fade-out;
                                                        +-o-animation: 0.5s fade-out;
                                                        +animation: 0.5s fade-out;
                                                        +z-index:99;
                                                        +}
                                                        +
                                                        +@keyframes fade-in {
                                                        +from { opacity: 0; }
                                                        +to { opacity: 1; }
                                                        +}
                                                        +@-moz-keyframes fade-in {
                                                        +from { opacity: 0; }
                                                        +to { opacity: 1; }
                                                        +}
                                                        +@-webkit-keyframes fade-in {
                                                        +from { opacity: 0; }
                                                        +to { opacity: 1; }
                                                        +}
                                                        +
                                                        +@keyframes fade-out {
                                                        +from { opacity: 1; }
                                                        +to { opacity: 0; }
                                                        +}
                                                        +@-moz-keyframes fade-out {
                                                        +from { opacity: 1; }
                                                        +to { opacity: 0; }
                                                        +}
                                                        +@-webkit-keyframes fade-out {
                                                        +from { opacity: 1; }
                                                        +to { opacity: 0; }
                                                        +}
                                                        +
                                                        +/* don't forget about the vendor-prefixes! */
                                                        +
                                                        +

                                                        Nothing crazy here! Just a simple fade in and fade out effect between pages. The only out of the +ordinary thing here is that we're using absolute positioning to position the next page (identified +via ng-enter) on top of the previous page (the one that has the ng-leave class) while performing +a cross fade animation in between. So as the previous page is just about to be removed, it fades out +while the new page fades in right on top of it.

                                                        +

                                                        Once the leave animation is over then element is removed and once the enter animation is complete +then the ng-enter and ng-enter-active CSS classes are removed from the element, causing it to rerender and +reposition itself with its default CSS code (so no more absolute positioning once the animation is +over). This works fluidly so that pages flow naturally between route changes without anything +jumping around.

                                                        +

                                                        The CSS classes applied (the start and end classes) are much the same as with ng-repeat. Each time +a new page is loaded the ng-view directive will create a copy of itself, download the template and +append the contents. This ensures that all views are contained within a single HTML element which +allows for easy animation control.

                                                        +

                                                        For more on CSS animations, see the +Web Platform documentation.

                                                        +

                                                        Animating ngClass with JavaScript

                                                        +

                                                        Let's add another animation to our application. Switching to our phone-detail.html page, +we see that we have a nice thumbnail swapper. By clicking on the thumbnails listed on the page, +the profile phone image changes. But how can we change this around to add animations?

                                                        +

                                                        Let's think about it first. Basically, when you click on a thumbnail image, you're changing the +state of the profile image to reflect the newly selected thumbnail image. +The best way to specify state changes within HTML is to use classes. +Much like before, how we used a CSS class to specify an animation, this time the animation will +occur whenever the CSS class itself changes.

                                                        +

                                                        Whenever a new phone thumbnail is selected, the state changes and the .active CSS class is added +to the matching profile image and the animation plays.

                                                        +

                                                        Let's get started and tweak our HTML code on the phone-detail.html page first. Notice that we +have changed the way we display our large image:

                                                        +

                                                        app/partials/phone-detail.html.

                                                        +
                                                        <!-- We're only changing the top of the file -->
                                                        +<div class="phone-images">
                                                        +  <img ng-src="{{img}}"
                                                        +       class="phone"
                                                        +       ng-repeat="img in phone.images"
                                                        +       ng-class="{active:mainImageUrl==img}">
                                                        +</div>
                                                        +
                                                        +<h1>{{phone.name}}</h1>
                                                        +
                                                        +<p>{{phone.description}}</p>
                                                        +
                                                        +<ul class="phone-thumbs">
                                                        +  <li ng-repeat="img in phone.images">
                                                        +    <img ng-src="{{img}}" ng-mouseenter="setImage(img)">
                                                        +  </li>
                                                        +</ul>
                                                        +
                                                        +

                                                        Just like with the thumbnails, we're using a repeater to display all the profile images as a +list, however we're not animating any repeat-related animations. Instead, we're keeping our eye on +the ng-class directive since whenever the active class is true then it will be applied to the +element and will render as visible. Otherwise, the profile image is hidden. In our case, there is +always one element that has the active class, and, therefore, there will always be one phone profile +image visible on screen at all times.

                                                        +

                                                        When the active class is added to the element, the active-add and the active-add-active classes +are added just before to signal AngularJS to fire off an animation. When removed, the +active-remove and the active-remove-active classes are applied to the element which in turn +trigger another animation.

                                                        +

                                                        To ensure that the phone images are displayed correctly when the page is first loaded we also tweak +the detail page CSS styles:

                                                        +

                                                        app/css/app.css

                                                        +
                                                        .phone-images {
                                                        +background-color: white;
                                                        +width: 450px;
                                                        +height: 450px;
                                                        +overflow: hidden;
                                                        +position: relative;
                                                        +float: left;
                                                        +}
                                                        +
                                                        +...
                                                        +
                                                        +img.phone {
                                                        +float: left;
                                                        +margin-right: 3em;
                                                        +margin-bottom: 2em;
                                                        +background-color: white;
                                                        +padding: 2em;
                                                        +height: 400px;
                                                        +width: 400px;
                                                        +display: none;
                                                        +}
                                                        +
                                                        +img.phone:first-child {
                                                        +display: block;
                                                        +}
                                                        +
                                                        +

                                                        You may be thinking that we're just going to create another CSS-enabled animation. +Although we could do that, let's take the opportunity to learn how to create JavaScript-enabled +animations with the animation() module method.

                                                        +

                                                        app/js/animations.js.

                                                        +
                                                        var phonecatAnimations = angular.module('phonecatAnimations', ['ngAnimate']);
                                                        +
                                                        +phonecatAnimations.animation('.phone', function() {
                                                        +
                                                        +  var animateUp = function(element, className, done) {
                                                        +    if(className != 'active') {
                                                        +      return;
                                                        +    }
                                                        +    element.css({
                                                        +      position: 'absolute',
                                                        +      top: 500,
                                                        +      left: 0,
                                                        +      display: 'block'
                                                        +    });
                                                        +
                                                        +    jQuery(element).animate({
                                                        +      top: 0
                                                        +    }, done);
                                                        +
                                                        +    return function(cancel) {
                                                        +      if(cancel) {
                                                        +        element.stop();
                                                        +      }
                                                        +    };
                                                        +  }
                                                        +
                                                        +  var animateDown = function(element, className, done) {
                                                        +    if(className != 'active') {
                                                        +      return;
                                                        +    }
                                                        +    element.css({
                                                        +      position: 'absolute',
                                                        +      left: 0,
                                                        +      top: 0
                                                        +    });
                                                        +
                                                        +    jQuery(element).animate({
                                                        +      top: -500
                                                        +    }, done);
                                                        +
                                                        +    return function(cancel) {
                                                        +      if(cancel) {
                                                        +        element.stop();
                                                        +      }
                                                        +    };
                                                        +  }
                                                        +
                                                        +  return {
                                                        +    addClass: animateUp,
                                                        +    removeClass: animateDown
                                                        +  };
                                                        +});
                                                        +
                                                        +

                                                        Note that we're using jQuery to implement the animation. jQuery +isn't required to do JavaScript animations with AngularJS, but we're going to use it because writing +your own JavaScript animation library is beyond the scope of this tutorial. For more on +jQuery.animate, see the jQuery documentation.

                                                        +

                                                        The addClass and removeClass callback functions are called whenever a class is added or removed +on the element that contains the class we registered, which is in this case .phone. When the .active +class is added to the element (via the ng-class directive) the addClass JavaScript callback will +be fired with element passed in as a parameter to that callback. The last parameter passed in is the +done callback function. The purpose of done is so you can let Angular know when the JavaScript +animation has ended by calling it.

                                                        +

                                                        The removeClass callback works the same way, but instead gets triggered when a class is removed +from the element.

                                                        +

                                                        Within your JavaScript callback, you create the animation by manipulating the DOM. In the code above, +that's what the element.css() and the element.animate() are doing. The callback positions the next +element with an offset of 500 pixels and animates both the previous and the new items together by +shifting each item up 500 pixels. This results in a conveyor-belt like animation. After the animate +function does its business, it calls done.

                                                        +

                                                        Notice that addClass and removeClass each return a function. This is an optional function that's +called when the animation is cancelled (when another animation takes place on the same element) +as well as when the animation has completed. A boolean parameter is passed into the function which +lets the developer know if the animation was cancelled or not. This function can be used to +do any cleanup necessary for when the animation finishes.

                                                        +

                                                        Summary

                                                        +

                                                        There you have it! We have created a web app in a relatively short amount of time. In the closing notes we'll cover where to go from here.

                                                        +
                                                          + + + + diff --git a/1.2.30/docs/partials/tutorial/the_end.html b/1.2.30/docs/partials/tutorial/the_end.html new file mode 100644 index 0000000000..eec21e0c20 --- /dev/null +++ b/1.2.30/docs/partials/tutorial/the_end.html @@ -0,0 +1,16 @@ + Improve this Doc + + +

                                                          Our application is now complete. Feel free to experiment with the code further, and jump back to +previous steps using the git checkout command.

                                                          +

                                                          For more details and examples of the Angular concepts we touched on in this tutorial, see the +Developer Guide.

                                                          +

                                                          When you are ready to start developing a project using Angular, we recommend that you bootstrap +your development with the angular-seed project.

                                                          +

                                                          We hope this tutorial was useful to you and that you learned enough about Angular to make you want +to learn more. We especially hope you are inspired to go out and develop Angular web apps of your +own, and that you might be interested in contributing to Angular.

                                                          +

                                                          If you have questions or feedback or just want to say "hi", please post a message at (https://groups.google.com/forum/#!forum/angular).

                                                          + + + diff --git a/1.2.30/docs/ptore2e/example-$route-service/default_test.js b/1.2.30/docs/ptore2e/example-$route-service/default_test.js new file mode 100644 index 0000000000..08f3ac941e --- /dev/null +++ b/1.2.30/docs/ptore2e/example-$route-service/default_test.js @@ -0,0 +1,21 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-$route-service/index.html"); + }); + + it('should load and compile correct template', function() { + element(by.linkText('Moby: Ch1')).click(); + var content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: ChapterController/); + expect(content).toMatch(/Book Id\: Moby/); + expect(content).toMatch(/Chapter Id\: 1/); + + element(by.partialLinkText('Scarlet')).click(); + + content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: BookController/); + expect(content).toMatch(/Book Id\: Scarlet/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-$route-service/jquery_test.js b/1.2.30/docs/ptore2e/example-$route-service/jquery_test.js new file mode 100644 index 0000000000..31faa2a8aa --- /dev/null +++ b/1.2.30/docs/ptore2e/example-$route-service/jquery_test.js @@ -0,0 +1,21 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-$route-service/index-jquery.html"); + }); + + it('should load and compile correct template', function() { + element(by.linkText('Moby: Ch1')).click(); + var content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: ChapterController/); + expect(content).toMatch(/Book Id\: Moby/); + expect(content).toMatch(/Chapter Id\: 1/); + + element(by.partialLinkText('Scarlet')).click(); + + content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: BookController/); + expect(content).toMatch(/Book Id\: Scarlet/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-NgModelController/default_test.js b/1.2.30/docs/ptore2e/example-NgModelController/default_test.js new file mode 100644 index 0000000000..820ca3235a --- /dev/null +++ b/1.2.30/docs/ptore2e/example-NgModelController/default_test.js @@ -0,0 +1,24 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-NgModelController/index.html"); + }); + +it('should data-bind and become invalid', function() { + if (browser.params.browser == 'safari' || browser.params.browser == 'firefox') { + // SafariDriver can't handle contenteditable + // and Firefox driver can't clear contenteditables very well + return; + } + var contentEditable = element(by.css('[contenteditable]')); + var content = 'Change me!'; + + expect(contentEditable.getText()).toEqual(content); + + contentEditable.clear(); + contentEditable.sendKeys(protractor.Key.BACK_SPACE); + expect(contentEditable.getText()).toEqual(''); + expect(contentEditable.getAttribute('class')).toMatch(/ng-invalid-required/); +}); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-NgModelController/jquery_test.js b/1.2.30/docs/ptore2e/example-NgModelController/jquery_test.js new file mode 100644 index 0000000000..a33531afaa --- /dev/null +++ b/1.2.30/docs/ptore2e/example-NgModelController/jquery_test.js @@ -0,0 +1,24 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-NgModelController/index-jquery.html"); + }); + +it('should data-bind and become invalid', function() { + if (browser.params.browser == 'safari' || browser.params.browser == 'firefox') { + // SafariDriver can't handle contenteditable + // and Firefox driver can't clear contenteditables very well + return; + } + var contentEditable = element(by.css('[contenteditable]')); + var content = 'Change me!'; + + expect(contentEditable.getText()).toEqual(content); + + contentEditable.clear(); + contentEditable.sendKeys(protractor.Key.BACK_SPACE); + expect(contentEditable.getText()).toEqual(''); + expect(contentEditable.getAttribute('class')).toMatch(/ng-invalid-required/); +}); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-checkbox-input-directive/default_test.js b/1.2.30/docs/ptore2e/example-checkbox-input-directive/default_test.js new file mode 100644 index 0000000000..bfcbf9092a --- /dev/null +++ b/1.2.30/docs/ptore2e/example-checkbox-input-directive/default_test.js @@ -0,0 +1,21 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-checkbox-input-directive/index.html"); + }); + + it('should change state', function() { + var value1 = element(by.binding('value1')); + var value2 = element(by.binding('value2')); + + expect(value1.getText()).toContain('true'); + expect(value2.getText()).toContain('YES'); + + element(by.model('value1')).click(); + element(by.model('value2')).click(); + + expect(value1.getText()).toContain('false'); + expect(value2.getText()).toContain('NO'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-checkbox-input-directive/jquery_test.js b/1.2.30/docs/ptore2e/example-checkbox-input-directive/jquery_test.js new file mode 100644 index 0000000000..33dfa7fcff --- /dev/null +++ b/1.2.30/docs/ptore2e/example-checkbox-input-directive/jquery_test.js @@ -0,0 +1,21 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-checkbox-input-directive/index-jquery.html"); + }); + + it('should change state', function() { + var value1 = element(by.binding('value1')); + var value2 = element(by.binding('value2')); + + expect(value1.getText()).toContain('true'); + expect(value2.getText()).toContain('YES'); + + element(by.model('value1')).click(); + element(by.model('value2')).click(); + + expect(value1.getText()).toContain('false'); + expect(value2.getText()).toContain('NO'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-email-input-directive/default_test.js b/1.2.30/docs/ptore2e/example-email-input-directive/default_test.js new file mode 100644 index 0000000000..bfa81d2b3d --- /dev/null +++ b/1.2.30/docs/ptore2e/example-email-input-directive/default_test.js @@ -0,0 +1,30 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-email-input-directive/index.html"); + }); + + var text = element(by.binding('text')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('text')); + + it('should initialize to model', function() { + expect(text.getText()).toContain('me@example.com'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + expect(text.getText()).toEqual('text ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if not email', function() { + input.clear(); + input.sendKeys('xxx'); + + expect(valid.getText()).toContain('false'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-email-input-directive/jquery_test.js b/1.2.30/docs/ptore2e/example-email-input-directive/jquery_test.js new file mode 100644 index 0000000000..3d170d5f54 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-email-input-directive/jquery_test.js @@ -0,0 +1,30 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-email-input-directive/index-jquery.html"); + }); + + var text = element(by.binding('text')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('text')); + + it('should initialize to model', function() { + expect(text.getText()).toContain('me@example.com'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + expect(text.getText()).toEqual('text ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if not email', function() { + input.clear(); + input.sendKeys('xxx'); + + expect(valid.getText()).toContain('false'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example100/default_test.js b/1.2.30/docs/ptore2e/example-example100/default_test.js new file mode 100644 index 0000000000..8fe3695515 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example100/default_test.js @@ -0,0 +1,20 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example100/index.html"); + }); + +describe('SCE doc demo', function() { + it('should sanitize untrusted values', function() { + expect(element.all(by.css('.htmlComment')).first().getInnerHtml()) + .toBe('Is anyone reading this?'); + }); + + it('should NOT sanitize explicitly trusted values', function() { + expect(element(by.id('explicitlyTrustedHtml')).getInnerHtml()).toBe( + 'Hover over this text.'); + }); +}); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example100/jquery_test.js b/1.2.30/docs/ptore2e/example-example100/jquery_test.js new file mode 100644 index 0000000000..a564175030 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example100/jquery_test.js @@ -0,0 +1,20 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example100/index-jquery.html"); + }); + +describe('SCE doc demo', function() { + it('should sanitize untrusted values', function() { + expect(element.all(by.css('.htmlComment')).first().getInnerHtml()) + .toBe('Is anyone reading this?'); + }); + + it('should NOT sanitize explicitly trusted values', function() { + expect(element(by.id('explicitlyTrustedHtml')).getInnerHtml()).toBe( + 'Hover over this text.'); + }); +}); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example101/default_test.js b/1.2.30/docs/ptore2e/example-example101/default_test.js new file mode 100644 index 0000000000..e246d492bb --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example101/default_test.js @@ -0,0 +1,13 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example101/index.html"); + }); + + it('should display the greeting in the input box', function() { + element(by.model('greeting')).sendKeys('Hello, E2E Tests'); + // If we click the button it will block the test runner + // element(':button').click(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example101/jquery_test.js b/1.2.30/docs/ptore2e/example-example101/jquery_test.js new file mode 100644 index 0000000000..f9368387c9 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example101/jquery_test.js @@ -0,0 +1,13 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example101/index-jquery.html"); + }); + + it('should display the greeting in the input box', function() { + element(by.model('greeting')).sendKeys('Hello, E2E Tests'); + // If we click the button it will block the test runner + // element(':button').click(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example102/default_test.js b/1.2.30/docs/ptore2e/example-example102/default_test.js new file mode 100644 index 0000000000..e230ab2e35 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example102/default_test.js @@ -0,0 +1,38 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example102/index.html"); + }); + + it('should linkify the snippet with urls', function() { + expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()). + toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' + + 'another@somewhere.org, and one more: ftp://127.0.0.1/.'); + expect(element.all(by.css('#linky-filter a')).count()).toEqual(4); + }); + + it('should not linkify snippet without the linky filter', function() { + expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()). + toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' + + 'another@somewhere.org, and one more: ftp://127.0.0.1/.'); + expect(element.all(by.css('#escaped-html a')).count()).toEqual(0); + }); + + it('should update', function() { + element(by.model('snippet')).clear(); + element(by.model('snippet')).sendKeys('new http://link.'); + expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()). + toBe('new http://link.'); + expect(element.all(by.css('#linky-filter a')).count()).toEqual(1); + expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()) + .toBe('new http://link.'); + }); + + it('should work with the target property', function() { + expect(element(by.id('linky-target')). + element(by.binding("snippetWithTarget | linky:'_blank'")).getText()). + toBe('http://angularjs.org/'); + expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example102/jquery_test.js b/1.2.30/docs/ptore2e/example-example102/jquery_test.js new file mode 100644 index 0000000000..ee6b5d26cd --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example102/jquery_test.js @@ -0,0 +1,38 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example102/index-jquery.html"); + }); + + it('should linkify the snippet with urls', function() { + expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()). + toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' + + 'another@somewhere.org, and one more: ftp://127.0.0.1/.'); + expect(element.all(by.css('#linky-filter a')).count()).toEqual(4); + }); + + it('should not linkify snippet without the linky filter', function() { + expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()). + toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' + + 'another@somewhere.org, and one more: ftp://127.0.0.1/.'); + expect(element.all(by.css('#escaped-html a')).count()).toEqual(0); + }); + + it('should update', function() { + element(by.model('snippet')).clear(); + element(by.model('snippet')).sendKeys('new http://link.'); + expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()). + toBe('new http://link.'); + expect(element.all(by.css('#linky-filter a')).count()).toEqual(1); + expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()) + .toBe('new http://link.'); + }); + + it('should work with the target property', function() { + expect(element(by.id('linky-target')). + element(by.binding("snippetWithTarget | linky:'_blank'")).getText()). + toBe('http://angularjs.org/'); + expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example103/default_test.js b/1.2.30/docs/ptore2e/example-example103/default_test.js new file mode 100644 index 0000000000..df157ce29d --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example103/default_test.js @@ -0,0 +1,37 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example103/index.html"); + }); + + it('should sanitize the html snippet by default', function() { + expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()). + toBe('

                                                          an html\nclick here\nsnippet

                                                          '); + }); + + it('should inline raw snippet if bound to a trusted value', function() { + expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()). + toBe("

                                                          an html\n" + + "click here\n" + + "snippet

                                                          "); + }); + + it('should escape snippet without any filter', function() { + expect(element(by.css('#bind-default div')).getInnerHtml()). + toBe("<p style=\"color:blue\">an html\n" + + "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" + + "snippet</p>"); + }); + + it('should update', function() { + element(by.model('snippet')).clear(); + element(by.model('snippet')).sendKeys('new text'); + expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()). + toBe('new text'); + expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).toBe( + 'new text'); + expect(element(by.css('#bind-default div')).getInnerHtml()).toBe( + "new <b onclick=\"alert(1)\">text</b>"); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example103/jquery_test.js b/1.2.30/docs/ptore2e/example-example103/jquery_test.js new file mode 100644 index 0000000000..6907ffbc62 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example103/jquery_test.js @@ -0,0 +1,37 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example103/index-jquery.html"); + }); + + it('should sanitize the html snippet by default', function() { + expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()). + toBe('

                                                          an html\nclick here\nsnippet

                                                          '); + }); + + it('should inline raw snippet if bound to a trusted value', function() { + expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()). + toBe("

                                                          an html\n" + + "click here\n" + + "snippet

                                                          "); + }); + + it('should escape snippet without any filter', function() { + expect(element(by.css('#bind-default div')).getInnerHtml()). + toBe("<p style=\"color:blue\">an html\n" + + "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" + + "snippet</p>"); + }); + + it('should update', function() { + element(by.model('snippet')).clear(); + element(by.model('snippet')).sendKeys('new text'); + expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()). + toBe('new text'); + expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).toBe( + 'new text'); + expect(element(by.css('#bind-default div')).getInnerHtml()).toBe( + "new <b onclick=\"alert(1)\">text</b>"); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example20/default_test.js b/1.2.30/docs/ptore2e/example-example20/default_test.js new file mode 100644 index 0000000000..50c749a7a9 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example20/default_test.js @@ -0,0 +1,11 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example20/index.html"); + }); + + it('should calculate expression in binding', function() { + expect(element(by.binding('1+2')).getText()).toEqual('1+2=3'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example20/jquery_test.js b/1.2.30/docs/ptore2e/example-example20/jquery_test.js new file mode 100644 index 0000000000..5cb9794d9a --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example20/jquery_test.js @@ -0,0 +1,11 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example20/index-jquery.html"); + }); + + it('should calculate expression in binding', function() { + expect(element(by.binding('1+2')).getText()).toEqual('1+2=3'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example21/default_test.js b/1.2.30/docs/ptore2e/example-example21/default_test.js new file mode 100644 index 0000000000..14e88ec217 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example21/default_test.js @@ -0,0 +1,14 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example21/index.html"); + }); + + it('should allow user expression testing', function() { + element(by.css('.expressions button')).click(); + var lis = element(by.css('.expressions ul')).all(by.repeater('expr in exprs')); + expect(lis.count()).toBe(1); + expect(lis.get(0).getText()).toEqual('[ X ] 3*10|currency => $30.00'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example21/jquery_test.js b/1.2.30/docs/ptore2e/example-example21/jquery_test.js new file mode 100644 index 0000000000..d77304d817 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example21/jquery_test.js @@ -0,0 +1,14 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example21/index-jquery.html"); + }); + + it('should allow user expression testing', function() { + element(by.css('.expressions button')).click(); + var lis = element(by.css('.expressions ul')).all(by.repeater('expr in exprs')); + expect(lis.count()).toBe(1); + expect(lis.get(0).getText()).toEqual('[ X ] 3*10|currency => $30.00'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example22/default_test.js b/1.2.30/docs/ptore2e/example-example22/default_test.js new file mode 100644 index 0000000000..cc514c6378 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example22/default_test.js @@ -0,0 +1,21 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example22/index.html"); + }); + + it('should calculate expression in binding', function() { + if (browser.params.browser == 'safari') { + // Safari can't handle dialogs. + return; + } + element(by.css('[ng-click="greet()"]')).click(); + + var alertDialog = browser.switchTo().alert(); + + expect(alertDialog.getText()).toEqual('Hello World'); + + alertDialog.accept(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example22/jquery_test.js b/1.2.30/docs/ptore2e/example-example22/jquery_test.js new file mode 100644 index 0000000000..142af69363 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example22/jquery_test.js @@ -0,0 +1,21 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example22/index-jquery.html"); + }); + + it('should calculate expression in binding', function() { + if (browser.params.browser == 'safari') { + // Safari can't handle dialogs. + return; + } + element(by.css('[ng-click="greet()"]')).click(); + + var alertDialog = browser.switchTo().alert(); + + expect(alertDialog.getText()).toEqual('Hello World'); + + alertDialog.accept(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example31/default_test.js b/1.2.30/docs/ptore2e/example-example31/default_test.js new file mode 100644 index 0000000000..c89f830f6b --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example31/default_test.js @@ -0,0 +1,12 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.rootEl = '[ng-app]'; + browser.get("examples/example-example31/index.html"); + }); + afterEach(function() { browser.rootEl = rootEl; }); + it('should add Hello to the name', function() { + expect(element(by.binding("{{ 'World' | greet }}")).getText()).toEqual('Hello, World!'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example31/jquery_test.js b/1.2.30/docs/ptore2e/example-example31/jquery_test.js new file mode 100644 index 0000000000..5d01193189 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example31/jquery_test.js @@ -0,0 +1,12 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.rootEl = '[ng-app]'; + browser.get("examples/example-example31/index-jquery.html"); + }); + afterEach(function() { browser.rootEl = rootEl; }); + it('should add Hello to the name', function() { + expect(element(by.binding("{{ 'World' | greet }}")).getText()).toEqual('Hello, World!'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example32/default_test.js b/1.2.30/docs/ptore2e/example-example32/default_test.js new file mode 100644 index 0000000000..e5dbe3da43 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example32/default_test.js @@ -0,0 +1,11 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example32/index.html"); + }); + + it('should add Hello to the name', function() { + expect(element(by.binding("{{ greeting }}")).getText()).toEqual('Bonjour World!'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example32/jquery_test.js b/1.2.30/docs/ptore2e/example-example32/jquery_test.js new file mode 100644 index 0000000000..ba80ffa1d3 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example32/jquery_test.js @@ -0,0 +1,11 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example32/index-jquery.html"); + }); + + it('should add Hello to the name', function() { + expect(element(by.binding("{{ greeting }}")).getText()).toEqual('Bonjour World!'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example36/default_test.js b/1.2.30/docs/ptore2e/example-example36/default_test.js new file mode 100644 index 0000000000..647430eb08 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example36/default_test.js @@ -0,0 +1,12 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example36/index.html"); + }); + + it('should test service', function() { + expect(element(by.id('simple')).element(by.model('message')).getAttribute('value')) + .toEqual('test'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example36/jquery_test.js b/1.2.30/docs/ptore2e/example-example36/jquery_test.js new file mode 100644 index 0000000000..b64a440c18 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example36/jquery_test.js @@ -0,0 +1,12 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example36/index-jquery.html"); + }); + + it('should test service', function() { + expect(element(by.id('simple')).element(by.model('message')).getAttribute('value')) + .toEqual('test'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example42/default_test.js b/1.2.30/docs/ptore2e/example-example42/default_test.js new file mode 100644 index 0000000000..5fae100694 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example42/default_test.js @@ -0,0 +1,17 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example42/index.html"); + }); + + it('should auto compile', function() { + var textarea = $('textarea'); + var output = $('div[compile]'); + // The initial state reads 'Hello Angular'. + expect(output.getText()).toBe('Hello Angular'); + textarea.clear(); + textarea.sendKeys('{{name}}!'); + expect(output.getText()).toBe('Angular!'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example42/jquery_test.js b/1.2.30/docs/ptore2e/example-example42/jquery_test.js new file mode 100644 index 0000000000..65d8f80005 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example42/jquery_test.js @@ -0,0 +1,17 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example42/index-jquery.html"); + }); + + it('should auto compile', function() { + var textarea = $('textarea'); + var output = $('div[compile]'); + // The initial state reads 'Hello Angular'. + expect(output.getText()).toBe('Hello Angular'); + textarea.clear(); + textarea.sendKeys('{{name}}!'); + expect(output.getText()).toBe('Angular!'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example43/default_test.js b/1.2.30/docs/ptore2e/example-example43/default_test.js new file mode 100644 index 0000000000..762fedace7 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example43/default_test.js @@ -0,0 +1,62 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example43/index.html"); + }); + + it('should execute ng-click but not reload when href without value', function() { + element(by.id('link-1')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('1'); + expect(element(by.id('link-1')).getAttribute('href')).toBe(''); + }); + + it('should execute ng-click but not reload when href empty string', function() { + element(by.id('link-2')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('2'); + expect(element(by.id('link-2')).getAttribute('href')).toBe(''); + }); + + it('should execute ng-click and change url when ng-href specified', function() { + expect(element(by.id('link-3')).getAttribute('href')).toMatch(/\/123$/); + + element(by.id('link-3')).click(); + + // At this point, we navigate away from an Angular page, so we need + // to use browser.driver to get the base webdriver. + + browser.wait(function() { + return browser.driver.getCurrentUrl().then(function(url) { + return url.match(/\/123$/); + }); + }, 5000, 'page should navigate to /123'); + }); + + xit('should execute ng-click but not reload when href empty string and name specified', function() { + element(by.id('link-4')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('4'); + expect(element(by.id('link-4')).getAttribute('href')).toBe(''); + }); + + it('should execute ng-click but not reload when no href but name specified', function() { + element(by.id('link-5')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('5'); + expect(element(by.id('link-5')).getAttribute('href')).toBe(null); + }); + + it('should only change url when only ng-href', function() { + element(by.model('value')).clear(); + element(by.model('value')).sendKeys('6'); + expect(element(by.id('link-6')).getAttribute('href')).toMatch(/\/6$/); + + element(by.id('link-6')).click(); + + // At this point, we navigate away from an Angular page, so we need + // to use browser.driver to get the base webdriver. + browser.wait(function() { + return browser.driver.getCurrentUrl().then(function(url) { + return url.match(/\/6$/); + }); + }, 5000, 'page should navigate to /6'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example43/jquery_test.js b/1.2.30/docs/ptore2e/example-example43/jquery_test.js new file mode 100644 index 0000000000..34a02eb5cc --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example43/jquery_test.js @@ -0,0 +1,62 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example43/index-jquery.html"); + }); + + it('should execute ng-click but not reload when href without value', function() { + element(by.id('link-1')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('1'); + expect(element(by.id('link-1')).getAttribute('href')).toBe(''); + }); + + it('should execute ng-click but not reload when href empty string', function() { + element(by.id('link-2')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('2'); + expect(element(by.id('link-2')).getAttribute('href')).toBe(''); + }); + + it('should execute ng-click and change url when ng-href specified', function() { + expect(element(by.id('link-3')).getAttribute('href')).toMatch(/\/123$/); + + element(by.id('link-3')).click(); + + // At this point, we navigate away from an Angular page, so we need + // to use browser.driver to get the base webdriver. + + browser.wait(function() { + return browser.driver.getCurrentUrl().then(function(url) { + return url.match(/\/123$/); + }); + }, 5000, 'page should navigate to /123'); + }); + + xit('should execute ng-click but not reload when href empty string and name specified', function() { + element(by.id('link-4')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('4'); + expect(element(by.id('link-4')).getAttribute('href')).toBe(''); + }); + + it('should execute ng-click but not reload when no href but name specified', function() { + element(by.id('link-5')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('5'); + expect(element(by.id('link-5')).getAttribute('href')).toBe(null); + }); + + it('should only change url when only ng-href', function() { + element(by.model('value')).clear(); + element(by.model('value')).sendKeys('6'); + expect(element(by.id('link-6')).getAttribute('href')).toMatch(/\/6$/); + + element(by.id('link-6')).click(); + + // At this point, we navigate away from an Angular page, so we need + // to use browser.driver to get the base webdriver. + browser.wait(function() { + return browser.driver.getCurrentUrl().then(function(url) { + return url.match(/\/6$/); + }); + }, 5000, 'page should navigate to /6'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example44/default_test.js b/1.2.30/docs/ptore2e/example-example44/default_test.js new file mode 100644 index 0000000000..717555137c --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example44/default_test.js @@ -0,0 +1,13 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example44/index.html"); + }); + + it('should toggle button', function() { + expect(element(by.css('button')).getAttribute('disabled')).toBeFalsy(); + element(by.model('checked')).click(); + expect(element(by.css('button')).getAttribute('disabled')).toBeTruthy(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example44/jquery_test.js b/1.2.30/docs/ptore2e/example-example44/jquery_test.js new file mode 100644 index 0000000000..6b2d842d3f --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example44/jquery_test.js @@ -0,0 +1,13 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example44/index-jquery.html"); + }); + + it('should toggle button', function() { + expect(element(by.css('button')).getAttribute('disabled')).toBeFalsy(); + element(by.model('checked')).click(); + expect(element(by.css('button')).getAttribute('disabled')).toBeTruthy(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example45/default_test.js b/1.2.30/docs/ptore2e/example-example45/default_test.js new file mode 100644 index 0000000000..b241160b88 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example45/default_test.js @@ -0,0 +1,13 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example45/index.html"); + }); + + it('should check both checkBoxes', function() { + expect(element(by.id('checkSlave')).getAttribute('checked')).toBeFalsy(); + element(by.model('master')).click(); + expect(element(by.id('checkSlave')).getAttribute('checked')).toBeTruthy(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example45/jquery_test.js b/1.2.30/docs/ptore2e/example-example45/jquery_test.js new file mode 100644 index 0000000000..aba4ca451c --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example45/jquery_test.js @@ -0,0 +1,13 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example45/index-jquery.html"); + }); + + it('should check both checkBoxes', function() { + expect(element(by.id('checkSlave')).getAttribute('checked')).toBeFalsy(); + element(by.model('master')).click(); + expect(element(by.id('checkSlave')).getAttribute('checked')).toBeTruthy(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example46/default_test.js b/1.2.30/docs/ptore2e/example-example46/default_test.js new file mode 100644 index 0000000000..0c2a6de4b2 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example46/default_test.js @@ -0,0 +1,13 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example46/index.html"); + }); + + it('should toggle readonly attr', function() { + expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeFalsy(); + element(by.model('checked')).click(); + expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeTruthy(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example46/jquery_test.js b/1.2.30/docs/ptore2e/example-example46/jquery_test.js new file mode 100644 index 0000000000..f89b723ce5 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example46/jquery_test.js @@ -0,0 +1,13 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example46/index-jquery.html"); + }); + + it('should toggle readonly attr', function() { + expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeFalsy(); + element(by.model('checked')).click(); + expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeTruthy(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example47/default_test.js b/1.2.30/docs/ptore2e/example-example47/default_test.js new file mode 100644 index 0000000000..489f2624a9 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example47/default_test.js @@ -0,0 +1,13 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example47/index.html"); + }); + + it('should select Greetings!', function() { + expect(element(by.id('greet')).getAttribute('selected')).toBeFalsy(); + element(by.model('selected')).click(); + expect(element(by.id('greet')).getAttribute('selected')).toBeTruthy(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example47/jquery_test.js b/1.2.30/docs/ptore2e/example-example47/jquery_test.js new file mode 100644 index 0000000000..2bfd7a1490 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example47/jquery_test.js @@ -0,0 +1,13 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example47/index-jquery.html"); + }); + + it('should select Greetings!', function() { + expect(element(by.id('greet')).getAttribute('selected')).toBeFalsy(); + element(by.model('selected')).click(); + expect(element(by.id('greet')).getAttribute('selected')).toBeTruthy(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example48/default_test.js b/1.2.30/docs/ptore2e/example-example48/default_test.js new file mode 100644 index 0000000000..c7c89cfeef --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example48/default_test.js @@ -0,0 +1,13 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example48/index.html"); + }); + + it('should toggle open', function() { + expect(element(by.id('details')).getAttribute('open')).toBeFalsy(); + element(by.model('open')).click(); + expect(element(by.id('details')).getAttribute('open')).toBeTruthy(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example48/jquery_test.js b/1.2.30/docs/ptore2e/example-example48/jquery_test.js new file mode 100644 index 0000000000..f16deff29a --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example48/jquery_test.js @@ -0,0 +1,13 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example48/index-jquery.html"); + }); + + it('should toggle open', function() { + expect(element(by.id('details')).getAttribute('open')).toBeFalsy(); + element(by.model('open')).click(); + expect(element(by.id('details')).getAttribute('open')).toBeTruthy(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example49/default_test.js b/1.2.30/docs/ptore2e/example-example49/default_test.js new file mode 100644 index 0000000000..53a766c6d1 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example49/default_test.js @@ -0,0 +1,27 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example49/index.html"); + }); + + it('should initialize to model', function() { + var userType = element(by.binding('userType')); + var valid = element(by.binding('myForm.input.$valid')); + + expect(userType.getText()).toContain('guest'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + var userType = element(by.binding('userType')); + var valid = element(by.binding('myForm.input.$valid')); + var userInput = element(by.model('userType')); + + userInput.clear(); + userInput.sendKeys(''); + + expect(userType.getText()).toEqual('userType ='); + expect(valid.getText()).toContain('false'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example49/jquery_test.js b/1.2.30/docs/ptore2e/example-example49/jquery_test.js new file mode 100644 index 0000000000..c00c408f82 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example49/jquery_test.js @@ -0,0 +1,27 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example49/index-jquery.html"); + }); + + it('should initialize to model', function() { + var userType = element(by.binding('userType')); + var valid = element(by.binding('myForm.input.$valid')); + + expect(userType.getText()).toContain('guest'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + var userType = element(by.binding('userType')); + var valid = element(by.binding('myForm.input.$valid')); + var userInput = element(by.model('userType')); + + userInput.clear(); + userInput.sendKeys(''); + + expect(userType.getText()).toEqual('userType ='); + expect(valid.getText()).toContain('false'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example51/default_test.js b/1.2.30/docs/ptore2e/example-example51/default_test.js new file mode 100644 index 0000000000..a50ad0f1f0 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example51/default_test.js @@ -0,0 +1,16 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example51/index.html"); + }); + + it('should check ng-bind', function() { + var nameInput = element(by.model('name')); + + expect(element(by.binding('name')).getText()).toBe('Whirled'); + nameInput.clear(); + nameInput.sendKeys('world'); + expect(element(by.binding('name')).getText()).toBe('world'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example51/jquery_test.js b/1.2.30/docs/ptore2e/example-example51/jquery_test.js new file mode 100644 index 0000000000..c97102fd77 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example51/jquery_test.js @@ -0,0 +1,16 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example51/index-jquery.html"); + }); + + it('should check ng-bind', function() { + var nameInput = element(by.model('name')); + + expect(element(by.binding('name')).getText()).toBe('Whirled'); + nameInput.clear(); + nameInput.sendKeys('world'); + expect(element(by.binding('name')).getText()).toBe('world'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example52/default_test.js b/1.2.30/docs/ptore2e/example-example52/default_test.js new file mode 100644 index 0000000000..08ad480ff7 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example52/default_test.js @@ -0,0 +1,22 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example52/index.html"); + }); + + it('should check ng-bind', function() { + var salutationElem = element(by.binding('salutation')); + var salutationInput = element(by.model('salutation')); + var nameInput = element(by.model('name')); + + expect(salutationElem.getText()).toBe('Hello World!'); + + salutationInput.clear(); + salutationInput.sendKeys('Greetings'); + nameInput.clear(); + nameInput.sendKeys('user'); + + expect(salutationElem.getText()).toBe('Greetings user!'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example52/jquery_test.js b/1.2.30/docs/ptore2e/example-example52/jquery_test.js new file mode 100644 index 0000000000..38069090d0 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example52/jquery_test.js @@ -0,0 +1,22 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example52/index-jquery.html"); + }); + + it('should check ng-bind', function() { + var salutationElem = element(by.binding('salutation')); + var salutationInput = element(by.model('salutation')); + var nameInput = element(by.model('name')); + + expect(salutationElem.getText()).toBe('Hello World!'); + + salutationInput.clear(); + salutationInput.sendKeys('Greetings'); + nameInput.clear(); + nameInput.sendKeys('user'); + + expect(salutationElem.getText()).toBe('Greetings user!'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example53/default_test.js b/1.2.30/docs/ptore2e/example-example53/default_test.js new file mode 100644 index 0000000000..2e70693505 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example53/default_test.js @@ -0,0 +1,12 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example53/index.html"); + }); + + it('should check ng-bind-html', function() { + expect(element(by.binding('myHTML')).getText()).toBe( + 'I am an HTMLstring with links! and other stuff'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example53/jquery_test.js b/1.2.30/docs/ptore2e/example-example53/jquery_test.js new file mode 100644 index 0000000000..72a47c5400 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example53/jquery_test.js @@ -0,0 +1,12 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example53/index-jquery.html"); + }); + + it('should check ng-bind-html', function() { + expect(element(by.binding('myHTML')).getText()).toBe( + 'I am an HTMLstring with links! and other stuff'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example54/default_test.js b/1.2.30/docs/ptore2e/example-example54/default_test.js new file mode 100644 index 0000000000..6fce375a82 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example54/default_test.js @@ -0,0 +1,36 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example54/index.html"); + }); + + var ps = element.all(by.css('p')); + + it('should let you toggle the class', function() { + + expect(ps.first().getAttribute('class')).not.toMatch(/bold/); + expect(ps.first().getAttribute('class')).not.toMatch(/red/); + + element(by.model('important')).click(); + expect(ps.first().getAttribute('class')).toMatch(/bold/); + + element(by.model('error')).click(); + expect(ps.first().getAttribute('class')).toMatch(/red/); + }); + + it('should let you toggle string example', function() { + expect(ps.get(1).getAttribute('class')).toBe(''); + element(by.model('style')).clear(); + element(by.model('style')).sendKeys('red'); + expect(ps.get(1).getAttribute('class')).toBe('red'); + }); + + it('array example should have 3 classes', function() { + expect(ps.last().getAttribute('class')).toBe(''); + element(by.model('style1')).sendKeys('bold'); + element(by.model('style2')).sendKeys('strike'); + element(by.model('style3')).sendKeys('red'); + expect(ps.last().getAttribute('class')).toBe('bold strike red'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example54/jquery_test.js b/1.2.30/docs/ptore2e/example-example54/jquery_test.js new file mode 100644 index 0000000000..6fc48f3546 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example54/jquery_test.js @@ -0,0 +1,36 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example54/index-jquery.html"); + }); + + var ps = element.all(by.css('p')); + + it('should let you toggle the class', function() { + + expect(ps.first().getAttribute('class')).not.toMatch(/bold/); + expect(ps.first().getAttribute('class')).not.toMatch(/red/); + + element(by.model('important')).click(); + expect(ps.first().getAttribute('class')).toMatch(/bold/); + + element(by.model('error')).click(); + expect(ps.first().getAttribute('class')).toMatch(/red/); + }); + + it('should let you toggle string example', function() { + expect(ps.get(1).getAttribute('class')).toBe(''); + element(by.model('style')).clear(); + element(by.model('style')).sendKeys('red'); + expect(ps.get(1).getAttribute('class')).toBe('red'); + }); + + it('array example should have 3 classes', function() { + expect(ps.last().getAttribute('class')).toBe(''); + element(by.model('style1')).sendKeys('bold'); + element(by.model('style2')).sendKeys('strike'); + element(by.model('style3')).sendKeys('red'); + expect(ps.last().getAttribute('class')).toBe('bold strike red'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example55/default_test.js b/1.2.30/docs/ptore2e/example-example55/default_test.js new file mode 100644 index 0000000000..47d79b2c38 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example55/default_test.js @@ -0,0 +1,22 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example55/index.html"); + }); + + it('should check ng-class', function() { + expect(element(by.css('.base-class')).getAttribute('class')).not. + toMatch(/my-class/); + + element(by.id('setbtn')).click(); + + expect(element(by.css('.base-class')).getAttribute('class')). + toMatch(/my-class/); + + element(by.id('clearbtn')).click(); + + expect(element(by.css('.base-class')).getAttribute('class')).not. + toMatch(/my-class/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example55/jquery_test.js b/1.2.30/docs/ptore2e/example-example55/jquery_test.js new file mode 100644 index 0000000000..2cb50aa5fe --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example55/jquery_test.js @@ -0,0 +1,22 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example55/index-jquery.html"); + }); + + it('should check ng-class', function() { + expect(element(by.css('.base-class')).getAttribute('class')).not. + toMatch(/my-class/); + + element(by.id('setbtn')).click(); + + expect(element(by.css('.base-class')).getAttribute('class')). + toMatch(/my-class/); + + element(by.id('clearbtn')).click(); + + expect(element(by.css('.base-class')).getAttribute('class')).not. + toMatch(/my-class/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example56/default_test.js b/1.2.30/docs/ptore2e/example-example56/default_test.js new file mode 100644 index 0000000000..274978057b --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example56/default_test.js @@ -0,0 +1,14 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example56/index.html"); + }); + + it('should check ng-class-odd and ng-class-even', function() { + expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')). + toMatch(/odd/); + expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')). + toMatch(/even/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example56/jquery_test.js b/1.2.30/docs/ptore2e/example-example56/jquery_test.js new file mode 100644 index 0000000000..4c35536d3c --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example56/jquery_test.js @@ -0,0 +1,14 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example56/index-jquery.html"); + }); + + it('should check ng-class-odd and ng-class-even', function() { + expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')). + toMatch(/odd/); + expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')). + toMatch(/even/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example57/default_test.js b/1.2.30/docs/ptore2e/example-example57/default_test.js new file mode 100644 index 0000000000..ef3245cee9 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example57/default_test.js @@ -0,0 +1,14 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example57/index.html"); + }); + + it('should check ng-class-odd and ng-class-even', function() { + expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')). + toMatch(/odd/); + expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')). + toMatch(/even/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example57/jquery_test.js b/1.2.30/docs/ptore2e/example-example57/jquery_test.js new file mode 100644 index 0000000000..f93c6e3952 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example57/jquery_test.js @@ -0,0 +1,14 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example57/index-jquery.html"); + }); + + it('should check ng-class-odd and ng-class-even', function() { + expect(element(by.repeater('name in names').row(0).column('name')).getAttribute('class')). + toMatch(/odd/); + expect(element(by.repeater('name in names').row(1).column('name')).getAttribute('class')). + toMatch(/even/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example58/default_test.js b/1.2.30/docs/ptore2e/example-example58/default_test.js new file mode 100644 index 0000000000..2eaff33749 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example58/default_test.js @@ -0,0 +1,14 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example58/index.html"); + }); + + it('should remove the template directive and css class', function() { + expect($('#template1').getAttribute('ng-cloak')). + toBeNull(); + expect($('#template2').getAttribute('ng-cloak')). + toBeNull(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example58/jquery_test.js b/1.2.30/docs/ptore2e/example-example58/jquery_test.js new file mode 100644 index 0000000000..8887e7d2be --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example58/jquery_test.js @@ -0,0 +1,14 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example58/index-jquery.html"); + }); + + it('should remove the template directive and css class', function() { + expect($('#template1').getAttribute('ng-cloak')). + toBeNull(); + expect($('#template2').getAttribute('ng-cloak')). + toBeNull(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example59/default_test.js b/1.2.30/docs/ptore2e/example-example59/default_test.js new file mode 100644 index 0000000000..a4d2ea4d80 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example59/default_test.js @@ -0,0 +1,13 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example59/index.html"); + }); + + it('should check ng-click', function() { + expect(element(by.binding('count')).getText()).toMatch('0'); + element(by.css('button')).click(); + expect(element(by.binding('count')).getText()).toMatch('1'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example59/jquery_test.js b/1.2.30/docs/ptore2e/example-example59/jquery_test.js new file mode 100644 index 0000000000..c277fa4826 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example59/jquery_test.js @@ -0,0 +1,13 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example59/index-jquery.html"); + }); + + it('should check ng-click', function() { + expect(element(by.binding('count')).getText()).toMatch('0'); + element(by.css('button')).click(); + expect(element(by.binding('count')).getText()).toMatch('1'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example70/default_test.js b/1.2.30/docs/ptore2e/example-example70/default_test.js new file mode 100644 index 0000000000..125ee0813a --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example70/default_test.js @@ -0,0 +1,20 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example70/index.html"); + }); + + it('should check ng-submit', function() { + expect(element(by.binding('list')).getText()).toBe('list=[]'); + element(by.css('#submit')).click(); + expect(element(by.binding('list')).getText()).toContain('hello'); + expect(element(by.model('text')).getAttribute('value')).toBe(''); + }); + it('should ignore empty strings', function() { + expect(element(by.binding('list')).getText()).toBe('list=[]'); + element(by.css('#submit')).click(); + element(by.css('#submit')).click(); + expect(element(by.binding('list')).getText()).toContain('hello'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example70/jquery_test.js b/1.2.30/docs/ptore2e/example-example70/jquery_test.js new file mode 100644 index 0000000000..2a8fffdd81 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example70/jquery_test.js @@ -0,0 +1,20 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example70/index-jquery.html"); + }); + + it('should check ng-submit', function() { + expect(element(by.binding('list')).getText()).toBe('list=[]'); + element(by.css('#submit')).click(); + expect(element(by.binding('list')).getText()).toContain('hello'); + expect(element(by.model('text')).getAttribute('value')).toBe(''); + }); + it('should ignore empty strings', function() { + expect(element(by.binding('list')).getText()).toBe('list=[]'); + element(by.css('#submit')).click(); + element(by.css('#submit')).click(); + expect(element(by.binding('list')).getText()).toContain('hello'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example75/default_test.js b/1.2.30/docs/ptore2e/example-example75/default_test.js new file mode 100644 index 0000000000..0b406a5540 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example75/default_test.js @@ -0,0 +1,35 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example75/index.html"); + }); + + var templateSelect = element(by.model('template')); + var includeElem = element(by.css('[ng-include]')); + + it('should load template1.html', function() { + expect(includeElem.getText()).toMatch(/Content of template1.html/); + }); + + it('should load template2.html', function() { + if (browser.params.browser == 'firefox') { + // Firefox can't handle using selects + // See https://github.com/angular/protractor/issues/480 + return; + } + templateSelect.click(); + templateSelect.all(by.css('option')).get(2).click(); + expect(includeElem.getText()).toMatch(/Content of template2.html/); + }); + + it('should change to blank', function() { + if (browser.params.browser == 'firefox') { + // Firefox can't handle using selects + return; + } + templateSelect.click(); + templateSelect.all(by.css('option')).get(0).click(); + expect(includeElem.isPresent()).toBe(false); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example75/jquery_test.js b/1.2.30/docs/ptore2e/example-example75/jquery_test.js new file mode 100644 index 0000000000..bb06bbaab3 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example75/jquery_test.js @@ -0,0 +1,35 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example75/index-jquery.html"); + }); + + var templateSelect = element(by.model('template')); + var includeElem = element(by.css('[ng-include]')); + + it('should load template1.html', function() { + expect(includeElem.getText()).toMatch(/Content of template1.html/); + }); + + it('should load template2.html', function() { + if (browser.params.browser == 'firefox') { + // Firefox can't handle using selects + // See https://github.com/angular/protractor/issues/480 + return; + } + templateSelect.click(); + templateSelect.all(by.css('option')).get(2).click(); + expect(includeElem.getText()).toMatch(/Content of template2.html/); + }); + + it('should change to blank', function() { + if (browser.params.browser == 'firefox') { + // Firefox can't handle using selects + return; + } + templateSelect.click(); + templateSelect.all(by.css('option')).get(0).click(); + expect(includeElem.isPresent()).toBe(false); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example76/default_test.js b/1.2.30/docs/ptore2e/example-example76/default_test.js new file mode 100644 index 0000000000..dcc826c623 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example76/default_test.js @@ -0,0 +1,15 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example76/index.html"); + }); + + it('should alias index positions', function() { + var elements = element.all(by.css('.example-init')); + expect(elements.get(0).getText()).toBe('list[ 0 ][ 0 ] = a;'); + expect(elements.get(1).getText()).toBe('list[ 0 ][ 1 ] = b;'); + expect(elements.get(2).getText()).toBe('list[ 1 ][ 0 ] = c;'); + expect(elements.get(3).getText()).toBe('list[ 1 ][ 1 ] = d;'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example76/jquery_test.js b/1.2.30/docs/ptore2e/example-example76/jquery_test.js new file mode 100644 index 0000000000..20a32e3273 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example76/jquery_test.js @@ -0,0 +1,15 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example76/index-jquery.html"); + }); + + it('should alias index positions', function() { + var elements = element.all(by.css('.example-init')); + expect(elements.get(0).getText()).toBe('list[ 0 ][ 0 ] = a;'); + expect(elements.get(1).getText()).toBe('list[ 0 ][ 1 ] = b;'); + expect(elements.get(2).getText()).toBe('list[ 1 ][ 0 ] = c;'); + expect(elements.get(3).getText()).toBe('list[ 1 ][ 1 ] = d;'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example77/default_test.js b/1.2.30/docs/ptore2e/example-example77/default_test.js new file mode 100644 index 0000000000..f79802751a --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example77/default_test.js @@ -0,0 +1,12 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example77/index.html"); + }); + + it('should check ng-non-bindable', function() { + expect(element(by.binding('1 + 2')).getText()).toContain('3'); + expect(element.all(by.css('div')).last().getText()).toMatch(/1 \+ 2/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example77/jquery_test.js b/1.2.30/docs/ptore2e/example-example77/jquery_test.js new file mode 100644 index 0000000000..17b39acdc4 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example77/jquery_test.js @@ -0,0 +1,12 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example77/index-jquery.html"); + }); + + it('should check ng-non-bindable', function() { + expect(element(by.binding('1 + 2')).getText()).toContain('3'); + expect(element.all(by.css('div')).last().getText()).toMatch(/1 \+ 2/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example78/default_test.js b/1.2.30/docs/ptore2e/example-example78/default_test.js new file mode 100644 index 0000000000..0af921e259 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example78/default_test.js @@ -0,0 +1,53 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example78/index.html"); + }); + + it('should show correct pluralized string', function() { + var withoutOffset = element.all(by.css('ng-pluralize')).get(0); + var withOffset = element.all(by.css('ng-pluralize')).get(1); + var countInput = element(by.model('personCount')); + + expect(withoutOffset.getText()).toEqual('1 person is viewing.'); + expect(withOffset.getText()).toEqual('Igor is viewing.'); + + countInput.clear(); + countInput.sendKeys('0'); + + expect(withoutOffset.getText()).toEqual('Nobody is viewing.'); + expect(withOffset.getText()).toEqual('Nobody is viewing.'); + + countInput.clear(); + countInput.sendKeys('2'); + + expect(withoutOffset.getText()).toEqual('2 people are viewing.'); + expect(withOffset.getText()).toEqual('Igor and Misko are viewing.'); + + countInput.clear(); + countInput.sendKeys('3'); + + expect(withoutOffset.getText()).toEqual('3 people are viewing.'); + expect(withOffset.getText()).toEqual('Igor, Misko and one other person are viewing.'); + + countInput.clear(); + countInput.sendKeys('4'); + + expect(withoutOffset.getText()).toEqual('4 people are viewing.'); + expect(withOffset.getText()).toEqual('Igor, Misko and 2 other people are viewing.'); + }); + it('should show data-bound names', function() { + var withOffset = element.all(by.css('ng-pluralize')).get(1); + var personCount = element(by.model('personCount')); + var person1 = element(by.model('person1')); + var person2 = element(by.model('person2')); + personCount.clear(); + personCount.sendKeys('4'); + person1.clear(); + person1.sendKeys('Di'); + person2.clear(); + person2.sendKeys('Vojta'); + expect(withOffset.getText()).toEqual('Di, Vojta and 2 other people are viewing.'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example78/jquery_test.js b/1.2.30/docs/ptore2e/example-example78/jquery_test.js new file mode 100644 index 0000000000..17758a8652 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example78/jquery_test.js @@ -0,0 +1,53 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example78/index-jquery.html"); + }); + + it('should show correct pluralized string', function() { + var withoutOffset = element.all(by.css('ng-pluralize')).get(0); + var withOffset = element.all(by.css('ng-pluralize')).get(1); + var countInput = element(by.model('personCount')); + + expect(withoutOffset.getText()).toEqual('1 person is viewing.'); + expect(withOffset.getText()).toEqual('Igor is viewing.'); + + countInput.clear(); + countInput.sendKeys('0'); + + expect(withoutOffset.getText()).toEqual('Nobody is viewing.'); + expect(withOffset.getText()).toEqual('Nobody is viewing.'); + + countInput.clear(); + countInput.sendKeys('2'); + + expect(withoutOffset.getText()).toEqual('2 people are viewing.'); + expect(withOffset.getText()).toEqual('Igor and Misko are viewing.'); + + countInput.clear(); + countInput.sendKeys('3'); + + expect(withoutOffset.getText()).toEqual('3 people are viewing.'); + expect(withOffset.getText()).toEqual('Igor, Misko and one other person are viewing.'); + + countInput.clear(); + countInput.sendKeys('4'); + + expect(withoutOffset.getText()).toEqual('4 people are viewing.'); + expect(withOffset.getText()).toEqual('Igor, Misko and 2 other people are viewing.'); + }); + it('should show data-bound names', function() { + var withOffset = element.all(by.css('ng-pluralize')).get(1); + var personCount = element(by.model('personCount')); + var person1 = element(by.model('person1')); + var person2 = element(by.model('person2')); + personCount.clear(); + personCount.sendKeys('4'); + person1.clear(); + person1.sendKeys('Di'); + person2.clear(); + person2.sendKeys('Vojta'); + expect(withOffset.getText()).toEqual('Di, Vojta and 2 other people are viewing.'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example79/default_test.js b/1.2.30/docs/ptore2e/example-example79/default_test.js new file mode 100644 index 0000000000..33d9a8a297 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example79/default_test.js @@ -0,0 +1,28 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example79/index.html"); + }); + +var friends = element.all(by.repeater('friend in friends')); + +it('should render initial data set', function() { + expect(friends.count()).toBe(10); + expect(friends.get(0).getText()).toEqual('[1] John who is 25 years old.'); + expect(friends.get(1).getText()).toEqual('[2] Jessie who is 30 years old.'); + expect(friends.last().getText()).toEqual('[10] Samantha who is 60 years old.'); + expect(element(by.binding('friends.length')).getText()) + .toMatch("I have 10 friends. They are:"); +}); + + it('should update repeater when filter predicate changes', function() { + expect(friends.count()).toBe(10); + + element(by.model('q')).sendKeys('ma'); + + expect(friends.count()).toBe(2); + expect(friends.get(0).getText()).toEqual('[1] Mary who is 28 years old.'); + expect(friends.last().getText()).toEqual('[2] Samantha who is 60 years old.'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example79/jquery_test.js b/1.2.30/docs/ptore2e/example-example79/jquery_test.js new file mode 100644 index 0000000000..a154a59c84 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example79/jquery_test.js @@ -0,0 +1,28 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example79/index-jquery.html"); + }); + +var friends = element.all(by.repeater('friend in friends')); + +it('should render initial data set', function() { + expect(friends.count()).toBe(10); + expect(friends.get(0).getText()).toEqual('[1] John who is 25 years old.'); + expect(friends.get(1).getText()).toEqual('[2] Jessie who is 30 years old.'); + expect(friends.last().getText()).toEqual('[10] Samantha who is 60 years old.'); + expect(element(by.binding('friends.length')).getText()) + .toMatch("I have 10 friends. They are:"); +}); + + it('should update repeater when filter predicate changes', function() { + expect(friends.count()).toBe(10); + + element(by.model('q')).sendKeys('ma'); + + expect(friends.count()).toBe(2); + expect(friends.get(0).getText()).toEqual('[1] Mary who is 28 years old.'); + expect(friends.last().getText()).toEqual('[2] Samantha who is 60 years old.'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example80/default_test.js b/1.2.30/docs/ptore2e/example-example80/default_test.js new file mode 100644 index 0000000000..674dc867aa --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example80/default_test.js @@ -0,0 +1,20 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example80/index.html"); + }); + + var thumbsUp = element(by.css('span.glyphicon-thumbs-up')); + var thumbsDown = element(by.css('span.glyphicon-thumbs-down')); + + it('should check ng-show / ng-hide', function() { + expect(thumbsUp.isDisplayed()).toBeFalsy(); + expect(thumbsDown.isDisplayed()).toBeTruthy(); + + element(by.model('checked')).click(); + + expect(thumbsUp.isDisplayed()).toBeTruthy(); + expect(thumbsDown.isDisplayed()).toBeFalsy(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example80/jquery_test.js b/1.2.30/docs/ptore2e/example-example80/jquery_test.js new file mode 100644 index 0000000000..32a137a3cc --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example80/jquery_test.js @@ -0,0 +1,20 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example80/index-jquery.html"); + }); + + var thumbsUp = element(by.css('span.glyphicon-thumbs-up')); + var thumbsDown = element(by.css('span.glyphicon-thumbs-down')); + + it('should check ng-show / ng-hide', function() { + expect(thumbsUp.isDisplayed()).toBeFalsy(); + expect(thumbsDown.isDisplayed()).toBeTruthy(); + + element(by.model('checked')).click(); + + expect(thumbsUp.isDisplayed()).toBeTruthy(); + expect(thumbsDown.isDisplayed()).toBeFalsy(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example81/default_test.js b/1.2.30/docs/ptore2e/example-example81/default_test.js new file mode 100644 index 0000000000..93af138fb1 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example81/default_test.js @@ -0,0 +1,20 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example81/index.html"); + }); + + var thumbsUp = element(by.css('span.glyphicon-thumbs-up')); + var thumbsDown = element(by.css('span.glyphicon-thumbs-down')); + + it('should check ng-show / ng-hide', function() { + expect(thumbsUp.isDisplayed()).toBeFalsy(); + expect(thumbsDown.isDisplayed()).toBeTruthy(); + + element(by.model('checked')).click(); + + expect(thumbsUp.isDisplayed()).toBeTruthy(); + expect(thumbsDown.isDisplayed()).toBeFalsy(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example81/jquery_test.js b/1.2.30/docs/ptore2e/example-example81/jquery_test.js new file mode 100644 index 0000000000..55765e76f8 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example81/jquery_test.js @@ -0,0 +1,20 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example81/index-jquery.html"); + }); + + var thumbsUp = element(by.css('span.glyphicon-thumbs-up')); + var thumbsDown = element(by.css('span.glyphicon-thumbs-down')); + + it('should check ng-show / ng-hide', function() { + expect(thumbsUp.isDisplayed()).toBeFalsy(); + expect(thumbsDown.isDisplayed()).toBeTruthy(); + + element(by.model('checked')).click(); + + expect(thumbsUp.isDisplayed()).toBeTruthy(); + expect(thumbsDown.isDisplayed()).toBeFalsy(); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example82/default_test.js b/1.2.30/docs/ptore2e/example-example82/default_test.js new file mode 100644 index 0000000000..0a10500183 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example82/default_test.js @@ -0,0 +1,17 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example82/index.html"); + }); + + var colorSpan = element(by.css('span')); + + it('should check ng-style', function() { + expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)'); + element(by.css('input[value=\'set color\']')).click(); + expect(colorSpan.getCssValue('color')).toBe('rgba(255, 0, 0, 1)'); + element(by.css('input[value=clear]')).click(); + expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example82/jquery_test.js b/1.2.30/docs/ptore2e/example-example82/jquery_test.js new file mode 100644 index 0000000000..eb5dcb6b04 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example82/jquery_test.js @@ -0,0 +1,17 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example82/index-jquery.html"); + }); + + var colorSpan = element(by.css('span')); + + it('should check ng-style', function() { + expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)'); + element(by.css('input[value=\'set color\']')).click(); + expect(colorSpan.getCssValue('color')).toBe('rgba(255, 0, 0, 1)'); + element(by.css('input[value=clear]')).click(); + expect(colorSpan.getCssValue('color')).toBe('rgba(0, 0, 0, 1)'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example83/default_test.js b/1.2.30/docs/ptore2e/example-example83/default_test.js new file mode 100644 index 0000000000..ea7bf1a060 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example83/default_test.js @@ -0,0 +1,22 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example83/index.html"); + }); + + var switchElem = element(by.css('[ng-switch]')); + var select = element(by.model('selection')); + + it('should start in settings', function() { + expect(switchElem.getText()).toMatch(/Settings Div/); + }); + it('should change to home', function() { + select.all(by.css('option')).get(1).click(); + expect(switchElem.getText()).toMatch(/Home Span/); + }); + it('should select default', function() { + select.all(by.css('option')).get(2).click(); + expect(switchElem.getText()).toMatch(/default/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example83/jquery_test.js b/1.2.30/docs/ptore2e/example-example83/jquery_test.js new file mode 100644 index 0000000000..bd1aa08a85 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example83/jquery_test.js @@ -0,0 +1,22 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example83/index-jquery.html"); + }); + + var switchElem = element(by.css('[ng-switch]')); + var select = element(by.model('selection')); + + it('should start in settings', function() { + expect(switchElem.getText()).toMatch(/Settings Div/); + }); + it('should change to home', function() { + select.all(by.css('option')).get(1).click(); + expect(switchElem.getText()).toMatch(/Home Span/); + }); + it('should select default', function() { + select.all(by.css('option')).get(2).click(); + expect(switchElem.getText()).toMatch(/default/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example84/default_test.js b/1.2.30/docs/ptore2e/example-example84/default_test.js new file mode 100644 index 0000000000..7f3081beda --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example84/default_test.js @@ -0,0 +1,18 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example84/index.html"); + }); + + it('should have transcluded', function() { + var titleElement = element(by.model('title')); + titleElement.clear(); + titleElement.sendKeys('TITLE'); + var textElement = element(by.model('text')); + textElement.clear(); + textElement.sendKeys('TEXT'); + expect(element(by.binding('title')).getText()).toEqual('TITLE'); + expect(element(by.binding('text')).getText()).toEqual('TEXT'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example84/jquery_test.js b/1.2.30/docs/ptore2e/example-example84/jquery_test.js new file mode 100644 index 0000000000..e5e50eca22 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example84/jquery_test.js @@ -0,0 +1,18 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example84/index-jquery.html"); + }); + + it('should have transcluded', function() { + var titleElement = element(by.model('title')); + titleElement.clear(); + titleElement.sendKeys('TITLE'); + var textElement = element(by.model('text')); + textElement.clear(); + textElement.sendKeys('TEXT'); + expect(element(by.binding('title')).getText()).toEqual('TITLE'); + expect(element(by.binding('text')).getText()).toEqual('TEXT'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example85/default_test.js b/1.2.30/docs/ptore2e/example-example85/default_test.js new file mode 100644 index 0000000000..f98b3f4c73 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example85/default_test.js @@ -0,0 +1,12 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example85/index.html"); + }); + + it('should load template defined inside script tag', function() { + element(by.css('#tpl-link')).click(); + expect(element(by.css('#tpl-content')).getText()).toMatch(/Content of the template/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example85/jquery_test.js b/1.2.30/docs/ptore2e/example-example85/jquery_test.js new file mode 100644 index 0000000000..7810e26e06 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example85/jquery_test.js @@ -0,0 +1,12 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example85/index-jquery.html"); + }); + + it('should load template defined inside script tag', function() { + element(by.css('#tpl-link')).click(); + expect(element(by.css('#tpl-content')).getText()).toMatch(/Content of the template/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example86/default_test.js b/1.2.30/docs/ptore2e/example-example86/default_test.js new file mode 100644 index 0000000000..8dfcf6cfff --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example86/default_test.js @@ -0,0 +1,17 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example86/index.html"); + }); + + it('should check ng-options', function() { + expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red'); + element.all(by.model('myColor')).first().click(); + element.all(by.css('select[ng-model="myColor"] option')).first().click(); + expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black'); + element(by.css('.nullable select[ng-model="myColor"]')).click(); + element.all(by.css('.nullable select[ng-model="myColor"] option')).first().click(); + expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example86/jquery_test.js b/1.2.30/docs/ptore2e/example-example86/jquery_test.js new file mode 100644 index 0000000000..bdb98742ff --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example86/jquery_test.js @@ -0,0 +1,17 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example86/index-jquery.html"); + }); + + it('should check ng-options', function() { + expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('red'); + element.all(by.model('myColor')).first().click(); + element.all(by.css('select[ng-model="myColor"] option')).first().click(); + expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('black'); + element(by.css('.nullable select[ng-model="myColor"]')).click(); + element.all(by.css('.nullable select[ng-model="myColor"] option')).first().click(); + expect(element(by.binding('{selected_color:myColor}')).getText()).toMatch('null'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example88/default_test.js b/1.2.30/docs/ptore2e/example-example88/default_test.js new file mode 100644 index 0000000000..e8edd00947 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example88/default_test.js @@ -0,0 +1,41 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example88/index.html"); + }); + + var expectFriendNames = function(expectedNames, key) { + element.all(by.repeater(key + ' in friends').column(key + '.name')).then(function(arr) { + arr.forEach(function(wd, i) { + expect(wd.getText()).toMatch(expectedNames[i]); + }); + }); + }; + + it('should search across all fields when filtering with a string', function() { + var searchText = element(by.model('searchText')); + searchText.clear(); + searchText.sendKeys('m'); + expectFriendNames(['Mary', 'Mike', 'Adam'], 'friend'); + + searchText.clear(); + searchText.sendKeys('76'); + expectFriendNames(['John', 'Julie'], 'friend'); + }); + + it('should search in specific fields when filtering with a predicate object', function() { + var searchAny = element(by.model('search.$')); + searchAny.clear(); + searchAny.sendKeys('i'); + expectFriendNames(['Mary', 'Mike', 'Julie', 'Juliette'], 'friendObj'); + }); + it('should use a equal comparison when comparator is true', function() { + var searchName = element(by.model('search.name')); + var strict = element(by.model('strict')); + searchName.clear(); + searchName.sendKeys('Julie'); + strict.click(); + expectFriendNames(['Julie'], 'friendObj'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example88/jquery_test.js b/1.2.30/docs/ptore2e/example-example88/jquery_test.js new file mode 100644 index 0000000000..a6eab258cc --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example88/jquery_test.js @@ -0,0 +1,41 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example88/index-jquery.html"); + }); + + var expectFriendNames = function(expectedNames, key) { + element.all(by.repeater(key + ' in friends').column(key + '.name')).then(function(arr) { + arr.forEach(function(wd, i) { + expect(wd.getText()).toMatch(expectedNames[i]); + }); + }); + }; + + it('should search across all fields when filtering with a string', function() { + var searchText = element(by.model('searchText')); + searchText.clear(); + searchText.sendKeys('m'); + expectFriendNames(['Mary', 'Mike', 'Adam'], 'friend'); + + searchText.clear(); + searchText.sendKeys('76'); + expectFriendNames(['John', 'Julie'], 'friend'); + }); + + it('should search in specific fields when filtering with a predicate object', function() { + var searchAny = element(by.model('search.$')); + searchAny.clear(); + searchAny.sendKeys('i'); + expectFriendNames(['Mary', 'Mike', 'Julie', 'Juliette'], 'friendObj'); + }); + it('should use a equal comparison when comparator is true', function() { + var searchName = element(by.model('search.name')); + var strict = element(by.model('strict')); + searchName.clear(); + searchName.sendKeys('Julie'); + strict.click(); + expectFriendNames(['Julie'], 'friendObj'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example89/default_test.js b/1.2.30/docs/ptore2e/example-example89/default_test.js new file mode 100644 index 0000000000..963defa4b1 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example89/default_test.js @@ -0,0 +1,23 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example89/index.html"); + }); + + it('should init with 1234.56', function() { + expect(element(by.id('currency-default')).getText()).toBe('$1,234.56'); + expect(element(by.binding('amount | currency:"USD$"')).getText()).toBe('USD$1,234.56'); + }); + it('should update', function() { + if (browser.params.browser == 'safari') { + // Safari does not understand the minus key. See + // https://github.com/angular/protractor/issues/481 + return; + } + element(by.model('amount')).clear(); + element(by.model('amount')).sendKeys('-1234'); + expect(element(by.id('currency-default')).getText()).toBe('($1,234.00)'); + expect(element(by.binding('amount | currency:"USD$"')).getText()).toBe('(USD$1,234.00)'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example89/jquery_test.js b/1.2.30/docs/ptore2e/example-example89/jquery_test.js new file mode 100644 index 0000000000..f0f1a1626d --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example89/jquery_test.js @@ -0,0 +1,23 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example89/index-jquery.html"); + }); + + it('should init with 1234.56', function() { + expect(element(by.id('currency-default')).getText()).toBe('$1,234.56'); + expect(element(by.binding('amount | currency:"USD$"')).getText()).toBe('USD$1,234.56'); + }); + it('should update', function() { + if (browser.params.browser == 'safari') { + // Safari does not understand the minus key. See + // https://github.com/angular/protractor/issues/481 + return; + } + element(by.model('amount')).clear(); + element(by.model('amount')).sendKeys('-1234'); + expect(element(by.id('currency-default')).getText()).toBe('($1,234.00)'); + expect(element(by.binding('amount | currency:"USD$"')).getText()).toBe('(USD$1,234.00)'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example90/default_test.js b/1.2.30/docs/ptore2e/example-example90/default_test.js new file mode 100644 index 0000000000..64a9f79039 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example90/default_test.js @@ -0,0 +1,21 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example90/index.html"); + }); + + it('should format numbers', function() { + expect(element(by.id('number-default')).getText()).toBe('1,234.568'); + expect(element(by.binding('val | number:0')).getText()).toBe('1,235'); + expect(element(by.binding('-val | number:4')).getText()).toBe('-1,234.5679'); + }); + + it('should update', function() { + element(by.model('val')).clear(); + element(by.model('val')).sendKeys('3374.333'); + expect(element(by.id('number-default')).getText()).toBe('3,374.333'); + expect(element(by.binding('val | number:0')).getText()).toBe('3,374'); + expect(element(by.binding('-val | number:4')).getText()).toBe('-3,374.3330'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example90/jquery_test.js b/1.2.30/docs/ptore2e/example-example90/jquery_test.js new file mode 100644 index 0000000000..d457aea131 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example90/jquery_test.js @@ -0,0 +1,21 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example90/index-jquery.html"); + }); + + it('should format numbers', function() { + expect(element(by.id('number-default')).getText()).toBe('1,234.568'); + expect(element(by.binding('val | number:0')).getText()).toBe('1,235'); + expect(element(by.binding('-val | number:4')).getText()).toBe('-1,234.5679'); + }); + + it('should update', function() { + element(by.model('val')).clear(); + element(by.model('val')).sendKeys('3374.333'); + expect(element(by.id('number-default')).getText()).toBe('3,374.333'); + expect(element(by.binding('val | number:0')).getText()).toBe('3,374'); + expect(element(by.binding('-val | number:4')).getText()).toBe('-3,374.3330'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example91/default_test.js b/1.2.30/docs/ptore2e/example-example91/default_test.js new file mode 100644 index 0000000000..b8214c9155 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example91/default_test.js @@ -0,0 +1,18 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example91/index.html"); + }); + + it('should format date', function() { + expect(element(by.binding("1288323623006 | date:'medium'")).getText()). + toMatch(/Oct 2\d, 2010 \d{1,2}:\d{2}:\d{2} (AM|PM)/); + expect(element(by.binding("1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'")).getText()). + toMatch(/2010\-10\-2\d \d{2}:\d{2}:\d{2} (\-|\+)?\d{4}/); + expect(element(by.binding("'1288323623006' | date:'MM/dd/yyyy @ h:mma'")).getText()). + toMatch(/10\/2\d\/2010 @ \d{1,2}:\d{2}(AM|PM)/); + expect(element(by.binding("'1288323623006' | date:\"MM/dd/yyyy 'at' h:mma\"")).getText()). + toMatch(/10\/2\d\/2010 at \d{1,2}:\d{2}(AM|PM)/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example91/jquery_test.js b/1.2.30/docs/ptore2e/example-example91/jquery_test.js new file mode 100644 index 0000000000..c91355a615 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example91/jquery_test.js @@ -0,0 +1,18 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example91/index-jquery.html"); + }); + + it('should format date', function() { + expect(element(by.binding("1288323623006 | date:'medium'")).getText()). + toMatch(/Oct 2\d, 2010 \d{1,2}:\d{2}:\d{2} (AM|PM)/); + expect(element(by.binding("1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'")).getText()). + toMatch(/2010\-10\-2\d \d{2}:\d{2}:\d{2} (\-|\+)?\d{4}/); + expect(element(by.binding("'1288323623006' | date:'MM/dd/yyyy @ h:mma'")).getText()). + toMatch(/10\/2\d\/2010 @ \d{1,2}:\d{2}(AM|PM)/); + expect(element(by.binding("'1288323623006' | date:\"MM/dd/yyyy 'at' h:mma\"")).getText()). + toMatch(/10\/2\d\/2010 at \d{1,2}:\d{2}(AM|PM)/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example92/default_test.js b/1.2.30/docs/ptore2e/example-example92/default_test.js new file mode 100644 index 0000000000..01168925bc --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example92/default_test.js @@ -0,0 +1,11 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example92/index.html"); + }); + + it('should jsonify filtered objects', function() { + expect(element(by.binding("{'name':'value'}")).getText()).toMatch(/\{\n "name": ?"value"\n}/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example92/jquery_test.js b/1.2.30/docs/ptore2e/example-example92/jquery_test.js new file mode 100644 index 0000000000..12e8775cee --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example92/jquery_test.js @@ -0,0 +1,11 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example92/index-jquery.html"); + }); + + it('should jsonify filtered objects', function() { + expect(element(by.binding("{'name':'value'}")).getText()).toMatch(/\{\n "name": ?"value"\n}/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example93/default_test.js b/1.2.30/docs/ptore2e/example-example93/default_test.js new file mode 100644 index 0000000000..fcc1d3bfcc --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example93/default_test.js @@ -0,0 +1,38 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example93/index.html"); + }); + + var numLimitInput = element(by.model('numLimit')); + var letterLimitInput = element(by.model('letterLimit')); + var limitedNumbers = element(by.binding('numbers | limitTo:numLimit')); + var limitedLetters = element(by.binding('letters | limitTo:letterLimit')); + + it('should limit the number array to first three items', function() { + expect(numLimitInput.getAttribute('value')).toBe('3'); + expect(letterLimitInput.getAttribute('value')).toBe('3'); + expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3]'); + expect(limitedLetters.getText()).toEqual('Output letters: abc'); + }); + + // There is a bug in safari and protractor that doesn't like the minus key + // it('should update the output when -3 is entered', function() { + // numLimitInput.clear(); + // numLimitInput.sendKeys('-3'); + // letterLimitInput.clear(); + // letterLimitInput.sendKeys('-3'); + // expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]'); + // expect(limitedLetters.getText()).toEqual('Output letters: ghi'); + // }); + + it('should not exceed the maximum size of input array', function() { + numLimitInput.clear(); + numLimitInput.sendKeys('100'); + letterLimitInput.clear(); + letterLimitInput.sendKeys('100'); + expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3,4,5,6,7,8,9]'); + expect(limitedLetters.getText()).toEqual('Output letters: abcdefghi'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example93/jquery_test.js b/1.2.30/docs/ptore2e/example-example93/jquery_test.js new file mode 100644 index 0000000000..be8d991935 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example93/jquery_test.js @@ -0,0 +1,38 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example93/index-jquery.html"); + }); + + var numLimitInput = element(by.model('numLimit')); + var letterLimitInput = element(by.model('letterLimit')); + var limitedNumbers = element(by.binding('numbers | limitTo:numLimit')); + var limitedLetters = element(by.binding('letters | limitTo:letterLimit')); + + it('should limit the number array to first three items', function() { + expect(numLimitInput.getAttribute('value')).toBe('3'); + expect(letterLimitInput.getAttribute('value')).toBe('3'); + expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3]'); + expect(limitedLetters.getText()).toEqual('Output letters: abc'); + }); + + // There is a bug in safari and protractor that doesn't like the minus key + // it('should update the output when -3 is entered', function() { + // numLimitInput.clear(); + // numLimitInput.sendKeys('-3'); + // letterLimitInput.clear(); + // letterLimitInput.sendKeys('-3'); + // expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]'); + // expect(limitedLetters.getText()).toEqual('Output letters: ghi'); + // }); + + it('should not exceed the maximum size of input array', function() { + numLimitInput.clear(); + numLimitInput.sendKeys('100'); + letterLimitInput.clear(); + letterLimitInput.sendKeys('100'); + expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3,4,5,6,7,8,9]'); + expect(limitedLetters.getText()).toEqual('Output letters: abcdefghi'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example96/default_test.js b/1.2.30/docs/ptore2e/example-example96/default_test.js new file mode 100644 index 0000000000..3718b6bbc5 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example96/default_test.js @@ -0,0 +1,37 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example96/index.html"); + }); + +var status = element(by.binding('status')); +var data = element(by.binding('data')); +var fetchBtn = element(by.id('fetchbtn')); +var sampleGetBtn = element(by.id('samplegetbtn')); +var sampleJsonpBtn = element(by.id('samplejsonpbtn')); +var invalidJsonpBtn = element(by.id('invalidjsonpbtn')); + +it('should make an xhr GET request', function() { + sampleGetBtn.click(); + fetchBtn.click(); + expect(status.getText()).toMatch('200'); + expect(data.getText()).toMatch(/Hello, \$http!/); +}); + +// Commented out due to flakes. See https://github.com/angular/angular.js/issues/9185 +// it('should make a JSONP request to angularjs.org', function() { +// sampleJsonpBtn.click(); +// fetchBtn.click(); +// expect(status.getText()).toMatch('200'); +// expect(data.getText()).toMatch(/Super Hero!/); +// }); + +it('should make JSONP request to invalid URL and invoke the error handler', + function() { + invalidJsonpBtn.click(); + fetchBtn.click(); + expect(status.getText()).toMatch('0'); + expect(data.getText()).toMatch('Request failed'); +}); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example96/jquery_test.js b/1.2.30/docs/ptore2e/example-example96/jquery_test.js new file mode 100644 index 0000000000..c06e46383a --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example96/jquery_test.js @@ -0,0 +1,37 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example96/index-jquery.html"); + }); + +var status = element(by.binding('status')); +var data = element(by.binding('data')); +var fetchBtn = element(by.id('fetchbtn')); +var sampleGetBtn = element(by.id('samplegetbtn')); +var sampleJsonpBtn = element(by.id('samplejsonpbtn')); +var invalidJsonpBtn = element(by.id('invalidjsonpbtn')); + +it('should make an xhr GET request', function() { + sampleGetBtn.click(); + fetchBtn.click(); + expect(status.getText()).toMatch('200'); + expect(data.getText()).toMatch(/Hello, \$http!/); +}); + +// Commented out due to flakes. See https://github.com/angular/angular.js/issues/9185 +// it('should make a JSONP request to angularjs.org', function() { +// sampleJsonpBtn.click(); +// fetchBtn.click(); +// expect(status.getText()).toMatch('200'); +// expect(data.getText()).toMatch(/Super Hero!/); +// }); + +it('should make JSONP request to invalid URL and invoke the error handler', + function() { + invalidJsonpBtn.click(); + fetchBtn.click(); + expect(status.getText()).toMatch('0'); + expect(data.getText()).toMatch('Request failed'); +}); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example97/default_test.js b/1.2.30/docs/ptore2e/example-example97/default_test.js new file mode 100644 index 0000000000..5553e21688 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example97/default_test.js @@ -0,0 +1,11 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example97/index.html"); + }); + +it('should interpolate binding with custom symbols', function() { + expect(element(by.binding('demo.label')).getText()).toBe('This binding is brought you by // interpolation symbols.'); +}); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-example97/jquery_test.js b/1.2.30/docs/ptore2e/example-example97/jquery_test.js new file mode 100644 index 0000000000..ddc0516d6b --- /dev/null +++ b/1.2.30/docs/ptore2e/example-example97/jquery_test.js @@ -0,0 +1,11 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-example97/index-jquery.html"); + }); + +it('should interpolate binding with custom symbols', function() { + expect(element(by.binding('demo.label')).getText()).toBe('This binding is brought you by // interpolation symbols.'); +}); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-input-directive/default_test.js b/1.2.30/docs/ptore2e/example-input-directive/default_test.js new file mode 100644 index 0000000000..be6615b02a --- /dev/null +++ b/1.2.30/docs/ptore2e/example-input-directive/default_test.js @@ -0,0 +1,59 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-input-directive/index.html"); + }); + + var user = element(by.binding('{{user}}')); + var userNameValid = element(by.binding('myForm.userName.$valid')); + var lastNameValid = element(by.binding('myForm.lastName.$valid')); + var lastNameError = element(by.binding('myForm.lastName.$error')); + var formValid = element(by.binding('myForm.$valid')); + var userNameInput = element(by.model('user.name')); + var userLastInput = element(by.model('user.last')); + + it('should initialize to model', function() { + expect(user.getText()).toContain('{"name":"guest","last":"visitor"}'); + expect(userNameValid.getText()).toContain('true'); + expect(formValid.getText()).toContain('true'); + }); + + it('should be invalid if empty when required', function() { + userNameInput.clear(); + userNameInput.sendKeys(''); + + expect(user.getText()).toContain('{"last":"visitor"}'); + expect(userNameValid.getText()).toContain('false'); + expect(formValid.getText()).toContain('false'); + }); + + it('should be valid if empty when min length is set', function() { + userLastInput.clear(); + userLastInput.sendKeys(''); + + expect(user.getText()).toContain('{"name":"guest","last":""}'); + expect(lastNameValid.getText()).toContain('true'); + expect(formValid.getText()).toContain('true'); + }); + + it('should be invalid if less than required min length', function() { + userLastInput.clear(); + userLastInput.sendKeys('xx'); + + expect(user.getText()).toContain('{"name":"guest"}'); + expect(lastNameValid.getText()).toContain('false'); + expect(lastNameError.getText()).toContain('minlength'); + expect(formValid.getText()).toContain('false'); + }); + + it('should be invalid if longer than max length', function() { + userLastInput.clear(); + userLastInput.sendKeys('some ridiculously long name'); + + expect(user.getText()).toContain('{"name":"guest"}'); + expect(lastNameValid.getText()).toContain('false'); + expect(lastNameError.getText()).toContain('maxlength'); + expect(formValid.getText()).toContain('false'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-input-directive/jquery_test.js b/1.2.30/docs/ptore2e/example-input-directive/jquery_test.js new file mode 100644 index 0000000000..ffc66ade81 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-input-directive/jquery_test.js @@ -0,0 +1,59 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-input-directive/index-jquery.html"); + }); + + var user = element(by.binding('{{user}}')); + var userNameValid = element(by.binding('myForm.userName.$valid')); + var lastNameValid = element(by.binding('myForm.lastName.$valid')); + var lastNameError = element(by.binding('myForm.lastName.$error')); + var formValid = element(by.binding('myForm.$valid')); + var userNameInput = element(by.model('user.name')); + var userLastInput = element(by.model('user.last')); + + it('should initialize to model', function() { + expect(user.getText()).toContain('{"name":"guest","last":"visitor"}'); + expect(userNameValid.getText()).toContain('true'); + expect(formValid.getText()).toContain('true'); + }); + + it('should be invalid if empty when required', function() { + userNameInput.clear(); + userNameInput.sendKeys(''); + + expect(user.getText()).toContain('{"last":"visitor"}'); + expect(userNameValid.getText()).toContain('false'); + expect(formValid.getText()).toContain('false'); + }); + + it('should be valid if empty when min length is set', function() { + userLastInput.clear(); + userLastInput.sendKeys(''); + + expect(user.getText()).toContain('{"name":"guest","last":""}'); + expect(lastNameValid.getText()).toContain('true'); + expect(formValid.getText()).toContain('true'); + }); + + it('should be invalid if less than required min length', function() { + userLastInput.clear(); + userLastInput.sendKeys('xx'); + + expect(user.getText()).toContain('{"name":"guest"}'); + expect(lastNameValid.getText()).toContain('false'); + expect(lastNameError.getText()).toContain('minlength'); + expect(formValid.getText()).toContain('false'); + }); + + it('should be invalid if longer than max length', function() { + userLastInput.clear(); + userLastInput.sendKeys('some ridiculously long name'); + + expect(user.getText()).toContain('{"name":"guest"}'); + expect(lastNameValid.getText()).toContain('false'); + expect(lastNameError.getText()).toContain('maxlength'); + expect(formValid.getText()).toContain('false'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-location-hashbang-mode/default_test.js b/1.2.30/docs/ptore2e/example-location-hashbang-mode/default_test.js new file mode 100644 index 0000000000..c202b0c562 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-location-hashbang-mode/default_test.js @@ -0,0 +1,50 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-location-hashbang-mode/index.html"); + }); + + var addressBar = element(by.css("#addressBar")), + url = 'http://www.example.com/base/index.html#!/path?a=b#h'; + + it("should show fake browser info on load", function(){ + expect(addressBar.getAttribute('value')).toBe(url); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/path'); + expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}'); + expect(element(by.binding('$location.hash')).getText()).toBe('h'); + + }); + + it("should change $location accordingly", function(){ + var navigation = element.all(by.css("#navigation a")); + + navigation.get(0).click(); + + expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/index.html#!/first?a=b"); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/first'); + expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}'); + expect(element(by.binding('$location.hash')).getText()).toBe(''); + + + navigation.get(1).click(); + + expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/index.html#!/sec/ond?flag#hash"); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/sec/ond'); + expect(element(by.binding('$location.search')).getText()).toBe('{"flag":true}'); + expect(element(by.binding('$location.hash')).getText()).toBe('hash'); + + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-location-hashbang-mode/jquery_test.js b/1.2.30/docs/ptore2e/example-location-hashbang-mode/jquery_test.js new file mode 100644 index 0000000000..e337b1f147 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-location-hashbang-mode/jquery_test.js @@ -0,0 +1,50 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-location-hashbang-mode/index-jquery.html"); + }); + + var addressBar = element(by.css("#addressBar")), + url = 'http://www.example.com/base/index.html#!/path?a=b#h'; + + it("should show fake browser info on load", function(){ + expect(addressBar.getAttribute('value')).toBe(url); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/path'); + expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}'); + expect(element(by.binding('$location.hash')).getText()).toBe('h'); + + }); + + it("should change $location accordingly", function(){ + var navigation = element.all(by.css("#navigation a")); + + navigation.get(0).click(); + + expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/index.html#!/first?a=b"); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/first'); + expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}'); + expect(element(by.binding('$location.hash')).getText()).toBe(''); + + + navigation.get(1).click(); + + expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/index.html#!/sec/ond?flag#hash"); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/sec/ond'); + expect(element(by.binding('$location.search')).getText()).toBe('{"flag":true}'); + expect(element(by.binding('$location.hash')).getText()).toBe('hash'); + + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-location-html5-mode/default_test.js b/1.2.30/docs/ptore2e/example-location-html5-mode/default_test.js new file mode 100644 index 0000000000..1f855697f3 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-location-html5-mode/default_test.js @@ -0,0 +1,50 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-location-html5-mode/index.html"); + }); + + var addressBar = element(by.css("#addressBar")), + url = 'http://www.example.com/base/path?a=b#h'; + + + it("should show fake browser info on load", function(){ + expect(addressBar.getAttribute('value')).toBe(url); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/path'); + expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}'); + expect(element(by.binding('$location.hash')).getText()).toBe('h'); + + }); + + it("should change $location accordingly", function(){ + var navigation = element.all(by.css("#navigation a")); + + navigation.get(0).click(); + + expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/first?a=b"); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/first'); + expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}'); + expect(element(by.binding('$location.hash')).getText()).toBe(''); + + + navigation.get(1).click(); + + expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/sec/ond?flag#hash"); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/sec/ond'); + expect(element(by.binding('$location.search')).getText()).toBe('{"flag":true}'); + expect(element(by.binding('$location.hash')).getText()).toBe('hash'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-location-html5-mode/jquery_test.js b/1.2.30/docs/ptore2e/example-location-html5-mode/jquery_test.js new file mode 100644 index 0000000000..b8b62e8a5f --- /dev/null +++ b/1.2.30/docs/ptore2e/example-location-html5-mode/jquery_test.js @@ -0,0 +1,50 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-location-html5-mode/index-jquery.html"); + }); + + var addressBar = element(by.css("#addressBar")), + url = 'http://www.example.com/base/path?a=b#h'; + + + it("should show fake browser info on load", function(){ + expect(addressBar.getAttribute('value')).toBe(url); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/path'); + expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}'); + expect(element(by.binding('$location.hash')).getText()).toBe('h'); + + }); + + it("should change $location accordingly", function(){ + var navigation = element.all(by.css("#navigation a")); + + navigation.get(0).click(); + + expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/first?a=b"); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/first'); + expect(element(by.binding('$location.search')).getText()).toBe('{"a":"b"}'); + expect(element(by.binding('$location.hash')).getText()).toBe(''); + + + navigation.get(1).click(); + + expect(addressBar.getAttribute('value')).toBe("http://www.example.com/base/sec/ond?flag#hash"); + + expect(element(by.binding('$location.protocol')).getText()).toBe('http'); + expect(element(by.binding('$location.host')).getText()).toBe('www.example.com'); + expect(element(by.binding('$location.port')).getText()).toBe('80'); + expect(element(by.binding('$location.path')).getText()).toBe('/sec/ond'); + expect(element(by.binding('$location.search')).getText()).toBe('{"flag":true}'); + expect(element(by.binding('$location.hash')).getText()).toBe('hash'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-multi-bootstrap/default_test.js b/1.2.30/docs/ptore2e/example-multi-bootstrap/default_test.js new file mode 100644 index 0000000000..7643c10c39 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-multi-bootstrap/default_test.js @@ -0,0 +1,12 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-multi-bootstrap/index.html"); + }); + +it('should only insert one table cell for each item in $scope.fillings', function() { + expect(element.all(by.css('td')).count()) + .toBe(9); +}); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-multi-bootstrap/jquery_test.js b/1.2.30/docs/ptore2e/example-multi-bootstrap/jquery_test.js new file mode 100644 index 0000000000..83c3ad2be3 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-multi-bootstrap/jquery_test.js @@ -0,0 +1,12 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-multi-bootstrap/index-jquery.html"); + }); + +it('should only insert one table cell for each item in $scope.fillings', function() { + expect(element.all(by.css('td')).count()) + .toBe(9); +}); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-ngChange-directive/default_test.js b/1.2.30/docs/ptore2e/example-ngChange-directive/default_test.js new file mode 100644 index 0000000000..8be55e1f18 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-ngChange-directive/default_test.js @@ -0,0 +1,26 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-ngChange-directive/index.html"); + }); + + var counter = element(by.binding('counter')); + var debug = element(by.binding('confirmed')); + + it('should evaluate the expression if changing from view', function() { + expect(counter.getText()).toContain('0'); + + element(by.id('ng-change-example1')).click(); + + expect(counter.getText()).toContain('1'); + expect(debug.getText()).toContain('true'); + }); + + it('should not evaluate the expression if changing from model', function() { + element(by.id('ng-change-example2')).click(); + + expect(counter.getText()).toContain('0'); + expect(debug.getText()).toContain('true'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-ngChange-directive/jquery_test.js b/1.2.30/docs/ptore2e/example-ngChange-directive/jquery_test.js new file mode 100644 index 0000000000..429c0f6f1d --- /dev/null +++ b/1.2.30/docs/ptore2e/example-ngChange-directive/jquery_test.js @@ -0,0 +1,26 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-ngChange-directive/index-jquery.html"); + }); + + var counter = element(by.binding('counter')); + var debug = element(by.binding('confirmed')); + + it('should evaluate the expression if changing from view', function() { + expect(counter.getText()).toContain('0'); + + element(by.id('ng-change-example1')).click(); + + expect(counter.getText()).toContain('1'); + expect(debug.getText()).toContain('true'); + }); + + it('should not evaluate the expression if changing from model', function() { + element(by.id('ng-change-example2')).click(); + + expect(counter.getText()).toContain('0'); + expect(debug.getText()).toContain('true'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-ngController/default_test.js b/1.2.30/docs/ptore2e/example-ngController/default_test.js new file mode 100644 index 0000000000..bc5c1a94cc --- /dev/null +++ b/1.2.30/docs/ptore2e/example-ngController/default_test.js @@ -0,0 +1,36 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-ngController/index.html"); + }); + + it('should check controller', function() { + var container = element(by.id('ctrl-exmpl')); + + expect(container.element(by.model('name')) + .getAttribute('value')).toBe('John Smith'); + + var firstRepeat = + container.element(by.repeater('contact in contacts').row(0)); + var secondRepeat = + container.element(by.repeater('contact in contacts').row(1)); + + expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe('408 555 1212'); + expect(secondRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe('john.smith@example.org'); + + firstRepeat.element(by.linkText('clear')).click(); + + expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe(''); + + container.element(by.linkText('add')).click(); + + expect(container.element(by.repeater('contact in contacts').row(2)) + .element(by.model('contact.value')) + .getAttribute('value')) + .toBe('yourname@example.org'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-ngController/jquery_test.js b/1.2.30/docs/ptore2e/example-ngController/jquery_test.js new file mode 100644 index 0000000000..b1f23a29d3 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-ngController/jquery_test.js @@ -0,0 +1,36 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-ngController/index-jquery.html"); + }); + + it('should check controller', function() { + var container = element(by.id('ctrl-exmpl')); + + expect(container.element(by.model('name')) + .getAttribute('value')).toBe('John Smith'); + + var firstRepeat = + container.element(by.repeater('contact in contacts').row(0)); + var secondRepeat = + container.element(by.repeater('contact in contacts').row(1)); + + expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe('408 555 1212'); + expect(secondRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe('john.smith@example.org'); + + firstRepeat.element(by.linkText('clear')).click(); + + expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe(''); + + container.element(by.linkText('add')).click(); + + expect(container.element(by.repeater('contact in contacts').row(2)) + .element(by.model('contact.value')) + .getAttribute('value')) + .toBe('yourname@example.org'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-ngControllerAs/default_test.js b/1.2.30/docs/ptore2e/example-ngControllerAs/default_test.js new file mode 100644 index 0000000000..a753be6167 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-ngControllerAs/default_test.js @@ -0,0 +1,36 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-ngControllerAs/index.html"); + }); + + it('should check controller as', function() { + var container = element(by.id('ctrl-as-exmpl')); + expect(container.element(by.model('settings.name')) + .getAttribute('value')).toBe('John Smith'); + + var firstRepeat = + container.element(by.repeater('contact in settings.contacts').row(0)); + var secondRepeat = + container.element(by.repeater('contact in settings.contacts').row(1)); + + expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe('408 555 1212'); + + expect(secondRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe('john.smith@example.org'); + + firstRepeat.element(by.linkText('clear')).click(); + + expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe(''); + + container.element(by.linkText('add')).click(); + + expect(container.element(by.repeater('contact in settings.contacts').row(2)) + .element(by.model('contact.value')) + .getAttribute('value')) + .toBe('yourname@example.org'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-ngControllerAs/jquery_test.js b/1.2.30/docs/ptore2e/example-ngControllerAs/jquery_test.js new file mode 100644 index 0000000000..9b97be8c89 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-ngControllerAs/jquery_test.js @@ -0,0 +1,36 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-ngControllerAs/index-jquery.html"); + }); + + it('should check controller as', function() { + var container = element(by.id('ctrl-as-exmpl')); + expect(container.element(by.model('settings.name')) + .getAttribute('value')).toBe('John Smith'); + + var firstRepeat = + container.element(by.repeater('contact in settings.contacts').row(0)); + var secondRepeat = + container.element(by.repeater('contact in settings.contacts').row(1)); + + expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe('408 555 1212'); + + expect(secondRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe('john.smith@example.org'); + + firstRepeat.element(by.linkText('clear')).click(); + + expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe(''); + + container.element(by.linkText('add')).click(); + + expect(container.element(by.repeater('contact in settings.contacts').row(2)) + .element(by.model('contact.value')) + .getAttribute('value')) + .toBe('yourname@example.org'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-ngList-directive/default_test.js b/1.2.30/docs/ptore2e/example-ngList-directive/default_test.js new file mode 100644 index 0000000000..4e8ace08f5 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-ngList-directive/default_test.js @@ -0,0 +1,26 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-ngList-directive/index.html"); + }); + + var listInput = element(by.model('names')); + var names = element(by.binding('{{names}}')); + var valid = element(by.binding('myForm.namesInput.$valid')); + var error = element(by.css('span.error')); + + it('should initialize to model', function() { + expect(names.getText()).toContain('["igor","misko","vojta"]'); + expect(valid.getText()).toContain('true'); + expect(error.getCssValue('display')).toBe('none'); + }); + + it('should be invalid if empty', function() { + listInput.clear(); + listInput.sendKeys(''); + + expect(names.getText()).toContain(''); + expect(valid.getText()).toContain('false'); + expect(error.getCssValue('display')).not.toBe('none'); }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-ngList-directive/jquery_test.js b/1.2.30/docs/ptore2e/example-ngList-directive/jquery_test.js new file mode 100644 index 0000000000..0b9bd050ff --- /dev/null +++ b/1.2.30/docs/ptore2e/example-ngList-directive/jquery_test.js @@ -0,0 +1,26 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-ngList-directive/index-jquery.html"); + }); + + var listInput = element(by.model('names')); + var names = element(by.binding('{{names}}')); + var valid = element(by.binding('myForm.namesInput.$valid')); + var error = element(by.css('span.error')); + + it('should initialize to model', function() { + expect(names.getText()).toContain('["igor","misko","vojta"]'); + expect(valid.getText()).toContain('true'); + expect(error.getCssValue('display')).toBe('none'); + }); + + it('should be invalid if empty', function() { + listInput.clear(); + listInput.sendKeys(''); + + expect(names.getText()).toContain(''); + expect(valid.getText()).toContain('false'); + expect(error.getCssValue('display')).not.toBe('none'); }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-ngValue-directive/default_test.js b/1.2.30/docs/ptore2e/example-ngValue-directive/default_test.js new file mode 100644 index 0000000000..282502af28 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-ngValue-directive/default_test.js @@ -0,0 +1,17 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-ngValue-directive/index.html"); + }); + + var favorite = element(by.binding('my.favorite')); + + it('should initialize to model', function() { + expect(favorite.getText()).toContain('unicorns'); + }); + it('should bind the values to the inputs', function() { + element.all(by.model('my.favorite')).get(0).click(); + expect(favorite.getText()).toContain('pizza'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-ngValue-directive/jquery_test.js b/1.2.30/docs/ptore2e/example-ngValue-directive/jquery_test.js new file mode 100644 index 0000000000..1521baf06c --- /dev/null +++ b/1.2.30/docs/ptore2e/example-ngValue-directive/jquery_test.js @@ -0,0 +1,17 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-ngValue-directive/index-jquery.html"); + }); + + var favorite = element(by.binding('my.favorite')); + + it('should initialize to model', function() { + expect(favorite.getText()).toContain('unicorns'); + }); + it('should bind the values to the inputs', function() { + element.all(by.model('my.favorite')).get(0).click(); + expect(favorite.getText()).toContain('pizza'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-ngView-directive/default_test.js b/1.2.30/docs/ptore2e/example-ngView-directive/default_test.js new file mode 100644 index 0000000000..580c1dcc73 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-ngView-directive/default_test.js @@ -0,0 +1,21 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-ngView-directive/index.html"); + }); + + it('should load and compile correct template', function() { + element(by.linkText('Moby: Ch1')).click(); + var content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: ChapterCtrl/); + expect(content).toMatch(/Book Id\: Moby/); + expect(content).toMatch(/Chapter Id\: 1/); + + element(by.partialLinkText('Scarlet')).click(); + + content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: BookCtrl/); + expect(content).toMatch(/Book Id\: Scarlet/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-ngView-directive/jquery_test.js b/1.2.30/docs/ptore2e/example-ngView-directive/jquery_test.js new file mode 100644 index 0000000000..3ba1cff15f --- /dev/null +++ b/1.2.30/docs/ptore2e/example-ngView-directive/jquery_test.js @@ -0,0 +1,21 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-ngView-directive/index-jquery.html"); + }); + + it('should load and compile correct template', function() { + element(by.linkText('Moby: Ch1')).click(); + var content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: ChapterCtrl/); + expect(content).toMatch(/Book Id\: Moby/); + expect(content).toMatch(/Chapter Id\: 1/); + + element(by.partialLinkText('Scarlet')).click(); + + content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: BookCtrl/); + expect(content).toMatch(/Book Id\: Scarlet/); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-number-input-directive/default_test.js b/1.2.30/docs/ptore2e/example-number-input-directive/default_test.js new file mode 100644 index 0000000000..3a327505a0 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-number-input-directive/default_test.js @@ -0,0 +1,30 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-number-input-directive/index.html"); + }); + + var value = element(by.binding('value')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('value')); + + it('should initialize to model', function() { + expect(value.getText()).toContain('12'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if over max', function() { + input.clear(); + input.sendKeys('123'); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('false'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-number-input-directive/jquery_test.js b/1.2.30/docs/ptore2e/example-number-input-directive/jquery_test.js new file mode 100644 index 0000000000..d3f5965fd8 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-number-input-directive/jquery_test.js @@ -0,0 +1,30 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-number-input-directive/index-jquery.html"); + }); + + var value = element(by.binding('value')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('value')); + + it('should initialize to model', function() { + expect(value.getText()).toContain('12'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if over max', function() { + input.clear(); + input.sendKeys('123'); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('false'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-radio-input-directive/default_test.js b/1.2.30/docs/ptore2e/example-radio-input-directive/default_test.js new file mode 100644 index 0000000000..98305baa8c --- /dev/null +++ b/1.2.30/docs/ptore2e/example-radio-input-directive/default_test.js @@ -0,0 +1,17 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-radio-input-directive/index.html"); + }); + + it('should change state', function() { + var color = element(by.binding('color')); + + expect(color.getText()).toContain('blue'); + + element.all(by.model('color')).get(0).click(); + + expect(color.getText()).toContain('red'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-radio-input-directive/jquery_test.js b/1.2.30/docs/ptore2e/example-radio-input-directive/jquery_test.js new file mode 100644 index 0000000000..427c6c02be --- /dev/null +++ b/1.2.30/docs/ptore2e/example-radio-input-directive/jquery_test.js @@ -0,0 +1,17 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-radio-input-directive/index-jquery.html"); + }); + + it('should change state', function() { + var color = element(by.binding('color')); + + expect(color.getText()).toContain('blue'); + + element.all(by.model('color')).get(0).click(); + + expect(color.getText()).toContain('red'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-text-input-directive/default_test.js b/1.2.30/docs/ptore2e/example-text-input-directive/default_test.js new file mode 100644 index 0000000000..d6109e06f5 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-text-input-directive/default_test.js @@ -0,0 +1,31 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-text-input-directive/index.html"); + }); + + var text = element(by.binding('text')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('text')); + + it('should initialize to model', function() { + expect(text.getText()).toContain('guest'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + + expect(text.getText()).toEqual('text ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if multi word', function() { + input.clear(); + input.sendKeys('hello world'); + + expect(valid.getText()).toContain('false'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-text-input-directive/jquery_test.js b/1.2.30/docs/ptore2e/example-text-input-directive/jquery_test.js new file mode 100644 index 0000000000..42d73adef7 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-text-input-directive/jquery_test.js @@ -0,0 +1,31 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-text-input-directive/index-jquery.html"); + }); + + var text = element(by.binding('text')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('text')); + + it('should initialize to model', function() { + expect(text.getText()).toContain('guest'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + + expect(text.getText()).toEqual('text ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if multi word', function() { + input.clear(); + input.sendKeys('hello world'); + + expect(valid.getText()).toContain('false'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-url-input-directive/default_test.js b/1.2.30/docs/ptore2e/example-url-input-directive/default_test.js new file mode 100644 index 0000000000..97db66f1f1 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-url-input-directive/default_test.js @@ -0,0 +1,31 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-url-input-directive/index.html"); + }); + + var text = element(by.binding('text')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('text')); + + it('should initialize to model', function() { + expect(text.getText()).toContain('http://google.com'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + + expect(text.getText()).toEqual('text ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if not url', function() { + input.clear(); + input.sendKeys('box'); + + expect(valid.getText()).toContain('false'); + }); +}); \ No newline at end of file diff --git a/1.2.30/docs/ptore2e/example-url-input-directive/jquery_test.js b/1.2.30/docs/ptore2e/example-url-input-directive/jquery_test.js new file mode 100644 index 0000000000..2cd5d86169 --- /dev/null +++ b/1.2.30/docs/ptore2e/example-url-input-directive/jquery_test.js @@ -0,0 +1,31 @@ +describe("", function() { + var rootEl; + beforeEach(function() { + rootEl = browser.rootEl; + browser.get("examples/example-url-input-directive/index-jquery.html"); + }); + + var text = element(by.binding('text')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('text')); + + it('should initialize to model', function() { + expect(text.getText()).toContain('http://google.com'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + + expect(text.getText()).toEqual('text ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if not url', function() { + input.clear(); + input.sendKeys('box'); + + expect(valid.getText()).toContain('false'); + }); +}); \ No newline at end of file diff --git a/1.2.30/errors.json b/1.2.30/errors.json new file mode 100644 index 0000000000..afcccf6235 --- /dev/null +++ b/1.2.30/errors.json @@ -0,0 +1 @@ +{"id":"ng","generated":"Thu Jul 21 2016 03:14:28 GMT-0700 (PDT)","errors":{"ngRepeat":{"iexp":"Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.","dupes":"Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}","iidexp":"'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'."},"$sce":{"imatcher":"Matchers may only be \"self\", string patterns or RegExp objects","icontext":"Attempted to trust a value in invalid context. Context: {0}; Value: {1}","iwcard":"Illegal sequence *** in string matcher. String: {0}","insecurl":"Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}","iequirks":"Strict Contextual Escaping does not support Internet Explorer version < 9 in quirks mode. You can fix this by adding the text to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.","unsafe":"Attempting to use an unsafe value in a safe context.","itype":"Attempted to trust a non-string value in a content requiring a string: Context: {0}"},"ngPattern":{"noregexp":"Expected {0} to be a RegExp but was {1}. Element: {2}"},"$controller":{"noscp":"Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`."},"$parse":{"isecfn":"Referencing Function in Angular expressions is disallowed! Expression: {0}","isecwindow":"Referencing the Window in Angular expressions is disallowed! Expression: {0}","ueoe":"Unexpected end of expression: {0}","isecdom":"Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}","lexerr":"Lexer Error: {0} at column{1} in expression [{2}].","iseccst":"Cannot convert object to primitive value! Expression: {0}","isecobj":"Referencing Object in Angular expressions is disallowed! Expression: {0}","isecff":"Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}","syntax":"Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].","isecfld":"Attempting to access a disallowed field in Angular expressions! Expression: {0}"},"jqLite":{"offargs":"jqLite#off() does not support the `selector` argument","onargs":"jqLite#on() does not support the `selector` or `eventData` parameters","nosel":"Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element"},"$animate":{"notcsel":"Expecting class selector starting with '.' got '{0}'."},"$injector":{"pget":"Provider '{0}' must define $get factory method.","cdep":"Circular dependency found: {0}","nomod":"Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.","modulerr":"Failed to instantiate module {0} due to:\n{1}","unpr":"Unknown provider: {0}","itkn":"Incorrect injection token! Expected service name as string, got {0}"},"ngTransclude":{"orphan":"Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}"},"ngModel":{"nonassign":"Expression '{0}' is non-assignable. Element: {1}"},"$location":{"ihshprfx":"Invalid url \"{0}\", missing hash prefix \"{1}\".","ipthprfx":"Invalid url \"{0}\", missing path prefix \"{1}\".","isrcharg":"The first argument of the `$location#search()` call must be a string or an object."},"ng":{"areq":"Argument '{0}' is {1}","cpws":"Can't copy! Making copies of Window or Scope instances is not supported.","btstrpd":"App Already Bootstrapped with this Element '{0}'","cpi":"Can't copy! Source and destination are identical.","badname":"hasOwnProperty is not a valid {0} name"},"$cacheFactory":{"iid":"CacheId '{0}' is already taken!"},"$interpolate":{"noconcat":"Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce","interr":"Can't interpolate: {0}\n{1}"},"ngOptions":{"iexp":"Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}"},"$rootScope":{"inprog":"{0} already in progress","infdig":"{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}"},"$compile":{"selmulti":"Binding to the 'multiple' attribute is not supported. Element: {0}","nodomevents":"Interpolations for HTML DOM event attributes are disallowed. Please use the ng- versions (such as ng-click instead of onclick) instead.","ctreq":"Controller '{0}', required by directive '{1}', can't be found!","nonassign":"Expression '{0}' used with directive '{1}' is non-assignable!","tplrt":"Template for directive '{0}' must have exactly one root element. {1}","iscp":"Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}","multidir":"Multiple directives [{0}, {1}] asking for {2} on: {3}","tpload":"Failed to load template: {0}","uterdir":"Unterminated attribute, found '{0}' but no matching '{1}' found."},"$httpBackend":{"noxhr":"This browser does not support XMLHttpRequest."},"$resource":{"badargs":"Expected up to 4 arguments [params, data, success, error], got {0} arguments","badmember":"Dotted member path \"@{0}\" is invalid.","badname":"hasOwnProperty is not a valid parameter name.","badcfg":"Error in resource configuration. Expected response to contain an {0} but got an {1}"},"$sanitize":{"badparse":"The sanitizer was unable to parse the following block of html: {0}"}}} \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_aa-dj.js b/1.2.30/i18n/angular-locale_aa-dj.js new file mode 100644 index 0000000000..8d047dea3b --- /dev/null +++ b/1.2.30/i18n/angular-locale_aa-dj.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "saaku", + "carra" + ], + "DAY": [ + "Acaada", + "Etleeni", + "Talaata", + "Arbaqa", + "Kamiisi", + "Gumqata", + "Sabti" + ], + "MONTH": [ + "Qunxa Garablu", + "Kudo", + "Ciggilta Kudo", + "Agda Baxis", + "Caxah Alsa", + "Qasa Dirri", + "Qado Dirri", + "Leqeeni", + "Waysu", + "Diteli", + "Ximoli", + "Kaxxa Garablu" + ], + "SHORTDAY": [ + "Aca", + "Etl", + "Tal", + "Arb", + "Kam", + "Gum", + "Sab" + ], + "SHORTMONTH": [ + "Qun", + "Nah", + "Cig", + "Agd", + "Cax", + "Qas", + "Qad", + "Leq", + "Way", + "Dit", + "Xim", + "Kax" + ], + "fullDate": "EEEE, MMMM dd, y", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Fdj", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "aa-dj", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_aa-er.js b/1.2.30/i18n/angular-locale_aa-er.js new file mode 100644 index 0000000000..aa2dac6d2f --- /dev/null +++ b/1.2.30/i18n/angular-locale_aa-er.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "saaku", + "carra" + ], + "DAY": [ + "Acaada", + "Etleeni", + "Talaata", + "Arbaqa", + "Kamiisi", + "Gumqata", + "Sabti" + ], + "MONTH": [ + "Qunxa Garablu", + "Kudo", + "Ciggilta Kudo", + "Agda Baxis", + "Caxah Alsa", + "Qasa Dirri", + "Qado Dirri", + "Liiqen", + "Waysu", + "Diteli", + "Ximoli", + "Kaxxa Garablu" + ], + "SHORTDAY": [ + "Aca", + "Etl", + "Tal", + "Arb", + "Kam", + "Gum", + "Sab" + ], + "SHORTMONTH": [ + "Qun", + "Nah", + "Cig", + "Agd", + "Cax", + "Qas", + "Qad", + "Leq", + "Way", + "Dit", + "Xim", + "Kax" + ], + "fullDate": "EEEE, MMMM dd, y", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Nfk", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "aa-er", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_aa-et.js b/1.2.30/i18n/angular-locale_aa-et.js new file mode 100644 index 0000000000..c117036e47 --- /dev/null +++ b/1.2.30/i18n/angular-locale_aa-et.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "saaku", + "carra" + ], + "DAY": [ + "Acaada", + "Etleeni", + "Talaata", + "Arbaqa", + "Kamiisi", + "Gumqata", + "Sabti" + ], + "MONTH": [ + "Qunxa Garablu", + "Kudo", + "Ciggilta Kudo", + "Agda Baxis", + "Caxah Alsa", + "Qasa Dirri", + "Qado Dirri", + "Liiqen", + "Waysu", + "Diteli", + "Ximoli", + "Kaxxa Garablu" + ], + "SHORTDAY": [ + "Aca", + "Etl", + "Tal", + "Arb", + "Kam", + "Gum", + "Sab" + ], + "SHORTMONTH": [ + "Qun", + "Nah", + "Cig", + "Agd", + "Cax", + "Qas", + "Qad", + "Leq", + "Way", + "Dit", + "Xim", + "Kax" + ], + "fullDate": "EEEE, MMMM dd, y", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Birr", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "aa-et", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_aa.js b/1.2.30/i18n/angular-locale_aa.js new file mode 100644 index 0000000000..52c9e2fd6f --- /dev/null +++ b/1.2.30/i18n/angular-locale_aa.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "saaku", + "carra" + ], + "DAY": [ + "Acaada", + "Etleeni", + "Talaata", + "Arbaqa", + "Kamiisi", + "Gumqata", + "Sabti" + ], + "MONTH": [ + "Qunxa Garablu", + "Kudo", + "Ciggilta Kudo", + "Agda Baxis", + "Caxah Alsa", + "Qasa Dirri", + "Qado Dirri", + "Liiqen", + "Waysu", + "Diteli", + "Ximoli", + "Kaxxa Garablu" + ], + "SHORTDAY": [ + "Aca", + "Etl", + "Tal", + "Arb", + "Kam", + "Gum", + "Sab" + ], + "SHORTMONTH": [ + "Qun", + "Nah", + "Cig", + "Agd", + "Cax", + "Qas", + "Qad", + "Leq", + "Way", + "Dit", + "Xim", + "Kax" + ], + "fullDate": "EEEE, MMMM dd, y", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Birr", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "aa", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_af-na.js b/1.2.30/i18n/angular-locale_af-na.js new file mode 100644 index 0000000000..bed3fffffd --- /dev/null +++ b/1.2.30/i18n/angular-locale_af-na.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "vm.", + "nm." + ], + "DAY": [ + "Sondag", + "Maandag", + "Dinsdag", + "Woensdag", + "Donderdag", + "Vrydag", + "Saterdag" + ], + "MONTH": [ + "Januarie", + "Februarie", + "Maart", + "April", + "Mei", + "Junie", + "Julie", + "Augustus", + "September", + "Oktober", + "November", + "Desember" + ], + "SHORTDAY": [ + "So", + "Ma", + "Di", + "Wo", + "Do", + "Vr", + "Sa" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Mei", + "Jun", + "Jul", + "Aug", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "af-na", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_af-za.js b/1.2.30/i18n/angular-locale_af-za.js new file mode 100644 index 0000000000..4a27321c76 --- /dev/null +++ b/1.2.30/i18n/angular-locale_af-za.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "vm.", + "nm." + ], + "DAY": [ + "Sondag", + "Maandag", + "Dinsdag", + "Woensdag", + "Donderdag", + "Vrydag", + "Saterdag" + ], + "MONTH": [ + "Januarie", + "Februarie", + "Maart", + "April", + "Mei", + "Junie", + "Julie", + "Augustus", + "September", + "Oktober", + "November", + "Desember" + ], + "SHORTDAY": [ + "So", + "Ma", + "Di", + "Wo", + "Do", + "Vr", + "Sa" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Mei", + "Jun", + "Jul", + "Aug", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "dd MMMM y", + "medium": "dd MMM y h:mm:ss a", + "mediumDate": "dd MMM y", + "mediumTime": "h:mm:ss a", + "short": "y-MM-dd h:mm a", + "shortDate": "y-MM-dd", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "af-za", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_af.js b/1.2.30/i18n/angular-locale_af.js new file mode 100644 index 0000000000..6261d50625 --- /dev/null +++ b/1.2.30/i18n/angular-locale_af.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "vm.", + "nm." + ], + "DAY": [ + "Sondag", + "Maandag", + "Dinsdag", + "Woensdag", + "Donderdag", + "Vrydag", + "Saterdag" + ], + "MONTH": [ + "Januarie", + "Februarie", + "Maart", + "April", + "Mei", + "Junie", + "Julie", + "Augustus", + "September", + "Oktober", + "November", + "Desember" + ], + "SHORTDAY": [ + "So", + "Ma", + "Di", + "Wo", + "Do", + "Vr", + "Sa" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Mei", + "Jun", + "Jul", + "Aug", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "dd MMMM y", + "medium": "dd MMM y h:mm:ss a", + "mediumDate": "dd MMM y", + "mediumTime": "h:mm:ss a", + "short": "y-MM-dd h:mm a", + "shortDate": "y-MM-dd", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "af", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_agq-cm.js b/1.2.30/i18n/angular-locale_agq-cm.js new file mode 100644 index 0000000000..cd073f20da --- /dev/null +++ b/1.2.30/i18n/angular-locale_agq-cm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.g", + "a.k" + ], + "DAY": [ + "tsu\u0294nts\u0268", + "tsu\u0294ukp\u00e0", + "tsu\u0294ugh\u0254e", + "tsu\u0294ut\u0254\u0300ml\u00f2", + "tsu\u0294um\u00e8", + "tsu\u0294ugh\u0268\u0302m", + "tsu\u0294ndz\u0268k\u0254\u0294\u0254" + ], + "MONTH": [ + "ndz\u0254\u0300\u014b\u0254\u0300n\u00f9m", + "ndz\u0254\u0300\u014b\u0254\u0300k\u0197\u0300z\u00f9\u0294", + "ndz\u0254\u0300\u014b\u0254\u0300t\u0197\u0300d\u0289\u0300gh\u00e0", + "ndz\u0254\u0300\u014b\u0254\u0300t\u01ceaf\u0289\u0304gh\u0101", + "ndz\u0254\u0300\u014b\u00e8s\u00e8e", + "ndz\u0254\u0300\u014b\u0254\u0300nz\u00f9gh\u00f2", + "ndz\u0254\u0300\u014b\u0254\u0300d\u00f9mlo", + "ndz\u0254\u0300\u014b\u0254\u0300kw\u00eef\u0254\u0300e", + "ndz\u0254\u0300\u014b\u0254\u0300t\u0197\u0300f\u0289\u0300gh\u00e0dzugh\u00f9", + "ndz\u0254\u0300\u014b\u0254\u0300gh\u01d4uwel\u0254\u0300m", + "ndz\u0254\u0300\u014b\u0254\u0300chwa\u0294\u00e0kaa wo", + "ndz\u0254\u0300\u014b\u00e8fw\u00f2o" + ], + "SHORTDAY": [ + "nts", + "kpa", + "gh\u0254", + "t\u0254m", + "ume", + "gh\u0268", + "dzk" + ], + "SHORTMONTH": [ + "n\u00f9m", + "k\u0268z", + "t\u0268d", + "taa", + "see", + "nzu", + "dum", + "f\u0254e", + "dzu", + "l\u0254m", + "kaa", + "fwo" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "agq-cm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_agq.js b/1.2.30/i18n/angular-locale_agq.js new file mode 100644 index 0000000000..1d04832fa2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_agq.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.g", + "a.k" + ], + "DAY": [ + "tsu\u0294nts\u0268", + "tsu\u0294ukp\u00e0", + "tsu\u0294ugh\u0254e", + "tsu\u0294ut\u0254\u0300ml\u00f2", + "tsu\u0294um\u00e8", + "tsu\u0294ugh\u0268\u0302m", + "tsu\u0294ndz\u0268k\u0254\u0294\u0254" + ], + "MONTH": [ + "ndz\u0254\u0300\u014b\u0254\u0300n\u00f9m", + "ndz\u0254\u0300\u014b\u0254\u0300k\u0197\u0300z\u00f9\u0294", + "ndz\u0254\u0300\u014b\u0254\u0300t\u0197\u0300d\u0289\u0300gh\u00e0", + "ndz\u0254\u0300\u014b\u0254\u0300t\u01ceaf\u0289\u0304gh\u0101", + "ndz\u0254\u0300\u014b\u00e8s\u00e8e", + "ndz\u0254\u0300\u014b\u0254\u0300nz\u00f9gh\u00f2", + "ndz\u0254\u0300\u014b\u0254\u0300d\u00f9mlo", + "ndz\u0254\u0300\u014b\u0254\u0300kw\u00eef\u0254\u0300e", + "ndz\u0254\u0300\u014b\u0254\u0300t\u0197\u0300f\u0289\u0300gh\u00e0dzugh\u00f9", + "ndz\u0254\u0300\u014b\u0254\u0300gh\u01d4uwel\u0254\u0300m", + "ndz\u0254\u0300\u014b\u0254\u0300chwa\u0294\u00e0kaa wo", + "ndz\u0254\u0300\u014b\u00e8fw\u00f2o" + ], + "SHORTDAY": [ + "nts", + "kpa", + "gh\u0254", + "t\u0254m", + "ume", + "gh\u0268", + "dzk" + ], + "SHORTMONTH": [ + "n\u00f9m", + "k\u0268z", + "t\u0268d", + "taa", + "see", + "nzu", + "dum", + "f\u0254e", + "dzu", + "l\u0254m", + "kaa", + "fwo" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "agq", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ak-gh.js b/1.2.30/i18n/angular-locale_ak-gh.js new file mode 100644 index 0000000000..9fca9932a2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ak-gh.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AN", + "EW" + ], + "DAY": [ + "Kwesida", + "Dwowda", + "Benada", + "Wukuda", + "Yawda", + "Fida", + "Memeneda" + ], + "MONTH": [ + "Sanda-\u0186p\u025bp\u0254n", + "Kwakwar-\u0186gyefuo", + "Eb\u0254w-\u0186benem", + "Eb\u0254bira-Oforisuo", + "Esusow Aketseaba-K\u0254t\u0254nimba", + "Obirade-Ay\u025bwohomumu", + "Ay\u025bwoho-Kitawonsa", + "Difuu-\u0186sandaa", + "Fankwa-\u0190b\u0254", + "\u0186b\u025bs\u025b-Ahinime", + "\u0186ber\u025bf\u025bw-Obubuo", + "Mumu-\u0186p\u025bnimba" + ], + "SHORTDAY": [ + "Kwe", + "Dwo", + "Ben", + "Wuk", + "Yaw", + "Fia", + "Mem" + ], + "SHORTMONTH": [ + "S-\u0186", + "K-\u0186", + "E-\u0186", + "E-O", + "E-K", + "O-A", + "A-K", + "D-\u0186", + "F-\u0190", + "\u0186-A", + "\u0186-O", + "M-\u0186" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "GHS", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ak-gh", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ak.js b/1.2.30/i18n/angular-locale_ak.js new file mode 100644 index 0000000000..ed77782140 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ak.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AN", + "EW" + ], + "DAY": [ + "Kwesida", + "Dwowda", + "Benada", + "Wukuda", + "Yawda", + "Fida", + "Memeneda" + ], + "MONTH": [ + "Sanda-\u0186p\u025bp\u0254n", + "Kwakwar-\u0186gyefuo", + "Eb\u0254w-\u0186benem", + "Eb\u0254bira-Oforisuo", + "Esusow Aketseaba-K\u0254t\u0254nimba", + "Obirade-Ay\u025bwohomumu", + "Ay\u025bwoho-Kitawonsa", + "Difuu-\u0186sandaa", + "Fankwa-\u0190b\u0254", + "\u0186b\u025bs\u025b-Ahinime", + "\u0186ber\u025bf\u025bw-Obubuo", + "Mumu-\u0186p\u025bnimba" + ], + "SHORTDAY": [ + "Kwe", + "Dwo", + "Ben", + "Wuk", + "Yaw", + "Fia", + "Mem" + ], + "SHORTMONTH": [ + "S-\u0186", + "K-\u0186", + "E-\u0186", + "E-O", + "E-K", + "O-A", + "A-K", + "D-\u0186", + "F-\u0190", + "\u0186-A", + "\u0186-O", + "M-\u0186" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "GHS", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ak", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_am-et.js b/1.2.30/i18n/angular-locale_am-et.js new file mode 100644 index 0000000000..a076f9804a --- /dev/null +++ b/1.2.30/i18n/angular-locale_am-et.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u1325\u12cb\u1275", + "\u12a8\u1230\u12d3\u1275" + ], + "DAY": [ + "\u12a5\u1211\u12f5", + "\u1230\u129e", + "\u121b\u12ad\u1230\u129e", + "\u1228\u1261\u12d5", + "\u1210\u1219\u1235", + "\u12d3\u122d\u1265", + "\u1245\u12f3\u121c" + ], + "MONTH": [ + "\u1303\u1295\u12e9\u12c8\u122a", + "\u134c\u1265\u1229\u12c8\u122a", + "\u121b\u122d\u127d", + "\u12a4\u1355\u122a\u120d", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235\u1275", + "\u1234\u1355\u1274\u121d\u1260\u122d", + "\u12a6\u12ad\u1270\u12cd\u1260\u122d", + "\u1296\u126c\u121d\u1260\u122d", + "\u12f2\u1234\u121d\u1260\u122d" + ], + "SHORTDAY": [ + "\u12a5\u1211\u12f5", + "\u1230\u129e", + "\u121b\u12ad\u1230", + "\u1228\u1261\u12d5", + "\u1210\u1219\u1235", + "\u12d3\u122d\u1265", + "\u1245\u12f3\u121c" + ], + "SHORTMONTH": [ + "\u1303\u1295\u12e9", + "\u134c\u1265\u1229", + "\u121b\u122d\u127d", + "\u12a4\u1355\u122a", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235", + "\u1234\u1355\u1274", + "\u12a6\u12ad\u1270", + "\u1296\u126c\u121d", + "\u12f2\u1234\u121d" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Birr", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "am-et", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_am.js b/1.2.30/i18n/angular-locale_am.js new file mode 100644 index 0000000000..9f4db0dd71 --- /dev/null +++ b/1.2.30/i18n/angular-locale_am.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u1325\u12cb\u1275", + "\u12a8\u1230\u12d3\u1275" + ], + "DAY": [ + "\u12a5\u1211\u12f5", + "\u1230\u129e", + "\u121b\u12ad\u1230\u129e", + "\u1228\u1261\u12d5", + "\u1210\u1219\u1235", + "\u12d3\u122d\u1265", + "\u1245\u12f3\u121c" + ], + "MONTH": [ + "\u1303\u1295\u12e9\u12c8\u122a", + "\u134c\u1265\u1229\u12c8\u122a", + "\u121b\u122d\u127d", + "\u12a4\u1355\u122a\u120d", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235\u1275", + "\u1234\u1355\u1274\u121d\u1260\u122d", + "\u12a6\u12ad\u1270\u12cd\u1260\u122d", + "\u1296\u126c\u121d\u1260\u122d", + "\u12f2\u1234\u121d\u1260\u122d" + ], + "SHORTDAY": [ + "\u12a5\u1211\u12f5", + "\u1230\u129e", + "\u121b\u12ad\u1230", + "\u1228\u1261\u12d5", + "\u1210\u1219\u1235", + "\u12d3\u122d\u1265", + "\u1245\u12f3\u121c" + ], + "SHORTMONTH": [ + "\u1303\u1295\u12e9", + "\u134c\u1265\u1229", + "\u121b\u122d\u127d", + "\u12a4\u1355\u122a", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235", + "\u1234\u1355\u1274", + "\u12a6\u12ad\u1270", + "\u1296\u126c\u121d", + "\u12f2\u1234\u121d" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Birr", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "am", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-001.js b/1.2.30/i18n/angular-locale_ar-001.js new file mode 100644 index 0000000000..6c5fc98f3f --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-001.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-001", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-ae.js b/1.2.30/i18n/angular-locale_ar-ae.js new file mode 100644 index 0000000000..f7546bdab1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-ae.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "dh", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-ae", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-bh.js b/1.2.30/i18n/angular-locale_ar-bh.js new file mode 100644 index 0000000000..f9e937106e --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-bh.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-bh", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-dj.js b/1.2.30/i18n/angular-locale_ar-dj.js new file mode 100644 index 0000000000..b7d8b84beb --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-dj.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Fdj", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-dj", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-dz.js b/1.2.30/i18n/angular-locale_ar-dz.js new file mode 100644 index 0000000000..6f17f6bb07 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-dz.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u062c\u0627\u0646\u0641\u064a", + "\u0641\u064a\u0641\u0631\u064a", + "\u0645\u0627\u0631\u0633", + "\u0623\u0641\u0631\u064a\u0644", + "\u0645\u0627\u064a", + "\u062c\u0648\u0627\u0646", + "\u062c\u0648\u064a\u0644\u064a\u0629", + "\u0623\u0648\u062a", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u062c\u0627\u0646\u0641\u064a", + "\u0641\u064a\u0641\u0631\u064a", + "\u0645\u0627\u0631\u0633", + "\u0623\u0641\u0631\u064a\u0644", + "\u0645\u0627\u064a", + "\u062c\u0648\u0627\u0646", + "\u062c\u0648\u064a\u0644\u064a\u0629", + "\u0623\u0648\u062a", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "y/MM/dd h:mm:ss a", + "mediumDate": "y/MM/dd", + "mediumTime": "h:mm:ss a", + "short": "y/M/d h:mm a", + "shortDate": "y/M/d", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-dz", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-eg.js b/1.2.30/i18n/angular-locale_ar-eg.js new file mode 100644 index 0000000000..a35b2ebacb --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-eg.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-eg", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-eh.js b/1.2.30/i18n/angular-locale_ar-eh.js new file mode 100644 index 0000000000..5d2f83e964 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-eh.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "dh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-eh", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-er.js b/1.2.30/i18n/angular-locale_ar-er.js new file mode 100644 index 0000000000..1fee234b88 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-er.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Nfk", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-er", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-il.js b/1.2.30/i18n/angular-locale_ar-il.js new file mode 100644 index 0000000000..66ea433e22 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-il.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20aa", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-il", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-iq.js b/1.2.30/i18n/angular-locale_ar-iq.js new file mode 100644 index 0000000000..b9bfb9bebc --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-iq.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0634\u0628\u0627\u0637", + "\u0622\u0630\u0627\u0631", + "\u0646\u064a\u0633\u0627\u0646", + "\u0623\u064a\u0627\u0631", + "\u062d\u0632\u064a\u0631\u0627\u0646", + "\u062a\u0645\u0648\u0632", + "\u0622\u0628", + "\u0623\u064a\u0644\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0634\u0628\u0627\u0637", + "\u0622\u0630\u0627\u0631", + "\u0646\u064a\u0633\u0627\u0646", + "\u0623\u064a\u0627\u0631", + "\u062d\u0632\u064a\u0631\u0627\u0646", + "\u062a\u0645\u0648\u0632", + "\u0622\u0628", + "\u0623\u064a\u0644\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646 \u0627\u0644\u0623\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-iq", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-jo.js b/1.2.30/i18n/angular-locale_ar-jo.js new file mode 100644 index 0000000000..1bc55a6ee0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-jo.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0634\u0628\u0627\u0637", + "\u0622\u0630\u0627\u0631", + "\u0646\u064a\u0633\u0627\u0646", + "\u0623\u064a\u0627\u0631", + "\u062d\u0632\u064a\u0631\u0627\u0646", + "\u062a\u0645\u0648\u0632", + "\u0622\u0628", + "\u0623\u064a\u0644\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0634\u0628\u0627\u0637", + "\u0622\u0630\u0627\u0631", + "\u0646\u064a\u0633\u0627\u0646", + "\u0623\u064a\u0627\u0631", + "\u062d\u0632\u064a\u0631\u0627\u0646", + "\u062a\u0645\u0648\u0632", + "\u0622\u0628", + "\u0623\u064a\u0644\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-jo", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-km.js b/1.2.30/i18n/angular-locale_ar-km.js new file mode 100644 index 0000000000..ef97dc5272 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-km.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CF", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-km", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-kw.js b/1.2.30/i18n/angular-locale_ar-kw.js new file mode 100644 index 0000000000..39c44d8627 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-kw.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-kw", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-lb.js b/1.2.30/i18n/angular-locale_ar-lb.js new file mode 100644 index 0000000000..eafa434d88 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-lb.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0634\u0628\u0627\u0637", + "\u0622\u0630\u0627\u0631", + "\u0646\u064a\u0633\u0627\u0646", + "\u0623\u064a\u0627\u0631", + "\u062d\u0632\u064a\u0631\u0627\u0646", + "\u062a\u0645\u0648\u0632", + "\u0622\u0628", + "\u0623\u064a\u0644\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0634\u0628\u0627\u0637", + "\u0622\u0630\u0627\u0631", + "\u0646\u064a\u0633\u0627\u0646", + "\u0623\u064a\u0627\u0631", + "\u062d\u0632\u064a\u0631\u0627\u0646", + "\u062a\u0645\u0648\u0632", + "\u0622\u0628", + "\u0623\u064a\u0644\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "L\u00a3", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-lb", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-ly.js b/1.2.30/i18n/angular-locale_ar-ly.js new file mode 100644 index 0000000000..32b401c995 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-ly.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-ly", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-ma.js b/1.2.30/i18n/angular-locale_ar-ma.js new file mode 100644 index 0000000000..f40c587092 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-ma.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648\u0632", + "\u063a\u0634\u062a", + "\u0634\u062a\u0646\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0646\u0628\u0631", + "\u062f\u062c\u0646\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648\u0632", + "\u063a\u0634\u062a", + "\u0634\u062a\u0646\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0646\u0628\u0631", + "\u062f\u062c\u0646\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "y/MM/dd h:mm:ss a", + "mediumDate": "y/MM/dd", + "mediumTime": "h:mm:ss a", + "short": "y/M/d h:mm a", + "shortDate": "y/M/d", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "dh", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-ma", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-mr.js b/1.2.30/i18n/angular-locale_ar-mr.js new file mode 100644 index 0000000000..d796613651 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-mr.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0625\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0634\u062a", + "\u0634\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u062c\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0625\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0634\u062a", + "\u0634\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u062c\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MRO", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-mr", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-om.js b/1.2.30/i18n/angular-locale_ar-om.js new file mode 100644 index 0000000000..0dec3a55eb --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-om.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rial", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-om", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-ps.js b/1.2.30/i18n/angular-locale_ar-ps.js new file mode 100644 index 0000000000..cc2c23e004 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-ps.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0634\u0628\u0627\u0637", + "\u0622\u0630\u0627\u0631", + "\u0646\u064a\u0633\u0627\u0646", + "\u0623\u064a\u0627\u0631", + "\u062d\u0632\u064a\u0631\u0627\u0646", + "\u062a\u0645\u0648\u0632", + "\u0622\u0628", + "\u0623\u064a\u0644\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0634\u0628\u0627\u0637", + "\u0622\u0630\u0627\u0631", + "\u0646\u064a\u0633\u0627\u0646", + "\u0623\u064a\u0627\u0631", + "\u062d\u0632\u064a\u0631\u0627\u0646", + "\u062a\u0645\u0648\u0632", + "\u0622\u0628", + "\u0623\u064a\u0644\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20aa", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-ps", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-qa.js b/1.2.30/i18n/angular-locale_ar-qa.js new file mode 100644 index 0000000000..f7b69e183e --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-qa.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rial", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 0, + "lgSize": 0, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ar-qa", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-sa.js b/1.2.30/i18n/angular-locale_ar-sa.js new file mode 100644 index 0000000000..99fb46c645 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-sa.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rial", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 0, + "lgSize": 0, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ar-sa", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-sd.js b/1.2.30/i18n/angular-locale_ar-sd.js new file mode 100644 index 0000000000..5c06e63b71 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-sd.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "SDG", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-sd", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-so.js b/1.2.30/i18n/angular-locale_ar-so.js new file mode 100644 index 0000000000..3423ead89b --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-so.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "SOS", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-so", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-ss.js b/1.2.30/i18n/angular-locale_ar-ss.js new file mode 100644 index 0000000000..be198d831a --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-ss.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "SSP", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-ss", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-sy.js b/1.2.30/i18n/angular-locale_ar-sy.js new file mode 100644 index 0000000000..72d93f16b6 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-sy.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0634\u0628\u0627\u0637", + "\u0622\u0630\u0627\u0631", + "\u0646\u064a\u0633\u0627\u0646", + "\u0623\u064a\u0627\u0631", + "\u062d\u0632\u064a\u0631\u0627\u0646", + "\u062a\u0645\u0648\u0632", + "\u0622\u0628", + "\u0623\u064a\u0644\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0634\u0628\u0627\u0637", + "\u0622\u0630\u0627\u0631", + "\u0646\u064a\u0633\u0627\u0646", + "\u0623\u064a\u0627\u0631", + "\u062d\u0632\u064a\u0631\u0627\u0646", + "\u062a\u0645\u0648\u0632", + "\u0622\u0628", + "\u0623\u064a\u0644\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644", + "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a", + "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 0, + "lgSize": 0, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ar-sy", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-td.js b/1.2.30/i18n/angular-locale_ar-td.js new file mode 100644 index 0000000000..abb0d1fd26 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-td.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar-td", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-tn.js b/1.2.30/i18n/angular-locale_ar-tn.js new file mode 100644 index 0000000000..4b29337381 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-tn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u062c\u0627\u0646\u0641\u064a", + "\u0641\u064a\u0641\u0631\u064a", + "\u0645\u0627\u0631\u0633", + "\u0623\u0641\u0631\u064a\u0644", + "\u0645\u0627\u064a", + "\u062c\u0648\u0627\u0646", + "\u062c\u0648\u064a\u0644\u064a\u0629", + "\u0623\u0648\u062a", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u062c\u0627\u0646\u0641\u064a", + "\u0641\u064a\u0641\u0631\u064a", + "\u0645\u0627\u0631\u0633", + "\u0623\u0641\u0631\u064a\u0644", + "\u0645\u0627\u064a", + "\u062c\u0648\u0627\u0646", + "\u062c\u0648\u064a\u0644\u064a\u0629", + "\u0623\u0648\u062a", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "y/MM/dd h:mm:ss a", + "mediumDate": "y/MM/dd", + "mediumTime": "h:mm:ss a", + "short": "y/M/d h:mm a", + "shortDate": "y/M/d", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 0, + "lgSize": 0, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ar-tn", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar-ye.js b/1.2.30/i18n/angular-locale_ar-ye.js new file mode 100644 index 0000000000..137a8b010b --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar-ye.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rial", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 0, + "lgSize": 0, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ar-ye", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ar.js b/1.2.30/i18n/angular-locale_ar.js new file mode 100644 index 0000000000..8d349dda06 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ar.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0635", + "\u0645" + ], + "DAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "MONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u0644\u0623\u062d\u062f", + "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", + "\u0627\u0644\u062e\u0645\u064a\u0633", + "\u0627\u0644\u062c\u0645\u0639\u0629", + "\u0627\u0644\u0633\u0628\u062a" + ], + "SHORTMONTH": [ + "\u064a\u0646\u0627\u064a\u0631", + "\u0641\u0628\u0631\u0627\u064a\u0631", + "\u0645\u0627\u0631\u0633", + "\u0623\u0628\u0631\u064a\u0644", + "\u0645\u0627\u064a\u0648", + "\u064a\u0648\u0646\u064a\u0648", + "\u064a\u0648\u0644\u064a\u0648", + "\u0623\u063a\u0633\u0637\u0633", + "\u0633\u0628\u062a\u0645\u0628\u0631", + "\u0623\u0643\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0641\u0645\u0628\u0631", + "\u062f\u064a\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "dd\u200f/MM\u200f/y h:mm:ss a", + "mediumDate": "dd\u200f/MM\u200f/y", + "mediumTime": "h:mm:ss a", + "short": "d\u200f/M\u200f/y h:mm a", + "shortDate": "d\u200f/M\u200f/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ar", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_as-in.js b/1.2.30/i18n/angular-locale_as-in.js new file mode 100644 index 0000000000..ddf4ea8a6f --- /dev/null +++ b/1.2.30/i18n/angular-locale_as-in.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u09aa\u09c2\u09f0\u09cd\u09ac\u09be\u09b9\u09cd\u09a3", + "\u0985\u09aa\u09f0\u09be\u09b9\u09cd\u09a3" + ], + "DAY": [ + "\u09a6\u09c7\u0993\u09ac\u09be\u09f0", + "\u09b8\u09cb\u09ae\u09ac\u09be\u09f0", + "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09f0", + "\u09ac\u09c1\u09a7\u09ac\u09be\u09f0", + "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09f0", + "\u09b6\u09c1\u0995\u09cd\u09f0\u09ac\u09be\u09f0", + "\u09b6\u09a8\u09bf\u09ac\u09be\u09f0" + ], + "MONTH": [ + "\u099c\u09be\u09a8\u09c1\u09f1\u09be\u09f0\u09c0", + "\u09ab\u09c7\u09ac\u09cd\u09f0\u09c1\u09f1\u09be\u09f0\u09c0", + "\u09ae\u09be\u09f0\u09cd\u099a", + "\u098f\u09aa\u09cd\u09f0\u09bf\u09b2", + "\u09ae\u09c7", + "\u099c\u09c1\u09a8", + "\u099c\u09c1\u09b2\u09be\u0987", + "\u0986\u0997\u09b7\u09cd\u099f", + "\u099b\u09c7\u09aa\u09cd\u09a4\u09c7\u09ae\u09cd\u09ac\u09f0", + "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09f0", + "\u09a8\u09f1\u09c7\u09ae\u09cd\u09ac\u09f0", + "\u09a1\u09bf\u099a\u09c7\u09ae\u09cd\u09ac\u09f0" + ], + "SHORTDAY": [ + "\u09f0\u09ac\u09bf", + "\u09b8\u09cb\u09ae", + "\u09ae\u0999\u09cd\u0997\u09b2", + "\u09ac\u09c1\u09a7", + "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf", + "\u09b6\u09c1\u0995\u09cd\u09f0", + "\u09b6\u09a8\u09bf" + ], + "SHORTMONTH": [ + "\u099c\u09be\u09a8\u09c1", + "\u09ab\u09c7\u09ac\u09cd\u09f0\u09c1", + "\u09ae\u09be\u09f0\u09cd\u099a", + "\u098f\u09aa\u09cd\u09f0\u09bf\u09b2", + "\u09ae\u09c7", + "\u099c\u09c1\u09a8", + "\u099c\u09c1\u09b2\u09be\u0987", + "\u0986\u0997", + "\u09b8\u09c7\u09aa\u09cd\u099f", + "\u0985\u0995\u09cd\u099f\u09cb", + "\u09a8\u09ad\u09c7", + "\u09a1\u09bf\u09b8\u09c7" + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "dd-MM-y h.mm.ss a", + "mediumDate": "dd-MM-y", + "mediumTime": "h.mm.ss a", + "short": "d-M-y h.mm. a", + "shortDate": "d-M-y", + "shortTime": "h.mm. a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "as-in", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_as.js b/1.2.30/i18n/angular-locale_as.js new file mode 100644 index 0000000000..e5848d3e0c --- /dev/null +++ b/1.2.30/i18n/angular-locale_as.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u09aa\u09c2\u09f0\u09cd\u09ac\u09be\u09b9\u09cd\u09a3", + "\u0985\u09aa\u09f0\u09be\u09b9\u09cd\u09a3" + ], + "DAY": [ + "\u09a6\u09c7\u0993\u09ac\u09be\u09f0", + "\u09b8\u09cb\u09ae\u09ac\u09be\u09f0", + "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09f0", + "\u09ac\u09c1\u09a7\u09ac\u09be\u09f0", + "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09f0", + "\u09b6\u09c1\u0995\u09cd\u09f0\u09ac\u09be\u09f0", + "\u09b6\u09a8\u09bf\u09ac\u09be\u09f0" + ], + "MONTH": [ + "\u099c\u09be\u09a8\u09c1\u09f1\u09be\u09f0\u09c0", + "\u09ab\u09c7\u09ac\u09cd\u09f0\u09c1\u09f1\u09be\u09f0\u09c0", + "\u09ae\u09be\u09f0\u09cd\u099a", + "\u098f\u09aa\u09cd\u09f0\u09bf\u09b2", + "\u09ae\u09c7", + "\u099c\u09c1\u09a8", + "\u099c\u09c1\u09b2\u09be\u0987", + "\u0986\u0997\u09b7\u09cd\u099f", + "\u099b\u09c7\u09aa\u09cd\u09a4\u09c7\u09ae\u09cd\u09ac\u09f0", + "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09f0", + "\u09a8\u09f1\u09c7\u09ae\u09cd\u09ac\u09f0", + "\u09a1\u09bf\u099a\u09c7\u09ae\u09cd\u09ac\u09f0" + ], + "SHORTDAY": [ + "\u09f0\u09ac\u09bf", + "\u09b8\u09cb\u09ae", + "\u09ae\u0999\u09cd\u0997\u09b2", + "\u09ac\u09c1\u09a7", + "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf", + "\u09b6\u09c1\u0995\u09cd\u09f0", + "\u09b6\u09a8\u09bf" + ], + "SHORTMONTH": [ + "\u099c\u09be\u09a8\u09c1", + "\u09ab\u09c7\u09ac\u09cd\u09f0\u09c1", + "\u09ae\u09be\u09f0\u09cd\u099a", + "\u098f\u09aa\u09cd\u09f0\u09bf\u09b2", + "\u09ae\u09c7", + "\u099c\u09c1\u09a8", + "\u099c\u09c1\u09b2\u09be\u0987", + "\u0986\u0997", + "\u09b8\u09c7\u09aa\u09cd\u099f", + "\u0985\u0995\u09cd\u099f\u09cb", + "\u09a8\u09ad\u09c7", + "\u09a1\u09bf\u09b8\u09c7" + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "dd-MM-y h.mm.ss a", + "mediumDate": "dd-MM-y", + "mediumTime": "h.mm.ss a", + "short": "d-M-y h.mm. a", + "shortDate": "d-M-y", + "shortTime": "h.mm. a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "as", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_asa-tz.js b/1.2.30/i18n/angular-locale_asa-tz.js new file mode 100644 index 0000000000..4a17de6594 --- /dev/null +++ b/1.2.30/i18n/angular-locale_asa-tz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "icheheavo", + "ichamthi" + ], + "DAY": [ + "Jumapili", + "Jumatatu", + "Jumanne", + "Jumatano", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Aprili", + "Mei", + "Juni", + "Julai", + "Agosti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Jpi", + "Jtt", + "Jnn", + "Jtn", + "Alh", + "Ijm", + "Jmo" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Dec" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "asa-tz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_asa.js b/1.2.30/i18n/angular-locale_asa.js new file mode 100644 index 0000000000..82614406f5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_asa.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "icheheavo", + "ichamthi" + ], + "DAY": [ + "Jumapili", + "Jumatatu", + "Jumanne", + "Jumatano", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Aprili", + "Mei", + "Juni", + "Julai", + "Agosti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Jpi", + "Jtt", + "Jnn", + "Jtn", + "Alh", + "Ijm", + "Jmo" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Dec" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "asa", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ast-es.js b/1.2.30/i18n/angular-locale_ast-es.js new file mode 100644 index 0000000000..9553a8e1b9 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ast-es.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domingu", + "llunes", + "martes", + "mi\u00e9rcoles", + "xueves", + "vienres", + "s\u00e1badu" + ], + "MONTH": [ + "de xineru", + "de febreru", + "de marzu", + "d'abril", + "de mayu", + "de xunu", + "de xunetu", + "d'agostu", + "de setiembre", + "d'ochobre", + "de payares", + "d'avientu" + ], + "SHORTDAY": [ + "dom", + "llu", + "mar", + "mie", + "xue", + "vie", + "sab" + ], + "SHORTMONTH": [ + "xin", + "feb", + "mar", + "abr", + "may", + "xun", + "xnt", + "ago", + "set", + "och", + "pay", + "avi" + ], + "fullDate": "EEEE, dd MMMM 'de' y", + "longDate": "d MMMM 'de' y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/yy HH:mm", + "shortDate": "d/M/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ast-es", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ast.js b/1.2.30/i18n/angular-locale_ast.js new file mode 100644 index 0000000000..f60ee59ddf --- /dev/null +++ b/1.2.30/i18n/angular-locale_ast.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domingu", + "llunes", + "martes", + "mi\u00e9rcoles", + "xueves", + "vienres", + "s\u00e1badu" + ], + "MONTH": [ + "de xineru", + "de febreru", + "de marzu", + "d'abril", + "de mayu", + "de xunu", + "de xunetu", + "d'agostu", + "de setiembre", + "d'ochobre", + "de payares", + "d'avientu" + ], + "SHORTDAY": [ + "dom", + "llu", + "mar", + "mie", + "xue", + "vie", + "sab" + ], + "SHORTMONTH": [ + "xin", + "feb", + "mar", + "abr", + "may", + "xun", + "xnt", + "ago", + "set", + "och", + "pay", + "avi" + ], + "fullDate": "EEEE, dd MMMM 'de' y", + "longDate": "d MMMM 'de' y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/yy HH:mm", + "shortDate": "d/M/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ast", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_az-cyrl-az.js b/1.2.30/i18n/angular-locale_az-cyrl-az.js new file mode 100644 index 0000000000..b6147cd839 --- /dev/null +++ b/1.2.30/i18n/angular-locale_az-cyrl-az.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0431\u0430\u0437\u0430\u0440", + "\u0431\u0430\u0437\u0430\u0440 \u0435\u0440\u0442\u04d9\u0441\u0438", + "\u0447\u04d9\u0440\u0448\u04d9\u043d\u0431\u04d9 \u0430\u0445\u0448\u0430\u043c\u044b", + "\u0447\u04d9\u0440\u0448\u04d9\u043d\u0431\u04d9", + "\u04b9\u04af\u043c\u04d9 \u0430\u0445\u0448\u0430\u043c\u044b", + "\u04b9\u04af\u043c\u04d9", + "\u0448\u04d9\u043d\u0431\u04d9" + ], + "MONTH": [ + "\u0458\u0430\u043d\u0432\u0430\u0440", + "\u0444\u0435\u0432\u0440\u0430\u043b", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0435\u043b", + "\u043c\u0430\u0439", + "\u0438\u0458\u0443\u043d", + "\u0438\u0458\u0443\u043b", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043d\u0442\u0458\u0430\u0431\u0440", + "\u043e\u043a\u0442\u0458\u0430\u0431\u0440", + "\u043d\u043e\u0458\u0430\u0431\u0440", + "\u0434\u0435\u043a\u0430\u0431\u0440" + ], + "SHORTDAY": [ + "B.", + "B.E.", + "\u00c7.A.", + "\u00c7.", + "C.A.", + "C", + "\u015e." + ], + "SHORTMONTH": [ + "yan", + "fev", + "mar", + "apr", + "may", + "iyn", + "iyl", + "avq", + "sen", + "okt", + "noy", + "dek" + ], + "fullDate": "EEEE, d, MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "man.", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "az-cyrl-az", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_az-cyrl.js b/1.2.30/i18n/angular-locale_az-cyrl.js new file mode 100644 index 0000000000..113cb96f28 --- /dev/null +++ b/1.2.30/i18n/angular-locale_az-cyrl.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0431\u0430\u0437\u0430\u0440", + "\u0431\u0430\u0437\u0430\u0440 \u0435\u0440\u0442\u04d9\u0441\u0438", + "\u0447\u04d9\u0440\u0448\u04d9\u043d\u0431\u04d9 \u0430\u0445\u0448\u0430\u043c\u044b", + "\u0447\u04d9\u0440\u0448\u04d9\u043d\u0431\u04d9", + "\u04b9\u04af\u043c\u04d9 \u0430\u0445\u0448\u0430\u043c\u044b", + "\u04b9\u04af\u043c\u04d9", + "\u0448\u04d9\u043d\u0431\u04d9" + ], + "MONTH": [ + "\u0458\u0430\u043d\u0432\u0430\u0440", + "\u0444\u0435\u0432\u0440\u0430\u043b", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0435\u043b", + "\u043c\u0430\u0439", + "\u0438\u0458\u0443\u043d", + "\u0438\u0458\u0443\u043b", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043d\u0442\u0458\u0430\u0431\u0440", + "\u043e\u043a\u0442\u0458\u0430\u0431\u0440", + "\u043d\u043e\u0458\u0430\u0431\u0440", + "\u0434\u0435\u043a\u0430\u0431\u0440" + ], + "SHORTDAY": [ + "B.", + "B.E.", + "\u00c7.A.", + "\u00c7.", + "C.A.", + "C", + "\u015e." + ], + "SHORTMONTH": [ + "yan", + "fev", + "mar", + "apr", + "may", + "iyn", + "iyl", + "avq", + "sen", + "okt", + "noy", + "dek" + ], + "fullDate": "EEEE, d, MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "az-cyrl", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_az-latn-az.js b/1.2.30/i18n/angular-locale_az-latn-az.js new file mode 100644 index 0000000000..1c874ef680 --- /dev/null +++ b/1.2.30/i18n/angular-locale_az-latn-az.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "bazar", + "bazar ert\u0259si", + "\u00e7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131", + "\u00e7\u0259r\u015f\u0259nb\u0259", + "c\u00fcm\u0259 ax\u015fam\u0131", + "c\u00fcm\u0259", + "\u015f\u0259nb\u0259" + ], + "MONTH": [ + "yanvar", + "fevral", + "mart", + "aprel", + "may", + "iyun", + "iyul", + "avqust", + "sentyabr", + "oktyabr", + "noyabr", + "dekabr" + ], + "SHORTDAY": [ + "B.", + "B.E.", + "\u00c7.A.", + "\u00c7.", + "C.A.", + "C", + "\u015e." + ], + "SHORTMONTH": [ + "yan", + "fev", + "mar", + "apr", + "may", + "iyn", + "iyl", + "avq", + "sen", + "okt", + "noy", + "dek" + ], + "fullDate": "d MMMM y, EEEE", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "man.", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "az-latn-az", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_az-latn.js b/1.2.30/i18n/angular-locale_az-latn.js new file mode 100644 index 0000000000..4899537bb0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_az-latn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "bazar", + "bazar ert\u0259si", + "\u00e7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131", + "\u00e7\u0259r\u015f\u0259nb\u0259", + "c\u00fcm\u0259 ax\u015fam\u0131", + "c\u00fcm\u0259", + "\u015f\u0259nb\u0259" + ], + "MONTH": [ + "yanvar", + "fevral", + "mart", + "aprel", + "may", + "iyun", + "iyul", + "avqust", + "sentyabr", + "oktyabr", + "noyabr", + "dekabr" + ], + "SHORTDAY": [ + "B.", + "B.E.", + "\u00c7.A.", + "\u00c7.", + "C.A.", + "C", + "\u015e." + ], + "SHORTMONTH": [ + "yan", + "fev", + "mar", + "apr", + "may", + "iyn", + "iyl", + "avq", + "sen", + "okt", + "noy", + "dek" + ], + "fullDate": "d MMMM y, EEEE", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "az-latn", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_az.js b/1.2.30/i18n/angular-locale_az.js new file mode 100644 index 0000000000..c3d6254795 --- /dev/null +++ b/1.2.30/i18n/angular-locale_az.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "bazar", + "bazar ert\u0259si", + "\u00e7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131", + "\u00e7\u0259r\u015f\u0259nb\u0259", + "c\u00fcm\u0259 ax\u015fam\u0131", + "c\u00fcm\u0259", + "\u015f\u0259nb\u0259" + ], + "MONTH": [ + "yanvar", + "fevral", + "mart", + "aprel", + "may", + "iyun", + "iyul", + "avqust", + "sentyabr", + "oktyabr", + "noyabr", + "dekabr" + ], + "SHORTDAY": [ + "B.", + "B.E.", + "\u00c7.A.", + "\u00c7.", + "C.A.", + "C", + "\u015e." + ], + "SHORTMONTH": [ + "yan", + "fev", + "mar", + "apr", + "may", + "iyn", + "iyl", + "avq", + "sen", + "okt", + "noy", + "dek" + ], + "fullDate": "d MMMM y, EEEE", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "man.", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "az", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bas-cm.js b/1.2.30/i18n/angular-locale_bas-cm.js new file mode 100644 index 0000000000..ce3a2374ab --- /dev/null +++ b/1.2.30/i18n/angular-locale_bas-cm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "I bik\u025b\u0302gl\u00e0", + "I \u0253ugaj\u0254p" + ], + "DAY": [ + "\u014bgw\u00e0 n\u0254\u0302y", + "\u014bgw\u00e0 nja\u014bgumba", + "\u014bgw\u00e0 \u00fbm", + "\u014bgw\u00e0 \u014bg\u00ea", + "\u014bgw\u00e0 mb\u0254k", + "\u014bgw\u00e0 k\u0254\u0254", + "\u014bgw\u00e0 j\u00f4n" + ], + "MONTH": [ + "K\u0254nd\u0254\u014b", + "M\u00e0c\u025b\u0302l", + "M\u00e0t\u00f9mb", + "M\u00e0top", + "M\u0300puy\u025b", + "H\u00ecl\u00f2nd\u025b\u0300", + "Nj\u00e8b\u00e0", + "H\u00ecka\u014b", + "D\u00ecp\u0254\u0300s", + "B\u00ec\u00f2\u00f4m", + "M\u00e0y\u025bs\u00e8p", + "L\u00ecbuy li \u0144y\u00e8e" + ], + "SHORTDAY": [ + "n\u0254y", + "nja", + "uum", + "\u014bge", + "mb\u0254", + "k\u0254\u0254", + "jon" + ], + "SHORTMONTH": [ + "k\u0254n", + "mac", + "mat", + "mto", + "mpu", + "hil", + "nje", + "hik", + "dip", + "bio", + "may", + "li\u0253" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "bas-cm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bas.js b/1.2.30/i18n/angular-locale_bas.js new file mode 100644 index 0000000000..8d7154af88 --- /dev/null +++ b/1.2.30/i18n/angular-locale_bas.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "I bik\u025b\u0302gl\u00e0", + "I \u0253ugaj\u0254p" + ], + "DAY": [ + "\u014bgw\u00e0 n\u0254\u0302y", + "\u014bgw\u00e0 nja\u014bgumba", + "\u014bgw\u00e0 \u00fbm", + "\u014bgw\u00e0 \u014bg\u00ea", + "\u014bgw\u00e0 mb\u0254k", + "\u014bgw\u00e0 k\u0254\u0254", + "\u014bgw\u00e0 j\u00f4n" + ], + "MONTH": [ + "K\u0254nd\u0254\u014b", + "M\u00e0c\u025b\u0302l", + "M\u00e0t\u00f9mb", + "M\u00e0top", + "M\u0300puy\u025b", + "H\u00ecl\u00f2nd\u025b\u0300", + "Nj\u00e8b\u00e0", + "H\u00ecka\u014b", + "D\u00ecp\u0254\u0300s", + "B\u00ec\u00f2\u00f4m", + "M\u00e0y\u025bs\u00e8p", + "L\u00ecbuy li \u0144y\u00e8e" + ], + "SHORTDAY": [ + "n\u0254y", + "nja", + "uum", + "\u014bge", + "mb\u0254", + "k\u0254\u0254", + "jon" + ], + "SHORTMONTH": [ + "k\u0254n", + "mac", + "mat", + "mto", + "mpu", + "hil", + "nje", + "hik", + "dip", + "bio", + "may", + "li\u0253" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "bas", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_be-by.js b/1.2.30/i18n/angular-locale_be-by.js new file mode 100644 index 0000000000..fdfc141c68 --- /dev/null +++ b/1.2.30/i18n/angular-locale_be-by.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0434\u0430 \u043f\u0430\u043b\u0443\u0434\u043d\u044f", + "\u043f\u0430\u0441\u043b\u044f \u043f\u0430\u043b\u0443\u0434\u043d\u044f" + ], + "DAY": [ + "\u043d\u044f\u0434\u0437\u0435\u043b\u044f", + "\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a", + "\u0430\u045e\u0442\u043e\u0440\u0430\u043a", + "\u0441\u0435\u0440\u0430\u0434\u0430", + "\u0447\u0430\u0446\u0432\u0435\u0440", + "\u043f\u044f\u0442\u043d\u0456\u0446\u0430", + "\u0441\u0443\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f", + "\u043b\u044e\u0442\u0430\u0433\u0430", + "\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430", + "\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430", + "\u043c\u0430\u044f", + "\u0447\u044d\u0440\u0432\u0435\u043d\u044f", + "\u043b\u0456\u043f\u0435\u043d\u044f", + "\u0436\u043d\u0456\u045e\u043d\u044f", + "\u0432\u0435\u0440\u0430\u0441\u043d\u044f", + "\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430", + "\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430", + "\u0441\u043d\u0435\u0436\u043d\u044f" + ], + "SHORTDAY": [ + "\u043d\u0434", + "\u043f\u043d", + "\u0430\u045e", + "\u0441\u0440", + "\u0447\u0446", + "\u043f\u0442", + "\u0441\u0431" + ], + "SHORTMONTH": [ + "\u0441\u0442\u0443", + "\u043b\u044e\u0442", + "\u0441\u0430\u043a", + "\u043a\u0440\u0430", + "\u043c\u0430\u044f", + "\u0447\u044d\u0440", + "\u043b\u0456\u043f", + "\u0436\u043d\u0456", + "\u0432\u0435\u0440", + "\u043a\u0430\u0441", + "\u043b\u0456\u0441", + "\u0441\u043d\u0435" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d.M.y HH.mm.ss", + "mediumDate": "d.M.y", + "mediumTime": "HH.mm.ss", + "short": "d.M.yy HH.mm", + "shortDate": "d.M.yy", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "BYR", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "be-by", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_be.js b/1.2.30/i18n/angular-locale_be.js new file mode 100644 index 0000000000..fc0e23a517 --- /dev/null +++ b/1.2.30/i18n/angular-locale_be.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0434\u0430 \u043f\u0430\u043b\u0443\u0434\u043d\u044f", + "\u043f\u0430\u0441\u043b\u044f \u043f\u0430\u043b\u0443\u0434\u043d\u044f" + ], + "DAY": [ + "\u043d\u044f\u0434\u0437\u0435\u043b\u044f", + "\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a", + "\u0430\u045e\u0442\u043e\u0440\u0430\u043a", + "\u0441\u0435\u0440\u0430\u0434\u0430", + "\u0447\u0430\u0446\u0432\u0435\u0440", + "\u043f\u044f\u0442\u043d\u0456\u0446\u0430", + "\u0441\u0443\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f", + "\u043b\u044e\u0442\u0430\u0433\u0430", + "\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430", + "\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430", + "\u043c\u0430\u044f", + "\u0447\u044d\u0440\u0432\u0435\u043d\u044f", + "\u043b\u0456\u043f\u0435\u043d\u044f", + "\u0436\u043d\u0456\u045e\u043d\u044f", + "\u0432\u0435\u0440\u0430\u0441\u043d\u044f", + "\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430", + "\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430", + "\u0441\u043d\u0435\u0436\u043d\u044f" + ], + "SHORTDAY": [ + "\u043d\u0434", + "\u043f\u043d", + "\u0430\u045e", + "\u0441\u0440", + "\u0447\u0446", + "\u043f\u0442", + "\u0441\u0431" + ], + "SHORTMONTH": [ + "\u0441\u0442\u0443", + "\u043b\u044e\u0442", + "\u0441\u0430\u043a", + "\u043a\u0440\u0430", + "\u043c\u0430\u044f", + "\u0447\u044d\u0440", + "\u043b\u0456\u043f", + "\u0436\u043d\u0456", + "\u0432\u0435\u0440", + "\u043a\u0430\u0441", + "\u043b\u0456\u0441", + "\u0441\u043d\u0435" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d.M.y HH.mm.ss", + "mediumDate": "d.M.y", + "mediumTime": "HH.mm.ss", + "short": "d.M.yy HH.mm", + "shortDate": "d.M.yy", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "BYR", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "be", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bem-zm.js b/1.2.30/i18n/angular-locale_bem-zm.js new file mode 100644 index 0000000000..4c7c566c09 --- /dev/null +++ b/1.2.30/i18n/angular-locale_bem-zm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "uluchelo", + "akasuba" + ], + "DAY": [ + "Pa Mulungu", + "Palichimo", + "Palichibuli", + "Palichitatu", + "Palichine", + "Palichisano", + "Pachibelushi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Epreo", + "Mei", + "Juni", + "Julai", + "Ogasti", + "Septemba", + "Oktoba", + "Novemba", + "Disemba" + ], + "SHORTDAY": [ + "Pa Mulungu", + "Palichimo", + "Palichibuli", + "Palichitatu", + "Palichine", + "Palichisano", + "Pachibelushi" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Epr", + "Mei", + "Jun", + "Jul", + "Oga", + "Sep", + "Okt", + "Nov", + "Dis" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "ZMW", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "bem-zm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bem.js b/1.2.30/i18n/angular-locale_bem.js new file mode 100644 index 0000000000..113e1cb63f --- /dev/null +++ b/1.2.30/i18n/angular-locale_bem.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "uluchelo", + "akasuba" + ], + "DAY": [ + "Pa Mulungu", + "Palichimo", + "Palichibuli", + "Palichitatu", + "Palichine", + "Palichisano", + "Pachibelushi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Epreo", + "Mei", + "Juni", + "Julai", + "Ogasti", + "Septemba", + "Oktoba", + "Novemba", + "Disemba" + ], + "SHORTDAY": [ + "Pa Mulungu", + "Palichimo", + "Palichibuli", + "Palichitatu", + "Palichine", + "Palichisano", + "Pachibelushi" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Epr", + "Mei", + "Jun", + "Jul", + "Oga", + "Sep", + "Okt", + "Nov", + "Dis" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "ZMW", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "bem", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bez-tz.js b/1.2.30/i18n/angular-locale_bez-tz.js new file mode 100644 index 0000000000..0d509c22ba --- /dev/null +++ b/1.2.30/i18n/angular-locale_bez-tz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "pamilau", + "pamunyi" + ], + "DAY": [ + "pa mulungu", + "pa shahuviluha", + "pa hivili", + "pa hidatu", + "pa hitayi", + "pa hihanu", + "pa shahulembela" + ], + "MONTH": [ + "pa mwedzi gwa hutala", + "pa mwedzi gwa wuvili", + "pa mwedzi gwa wudatu", + "pa mwedzi gwa wutai", + "pa mwedzi gwa wuhanu", + "pa mwedzi gwa sita", + "pa mwedzi gwa saba", + "pa mwedzi gwa nane", + "pa mwedzi gwa tisa", + "pa mwedzi gwa kumi", + "pa mwedzi gwa kumi na moja", + "pa mwedzi gwa kumi na mbili" + ], + "SHORTDAY": [ + "Mul", + "Vil", + "Hiv", + "Hid", + "Hit", + "Hih", + "Lem" + ], + "SHORTMONTH": [ + "Hut", + "Vil", + "Dat", + "Tai", + "Han", + "Sit", + "Sab", + "Nan", + "Tis", + "Kum", + "Kmj", + "Kmb" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "bez-tz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bez.js b/1.2.30/i18n/angular-locale_bez.js new file mode 100644 index 0000000000..078f4eaad4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_bez.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "pamilau", + "pamunyi" + ], + "DAY": [ + "pa mulungu", + "pa shahuviluha", + "pa hivili", + "pa hidatu", + "pa hitayi", + "pa hihanu", + "pa shahulembela" + ], + "MONTH": [ + "pa mwedzi gwa hutala", + "pa mwedzi gwa wuvili", + "pa mwedzi gwa wudatu", + "pa mwedzi gwa wutai", + "pa mwedzi gwa wuhanu", + "pa mwedzi gwa sita", + "pa mwedzi gwa saba", + "pa mwedzi gwa nane", + "pa mwedzi gwa tisa", + "pa mwedzi gwa kumi", + "pa mwedzi gwa kumi na moja", + "pa mwedzi gwa kumi na mbili" + ], + "SHORTDAY": [ + "Mul", + "Vil", + "Hiv", + "Hid", + "Hit", + "Hih", + "Lem" + ], + "SHORTMONTH": [ + "Hut", + "Vil", + "Dat", + "Tai", + "Han", + "Sit", + "Sab", + "Nan", + "Tis", + "Kum", + "Kmj", + "Kmb" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "bez", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bg-bg.js b/1.2.30/i18n/angular-locale_bg-bg.js new file mode 100644 index 0000000000..51c6d8df80 --- /dev/null +++ b/1.2.30/i18n/angular-locale_bg-bg.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u043f\u0440.\u043e\u0431.", + "\u0441\u043b.\u043e\u0431." + ], + "DAY": [ + "\u043d\u0435\u0434\u0435\u043b\u044f", + "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a", + "\u0432\u0442\u043e\u0440\u043d\u0438\u043a", + "\u0441\u0440\u044f\u0434\u0430", + "\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a", + "\u043f\u0435\u0442\u044a\u043a", + "\u0441\u044a\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u044f\u043d\u0443\u0430\u0440\u0438", + "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0438\u043b", + "\u043c\u0430\u0439", + "\u044e\u043d\u0438", + "\u044e\u043b\u0438", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438", + "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438", + "\u043d\u043e\u0435\u043c\u0432\u0440\u0438", + "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438" + ], + "SHORTDAY": [ + "\u043d\u0434", + "\u043f\u043d", + "\u0432\u0442", + "\u0441\u0440", + "\u0447\u0442", + "\u043f\u0442", + "\u0441\u0431" + ], + "SHORTMONTH": [ + "\u044f\u043d.", + "\u0444\u0435\u0432\u0440.", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440.", + "\u043c\u0430\u0439", + "\u044e\u043d\u0438", + "\u044e\u043b\u0438", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043f\u0442.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u0435\u043c.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, d MMMM y '\u0433'.", + "longDate": "d MMMM y '\u0433'.", + "medium": "d.MM.y '\u0433'. H:mm:ss", + "mediumDate": "d.MM.y '\u0433'.", + "mediumTime": "H:mm:ss", + "short": "d.MM.yy H:mm", + "shortDate": "d.MM.yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "lev", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "bg-bg", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bg.js b/1.2.30/i18n/angular-locale_bg.js new file mode 100644 index 0000000000..18de78aa2d --- /dev/null +++ b/1.2.30/i18n/angular-locale_bg.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u043f\u0440.\u043e\u0431.", + "\u0441\u043b.\u043e\u0431." + ], + "DAY": [ + "\u043d\u0435\u0434\u0435\u043b\u044f", + "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a", + "\u0432\u0442\u043e\u0440\u043d\u0438\u043a", + "\u0441\u0440\u044f\u0434\u0430", + "\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a", + "\u043f\u0435\u0442\u044a\u043a", + "\u0441\u044a\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u044f\u043d\u0443\u0430\u0440\u0438", + "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0438\u043b", + "\u043c\u0430\u0439", + "\u044e\u043d\u0438", + "\u044e\u043b\u0438", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438", + "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438", + "\u043d\u043e\u0435\u043c\u0432\u0440\u0438", + "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438" + ], + "SHORTDAY": [ + "\u043d\u0434", + "\u043f\u043d", + "\u0432\u0442", + "\u0441\u0440", + "\u0447\u0442", + "\u043f\u0442", + "\u0441\u0431" + ], + "SHORTMONTH": [ + "\u044f\u043d.", + "\u0444\u0435\u0432\u0440.", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440.", + "\u043c\u0430\u0439", + "\u044e\u043d\u0438", + "\u044e\u043b\u0438", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043f\u0442.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u0435\u043c.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, d MMMM y '\u0433'.", + "longDate": "d MMMM y '\u0433'.", + "medium": "d.MM.y '\u0433'. H:mm:ss", + "mediumDate": "d.MM.y '\u0433'.", + "mediumTime": "H:mm:ss", + "short": "d.MM.yy H:mm", + "shortDate": "d.MM.yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "lev", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "bg", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bm-ml.js b/1.2.30/i18n/angular-locale_bm-ml.js new file mode 100644 index 0000000000..f1c128a6d1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_bm-ml.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "kari", + "nt\u025bn\u025b", + "tarata", + "araba", + "alamisa", + "juma", + "sibiri" + ], + "MONTH": [ + "zanwuye", + "feburuye", + "marisi", + "awirili", + "m\u025b", + "zuw\u025bn", + "zuluye", + "uti", + "s\u025btanburu", + "\u0254kut\u0254buru", + "nowanburu", + "desanburu" + ], + "SHORTDAY": [ + "kar", + "nt\u025b", + "tar", + "ara", + "ala", + "jum", + "sib" + ], + "SHORTMONTH": [ + "zan", + "feb", + "mar", + "awi", + "m\u025b", + "zuw", + "zul", + "uti", + "s\u025bt", + "\u0254ku", + "now", + "des" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "bm-ml", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bm.js b/1.2.30/i18n/angular-locale_bm.js new file mode 100644 index 0000000000..9bfa3c055c --- /dev/null +++ b/1.2.30/i18n/angular-locale_bm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "kari", + "nt\u025bn\u025b", + "tarata", + "araba", + "alamisa", + "juma", + "sibiri" + ], + "MONTH": [ + "zanwuye", + "feburuye", + "marisi", + "awirili", + "m\u025b", + "zuw\u025bn", + "zuluye", + "uti", + "s\u025btanburu", + "\u0254kut\u0254buru", + "nowanburu", + "desanburu" + ], + "SHORTDAY": [ + "kar", + "nt\u025b", + "tar", + "ara", + "ala", + "jum", + "sib" + ], + "SHORTMONTH": [ + "zan", + "feb", + "mar", + "awi", + "m\u025b", + "zuw", + "zul", + "uti", + "s\u025bt", + "\u0254ku", + "now", + "des" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "bm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bn-bd.js b/1.2.30/i18n/angular-locale_bn-bd.js new file mode 100644 index 0000000000..1b6b1cb275 --- /dev/null +++ b/1.2.30/i18n/angular-locale_bn-bd.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "am", + "pm" + ], + "DAY": [ + "\u09b0\u09ac\u09bf\u09ac\u09be\u09b0", + "\u09b8\u09cb\u09ae\u09ac\u09be\u09b0", + "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0", + "\u09ac\u09c1\u09a7\u09ac\u09be\u09b0", + "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0", + "\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0", + "\u09b6\u09a8\u09bf\u09ac\u09be\u09b0" + ], + "MONTH": [ + "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0", + "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0", + "\u09ae\u09be\u09b0\u09cd\u099a", + "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2", + "\u09ae\u09c7", + "\u099c\u09c1\u09a8", + "\u099c\u09c1\u09b2\u09be\u0987", + "\u0986\u0997\u09b8\u09cd\u099f", + "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0", + "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0", + "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0", + "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0" + ], + "SHORTDAY": [ + "\u09b0\u09ac\u09bf", + "\u09b8\u09cb\u09ae", + "\u09ae\u0999\u09cd\u0997\u09b2", + "\u09ac\u09c1\u09a7", + "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf", + "\u09b6\u09c1\u0995\u09cd\u09b0", + "\u09b6\u09a8\u09bf" + ], + "SHORTMONTH": [ + "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0", + "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0", + "\u09ae\u09be\u09b0\u09cd\u099a", + "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2", + "\u09ae\u09c7", + "\u099c\u09c1\u09a8", + "\u099c\u09c1\u09b2\u09be\u0987", + "\u0986\u0997\u09b8\u09cd\u099f", + "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0", + "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0", + "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0", + "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0" + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y h:mm:ss a", + "mediumDate": "d MMM, y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u09f3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "bn-bd", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bn-in.js b/1.2.30/i18n/angular-locale_bn-in.js new file mode 100644 index 0000000000..a55077dd47 --- /dev/null +++ b/1.2.30/i18n/angular-locale_bn-in.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "am", + "pm" + ], + "DAY": [ + "\u09b0\u09ac\u09bf\u09ac\u09be\u09b0", + "\u09b8\u09cb\u09ae\u09ac\u09be\u09b0", + "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0", + "\u09ac\u09c1\u09a7\u09ac\u09be\u09b0", + "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0", + "\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0", + "\u09b6\u09a8\u09bf\u09ac\u09be\u09b0" + ], + "MONTH": [ + "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0", + "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0", + "\u09ae\u09be\u09b0\u09cd\u099a", + "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2", + "\u09ae\u09c7", + "\u099c\u09c1\u09a8", + "\u099c\u09c1\u09b2\u09be\u0987", + "\u0986\u0997\u09b8\u09cd\u099f", + "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0", + "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0", + "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0", + "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0" + ], + "SHORTDAY": [ + "\u09b0\u09ac\u09bf", + "\u09b8\u09cb\u09ae", + "\u09ae\u0999\u09cd\u0997\u09b2", + "\u09ac\u09c1\u09a7", + "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf", + "\u09b6\u09c1\u0995\u09cd\u09b0", + "\u09b6\u09a8\u09bf" + ], + "SHORTMONTH": [ + "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0", + "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0", + "\u09ae\u09be\u09b0\u09cd\u099a", + "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2", + "\u09ae\u09c7", + "\u099c\u09c1\u09a8", + "\u099c\u09c1\u09b2\u09be\u0987", + "\u0986\u0997\u09b8\u09cd\u099f", + "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0", + "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0", + "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0", + "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0" + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y h:mm:ss a", + "mediumDate": "d MMM, y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "bn-in", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bn.js b/1.2.30/i18n/angular-locale_bn.js new file mode 100644 index 0000000000..5a152ac7b5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_bn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "am", + "pm" + ], + "DAY": [ + "\u09b0\u09ac\u09bf\u09ac\u09be\u09b0", + "\u09b8\u09cb\u09ae\u09ac\u09be\u09b0", + "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0", + "\u09ac\u09c1\u09a7\u09ac\u09be\u09b0", + "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0", + "\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0", + "\u09b6\u09a8\u09bf\u09ac\u09be\u09b0" + ], + "MONTH": [ + "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0", + "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0", + "\u09ae\u09be\u09b0\u09cd\u099a", + "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2", + "\u09ae\u09c7", + "\u099c\u09c1\u09a8", + "\u099c\u09c1\u09b2\u09be\u0987", + "\u0986\u0997\u09b8\u09cd\u099f", + "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0", + "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0", + "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0", + "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0" + ], + "SHORTDAY": [ + "\u09b0\u09ac\u09bf", + "\u09b8\u09cb\u09ae", + "\u09ae\u0999\u09cd\u0997\u09b2", + "\u09ac\u09c1\u09a7", + "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf", + "\u09b6\u09c1\u0995\u09cd\u09b0", + "\u09b6\u09a8\u09bf" + ], + "SHORTMONTH": [ + "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0", + "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0", + "\u09ae\u09be\u09b0\u09cd\u099a", + "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2", + "\u09ae\u09c7", + "\u099c\u09c1\u09a8", + "\u099c\u09c1\u09b2\u09be\u0987", + "\u0986\u0997\u09b8\u09cd\u099f", + "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0", + "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0", + "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0", + "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0" + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y h:mm:ss a", + "mediumDate": "d MMM, y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u09f3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "bn", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bo-cn.js b/1.2.30/i18n/angular-locale_bo-cn.js new file mode 100644 index 0000000000..18efa0ff1d --- /dev/null +++ b/1.2.30/i18n/angular-locale_bo-cn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0f66\u0f94\u0f0b\u0f51\u0fb2\u0f7c\u0f0b", + "\u0f55\u0fb1\u0f72\u0f0b\u0f51\u0fb2\u0f7c\u0f0b" + ], + "DAY": [ + "\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f67\u0fb3\u0f42\u0f0b\u0f54\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0f44\u0f66\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b" + ], + "MONTH": [ + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b" + ], + "SHORTDAY": [ + "\u0f49\u0f72\u0f0b\u0f58\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b", + "\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b", + "\u0f67\u0fb3\u0f42\u0f0b\u0f54\u0f0b", + "\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b", + "\u0f66\u0f44\u0f66\u0f0b", + "\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b" + ], + "SHORTMONTH": [ + "\u0f5f\u0fb3\u0f0b\u0f21", + "\u0f5f\u0fb3\u0f0b\u0f22", + "\u0f5f\u0fb3\u0f0b\u0f23", + "\u0f5f\u0fb3\u0f0b\u0f24", + "\u0f5f\u0fb3\u0f0b\u0f25", + "\u0f5f\u0fb3\u0f0b\u0f26", + "\u0f5f\u0fb3\u0f0b\u0f27", + "\u0f5f\u0fb3\u0f0b\u0f28", + "\u0f5f\u0fb3\u0f0b\u0f29", + "\u0f5f\u0fb3\u0f0b\u0f21\u0f20", + "\u0f5f\u0fb3\u0f0b\u0f21\u0f21", + "\u0f5f\u0fb3\u0f0b\u0f21\u0f22" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "\u0f66\u0fa6\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by MMMM\u0f60\u0f72\u0f0b\u0f59\u0f7a\u0f66\u0f0bd\u0f51", + "medium": "y \u0f63\u0f7c\u0f0b\u0f60\u0f72\u0f0bMMM\u0f59\u0f7a\u0f66\u0f0bd HH:mm:ss", + "mediumDate": "y \u0f63\u0f7c\u0f0b\u0f60\u0f72\u0f0bMMM\u0f59\u0f7a\u0f66\u0f0bd", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a5", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "bo-cn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bo-in.js b/1.2.30/i18n/angular-locale_bo-in.js new file mode 100644 index 0000000000..2b7e2b906e --- /dev/null +++ b/1.2.30/i18n/angular-locale_bo-in.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0f66\u0f94\u0f0b\u0f51\u0fb2\u0f7c\u0f0b", + "\u0f55\u0fb1\u0f72\u0f0b\u0f51\u0fb2\u0f7c\u0f0b" + ], + "DAY": [ + "\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f67\u0fb3\u0f42\u0f0b\u0f54\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0f44\u0f66\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b" + ], + "MONTH": [ + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b" + ], + "SHORTDAY": [ + "\u0f49\u0f72\u0f0b\u0f58\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b", + "\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b", + "\u0f67\u0fb3\u0f42\u0f0b\u0f54\u0f0b", + "\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b", + "\u0f66\u0f44\u0f66\u0f0b", + "\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b" + ], + "SHORTMONTH": [ + "\u0f5f\u0fb3\u0f0b\u0f21", + "\u0f5f\u0fb3\u0f0b\u0f22", + "\u0f5f\u0fb3\u0f0b\u0f23", + "\u0f5f\u0fb3\u0f0b\u0f24", + "\u0f5f\u0fb3\u0f0b\u0f25", + "\u0f5f\u0fb3\u0f0b\u0f26", + "\u0f5f\u0fb3\u0f0b\u0f27", + "\u0f5f\u0fb3\u0f0b\u0f28", + "\u0f5f\u0fb3\u0f0b\u0f29", + "\u0f5f\u0fb3\u0f0b\u0f21\u0f20", + "\u0f5f\u0fb3\u0f0b\u0f21\u0f21", + "\u0f5f\u0fb3\u0f0b\u0f21\u0f22" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "\u0f66\u0fa6\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by MMMM\u0f60\u0f72\u0f0b\u0f59\u0f7a\u0f66\u0f0bd\u0f51", + "medium": "y \u0f63\u0f7c\u0f0b\u0f60\u0f72\u0f0bMMM\u0f59\u0f7a\u0f66\u0f0bd HH:mm:ss", + "mediumDate": "y \u0f63\u0f7c\u0f0b\u0f60\u0f72\u0f0bMMM\u0f59\u0f7a\u0f66\u0f0bd", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "bo-in", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bo.js b/1.2.30/i18n/angular-locale_bo.js new file mode 100644 index 0000000000..71f7a372d8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_bo.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0f66\u0f94\u0f0b\u0f51\u0fb2\u0f7c\u0f0b", + "\u0f55\u0fb1\u0f72\u0f0b\u0f51\u0fb2\u0f7c\u0f0b" + ], + "DAY": [ + "\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f67\u0fb3\u0f42\u0f0b\u0f54\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0f44\u0f66\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b" + ], + "MONTH": [ + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b" + ], + "SHORTDAY": [ + "\u0f49\u0f72\u0f0b\u0f58\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b", + "\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b", + "\u0f67\u0fb3\u0f42\u0f0b\u0f54\u0f0b", + "\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b", + "\u0f66\u0f44\u0f66\u0f0b", + "\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b" + ], + "SHORTMONTH": [ + "\u0f5f\u0fb3\u0f0b\u0f21", + "\u0f5f\u0fb3\u0f0b\u0f22", + "\u0f5f\u0fb3\u0f0b\u0f23", + "\u0f5f\u0fb3\u0f0b\u0f24", + "\u0f5f\u0fb3\u0f0b\u0f25", + "\u0f5f\u0fb3\u0f0b\u0f26", + "\u0f5f\u0fb3\u0f0b\u0f27", + "\u0f5f\u0fb3\u0f0b\u0f28", + "\u0f5f\u0fb3\u0f0b\u0f29", + "\u0f5f\u0fb3\u0f0b\u0f21\u0f20", + "\u0f5f\u0fb3\u0f0b\u0f21\u0f21", + "\u0f5f\u0fb3\u0f0b\u0f21\u0f22" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "\u0f66\u0fa6\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by MMMM\u0f60\u0f72\u0f0b\u0f59\u0f7a\u0f66\u0f0bd\u0f51", + "medium": "y \u0f63\u0f7c\u0f0b\u0f60\u0f72\u0f0bMMM\u0f59\u0f7a\u0f66\u0f0bd HH:mm:ss", + "mediumDate": "y \u0f63\u0f7c\u0f0b\u0f60\u0f72\u0f0bMMM\u0f59\u0f7a\u0f66\u0f0bd", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a5", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "bo", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_br-fr.js b/1.2.30/i18n/angular-locale_br-fr.js new file mode 100644 index 0000000000..61df28e9e0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_br-fr.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sul", + "Lun", + "Meurzh", + "Merc\u02bcher", + "Yaou", + "Gwener", + "Sadorn" + ], + "MONTH": [ + "Genver", + "C\u02bchwevrer", + "Meurzh", + "Ebrel", + "Mae", + "Mezheven", + "Gouere", + "Eost", + "Gwengolo", + "Here", + "Du", + "Kerzu" + ], + "SHORTDAY": [ + "sul", + "lun", + "meu.", + "mer.", + "yaou", + "gwe.", + "sad." + ], + "SHORTMONTH": [ + "Gen", + "C\u02bchwe", + "Meur", + "Ebr", + "Mae", + "Mezh", + "Goue", + "Eost", + "Gwen", + "Here", + "Du", + "Ker" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "br-fr", + "pluralCat": function (n, opt_precision) { if (n % 10 == 1 && n % 100 != 11 && n % 100 != 71 && n % 100 != 91) { return PLURAL_CATEGORY.ONE; } if (n % 10 == 2 && n % 100 != 12 && n % 100 != 72 && n % 100 != 92) { return PLURAL_CATEGORY.TWO; } if ((n % 10 >= 3 && n % 10 <= 4 || n % 10 == 9) && (n % 100 < 10 || n % 100 > 19) && (n % 100 < 70 || n % 100 > 79) && (n % 100 < 90 || n % 100 > 99)) { return PLURAL_CATEGORY.FEW; } if (n != 0 && n % 1000000 == 0) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_br.js b/1.2.30/i18n/angular-locale_br.js new file mode 100644 index 0000000000..b6b18bfefb --- /dev/null +++ b/1.2.30/i18n/angular-locale_br.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sul", + "Lun", + "Meurzh", + "Merc\u02bcher", + "Yaou", + "Gwener", + "Sadorn" + ], + "MONTH": [ + "Genver", + "C\u02bchwevrer", + "Meurzh", + "Ebrel", + "Mae", + "Mezheven", + "Gouere", + "Eost", + "Gwengolo", + "Here", + "Du", + "Kerzu" + ], + "SHORTDAY": [ + "sul", + "lun", + "meu.", + "mer.", + "yaou", + "gwe.", + "sad." + ], + "SHORTMONTH": [ + "Gen", + "C\u02bchwe", + "Meur", + "Ebr", + "Mae", + "Mezh", + "Goue", + "Eost", + "Gwen", + "Here", + "Du", + "Ker" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "br", + "pluralCat": function (n, opt_precision) { if (n % 10 == 1 && n % 100 != 11 && n % 100 != 71 && n % 100 != 91) { return PLURAL_CATEGORY.ONE; } if (n % 10 == 2 && n % 100 != 12 && n % 100 != 72 && n % 100 != 92) { return PLURAL_CATEGORY.TWO; } if ((n % 10 >= 3 && n % 10 <= 4 || n % 10 == 9) && (n % 100 < 10 || n % 100 > 19) && (n % 100 < 70 || n % 100 > 79) && (n % 100 < 90 || n % 100 > 99)) { return PLURAL_CATEGORY.FEW; } if (n != 0 && n % 1000000 == 0) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_brx-in.js b/1.2.30/i18n/angular-locale_brx-in.js new file mode 100644 index 0000000000..be264acd12 --- /dev/null +++ b/1.2.30/i18n/angular-locale_brx-in.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u092b\u0941\u0902", + "\u092c\u0947\u0932\u093e\u0938\u0947" + ], + "DAY": [ + "\u0930\u092c\u093f\u092c\u093e\u0930", + "\u0938\u092e\u092c\u093e\u0930", + "\u092e\u0902\u0917\u0932\u092c\u093e\u0930", + "\u092c\u0941\u0926\u092c\u093e\u0930", + "\u092c\u093f\u0938\u0925\u093f\u092c\u093e\u0930", + "\u0938\u0941\u0916\u0941\u0930\u092c\u093e\u0930", + "\u0938\u0941\u0928\u093f\u092c\u093e\u0930" + ], + "MONTH": [ + "\u091c\u093e\u0928\u0941\u0935\u093e\u0930\u0940", + "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940", + "\u092e\u093e\u0930\u094d\u0938", + "\u090f\u092b\u094d\u0930\u093f\u0932", + "\u092e\u0947", + "\u091c\u0941\u0928", + "\u091c\u0941\u0932\u093e\u0907", + "\u0906\u0917\u0938\u094d\u0925", + "\u0938\u0947\u092c\u0925\u0947\u091c\u094d\u092c\u093c\u0930", + "\u0905\u0916\u0925\u092c\u0930", + "\u0928\u092c\u0947\u091c\u094d\u092c\u093c\u0930", + "\u0926\u093f\u0938\u0947\u091c\u094d\u092c\u093c\u0930" + ], + "SHORTDAY": [ + "\u0930\u092c\u093f", + "\u0938\u092e", + "\u092e\u0902\u0917\u0932", + "\u092c\u0941\u0926", + "\u092c\u093f\u0938\u0925\u093f", + "\u0938\u0941\u0916\u0941\u0930", + "\u0938\u0941\u0928\u093f" + ], + "SHORTMONTH": [ + "\u091c\u093e\u0928\u0941\u0935\u093e\u0930\u0940", + "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940", + "\u092e\u093e\u0930\u094d\u0938", + "\u090f\u092b\u094d\u0930\u093f\u0932", + "\u092e\u0947", + "\u091c\u0941\u0928", + "\u091c\u0941\u0932\u093e\u0907", + "\u0906\u0917\u0938\u094d\u0925", + "\u0938\u0947\u092c\u0925\u0947\u091c\u094d\u092c\u093c\u0930", + "\u0905\u0916\u0925\u092c\u0930", + "\u0928\u092c\u0947\u091c\u094d\u092c\u093c\u0930", + "\u0926\u093f\u0938\u0947\u091c\u094d\u092c\u093c\u0930" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "brx-in", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_brx.js b/1.2.30/i18n/angular-locale_brx.js new file mode 100644 index 0000000000..de1be0a421 --- /dev/null +++ b/1.2.30/i18n/angular-locale_brx.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u092b\u0941\u0902", + "\u092c\u0947\u0932\u093e\u0938\u0947" + ], + "DAY": [ + "\u0930\u092c\u093f\u092c\u093e\u0930", + "\u0938\u092e\u092c\u093e\u0930", + "\u092e\u0902\u0917\u0932\u092c\u093e\u0930", + "\u092c\u0941\u0926\u092c\u093e\u0930", + "\u092c\u093f\u0938\u0925\u093f\u092c\u093e\u0930", + "\u0938\u0941\u0916\u0941\u0930\u092c\u093e\u0930", + "\u0938\u0941\u0928\u093f\u092c\u093e\u0930" + ], + "MONTH": [ + "\u091c\u093e\u0928\u0941\u0935\u093e\u0930\u0940", + "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940", + "\u092e\u093e\u0930\u094d\u0938", + "\u090f\u092b\u094d\u0930\u093f\u0932", + "\u092e\u0947", + "\u091c\u0941\u0928", + "\u091c\u0941\u0932\u093e\u0907", + "\u0906\u0917\u0938\u094d\u0925", + "\u0938\u0947\u092c\u0925\u0947\u091c\u094d\u092c\u093c\u0930", + "\u0905\u0916\u0925\u092c\u0930", + "\u0928\u092c\u0947\u091c\u094d\u092c\u093c\u0930", + "\u0926\u093f\u0938\u0947\u091c\u094d\u092c\u093c\u0930" + ], + "SHORTDAY": [ + "\u0930\u092c\u093f", + "\u0938\u092e", + "\u092e\u0902\u0917\u0932", + "\u092c\u0941\u0926", + "\u092c\u093f\u0938\u0925\u093f", + "\u0938\u0941\u0916\u0941\u0930", + "\u0938\u0941\u0928\u093f" + ], + "SHORTMONTH": [ + "\u091c\u093e\u0928\u0941\u0935\u093e\u0930\u0940", + "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940", + "\u092e\u093e\u0930\u094d\u0938", + "\u090f\u092b\u094d\u0930\u093f\u0932", + "\u092e\u0947", + "\u091c\u0941\u0928", + "\u091c\u0941\u0932\u093e\u0907", + "\u0906\u0917\u0938\u094d\u0925", + "\u0938\u0947\u092c\u0925\u0947\u091c\u094d\u092c\u093c\u0930", + "\u0905\u0916\u0925\u092c\u0930", + "\u0928\u092c\u0947\u091c\u094d\u092c\u093c\u0930", + "\u0926\u093f\u0938\u0947\u091c\u094d\u092c\u093c\u0930" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "brx", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bs-cyrl-ba.js b/1.2.30/i18n/angular-locale_bs-cyrl-ba.js new file mode 100644 index 0000000000..e3df517625 --- /dev/null +++ b/1.2.30/i18n/angular-locale_bs-cyrl-ba.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435", + "\u043f\u043e\u043f\u043e\u0434\u043d\u0435" + ], + "DAY": [ + "\u043d\u0435\u0434\u0435\u0459\u0430", + "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a", + "\u0443\u0442\u043e\u0440\u0430\u043a", + "\u0441\u0440\u0438\u0458\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a", + "\u043f\u0435\u0442\u0430\u043a", + "\u0441\u0443\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0458\u0430\u043d\u0443\u0430\u0440", + "\u0444\u0435\u0431\u0440\u0443\u0430\u0440", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0438\u043b", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d\u0438", + "\u0458\u0443\u043b\u0438", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440", + "\u043e\u043a\u0442\u043e\u0431\u0430\u0440", + "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440", + "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440" + ], + "SHORTDAY": [ + "\u043d\u0435\u0434", + "\u043f\u043e\u043d", + "\u0443\u0442\u043e", + "\u0441\u0440\u0438", + "\u0447\u0435\u0442", + "\u043f\u0435\u0442", + "\u0441\u0443\u0431" + ], + "SHORTMONTH": [ + "\u0458\u0430\u043d", + "\u0444\u0435\u0431", + "\u043c\u0430\u0440", + "\u0430\u043f\u0440", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d", + "\u0458\u0443\u043b", + "\u0430\u0432\u0433", + "\u0441\u0435\u043f", + "\u043e\u043a\u0442", + "\u043d\u043e\u0432", + "\u0434\u0435\u0446" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "dd. MMMM y.", + "medium": "dd.MM.y. HH:mm:ss", + "mediumDate": "dd.MM.y.", + "mediumTime": "HH:mm:ss", + "short": "d.M.yy. HH:mm", + "shortDate": "d.M.yy.", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "KM", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "bs-cyrl-ba", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bs-cyrl.js b/1.2.30/i18n/angular-locale_bs-cyrl.js new file mode 100644 index 0000000000..038b039ed4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_bs-cyrl.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435", + "\u043f\u043e\u043f\u043e\u0434\u043d\u0435" + ], + "DAY": [ + "\u043d\u0435\u0434\u0435\u0459\u0430", + "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a", + "\u0443\u0442\u043e\u0440\u0430\u043a", + "\u0441\u0440\u0438\u0458\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a", + "\u043f\u0435\u0442\u0430\u043a", + "\u0441\u0443\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0458\u0430\u043d\u0443\u0430\u0440", + "\u0444\u0435\u0431\u0440\u0443\u0430\u0440", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0438\u043b", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d\u0438", + "\u0458\u0443\u043b\u0438", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440", + "\u043e\u043a\u0442\u043e\u0431\u0430\u0440", + "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440", + "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440" + ], + "SHORTDAY": [ + "\u043d\u0435\u0434", + "\u043f\u043e\u043d", + "\u0443\u0442\u043e", + "\u0441\u0440\u0438", + "\u0447\u0435\u0442", + "\u043f\u0435\u0442", + "\u0441\u0443\u0431" + ], + "SHORTMONTH": [ + "\u0458\u0430\u043d", + "\u0444\u0435\u0431", + "\u043c\u0430\u0440", + "\u0430\u043f\u0440", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d", + "\u0458\u0443\u043b", + "\u0430\u0432\u0433", + "\u0441\u0435\u043f", + "\u043e\u043a\u0442", + "\u043d\u043e\u0432", + "\u0434\u0435\u0446" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "dd. MMMM y.", + "medium": "dd.MM.y. HH:mm:ss", + "mediumDate": "dd.MM.y.", + "mediumTime": "HH:mm:ss", + "short": "d.M.yy. HH:mm", + "shortDate": "d.M.yy.", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "bs-cyrl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bs-latn-ba.js b/1.2.30/i18n/angular-locale_bs-latn-ba.js new file mode 100644 index 0000000000..461ef2e027 --- /dev/null +++ b/1.2.30/i18n/angular-locale_bs-latn-ba.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "pre podne", + "popodne" + ], + "DAY": [ + "nedjelja", + "ponedjeljak", + "utorak", + "srijeda", + "\u010detvrtak", + "petak", + "subota" + ], + "MONTH": [ + "januar", + "februar", + "mart", + "april", + "maj", + "juni", + "juli", + "avgust", + "septembar", + "oktobar", + "novembar", + "decembar" + ], + "SHORTDAY": [ + "ned", + "pon", + "uto", + "sri", + "\u010det", + "pet", + "sub" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "avg", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "dd. MMMM y.", + "medium": "dd.MM.y. HH:mm:ss", + "mediumDate": "dd.MM.y.", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy. HH:mm", + "shortDate": "dd.MM.yy.", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "KM", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "bs-latn-ba", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bs-latn.js b/1.2.30/i18n/angular-locale_bs-latn.js new file mode 100644 index 0000000000..65f402a974 --- /dev/null +++ b/1.2.30/i18n/angular-locale_bs-latn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "pre podne", + "popodne" + ], + "DAY": [ + "nedjelja", + "ponedjeljak", + "utorak", + "srijeda", + "\u010detvrtak", + "petak", + "subota" + ], + "MONTH": [ + "januar", + "februar", + "mart", + "april", + "maj", + "juni", + "juli", + "avgust", + "septembar", + "oktobar", + "novembar", + "decembar" + ], + "SHORTDAY": [ + "ned", + "pon", + "uto", + "sri", + "\u010det", + "pet", + "sub" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "avg", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "dd. MMMM y.", + "medium": "dd.MM.y. HH:mm:ss", + "mediumDate": "dd.MM.y.", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy. HH:mm", + "shortDate": "dd.MM.yy.", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "bs-latn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_bs.js b/1.2.30/i18n/angular-locale_bs.js new file mode 100644 index 0000000000..7fa1087826 --- /dev/null +++ b/1.2.30/i18n/angular-locale_bs.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "pre podne", + "popodne" + ], + "DAY": [ + "nedjelja", + "ponedjeljak", + "utorak", + "srijeda", + "\u010detvrtak", + "petak", + "subota" + ], + "MONTH": [ + "januar", + "februar", + "mart", + "april", + "maj", + "juni", + "juli", + "avgust", + "septembar", + "oktobar", + "novembar", + "decembar" + ], + "SHORTDAY": [ + "ned", + "pon", + "uto", + "sri", + "\u010det", + "pet", + "sub" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "avg", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "dd. MMMM y.", + "medium": "dd.MM.y. HH:mm:ss", + "mediumDate": "dd.MM.y.", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy. HH:mm", + "shortDate": "dd.MM.yy.", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "KM", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "bs", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_byn-er.js b/1.2.30/i18n/angular-locale_byn-er.js new file mode 100644 index 0000000000..a678c93200 --- /dev/null +++ b/1.2.30/i18n/angular-locale_byn-er.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u134b\u12f1\u1235 \u1303\u1265", + "\u134b\u12f1\u1235 \u12f0\u121d\u1262" + ], + "DAY": [ + "\u1230\u1295\u1260\u122d \u1245\u12f3\u12c5", + "\u1230\u1291", + "\u1230\u120a\u131d", + "\u1208\u1313 \u12c8\u122a \u1208\u1265\u12cb", + "\u12a3\u121d\u12f5", + "\u12a3\u122d\u1265", + "\u1230\u1295\u1260\u122d \u123d\u1313\u12c5" + ], + "MONTH": [ + "\u120d\u12f0\u1275\u122a", + "\u12ab\u1265\u12bd\u1265\u1272", + "\u12ad\u1265\u120b", + "\u134b\u1305\u12ba\u122a", + "\u12ad\u1262\u1245\u122a", + "\u121d\u12aa\u12a4\u120d \u1275\u131f\u1292\u122a", + "\u12b0\u122d\u12a9", + "\u121b\u122d\u12eb\u121d \u1275\u122a", + "\u12eb\u12b8\u1292 \u1218\u1233\u1245\u1208\u122a", + "\u1218\u1270\u1209", + "\u121d\u12aa\u12a4\u120d \u1218\u123d\u12c8\u122a", + "\u1270\u1215\u1233\u1235\u122a" + ], + "SHORTDAY": [ + "\u1230/\u1245", + "\u1230\u1291", + "\u1230\u120a\u131d", + "\u1208\u1313", + "\u12a3\u121d\u12f5", + "\u12a3\u122d\u1265", + "\u1230/\u123d" + ], + "SHORTMONTH": [ + "\u120d\u12f0\u1275", + "\u12ab\u1265\u12bd", + "\u12ad\u1265\u120b", + "\u134b\u1305\u12ba", + "\u12ad\u1262\u1245", + "\u121d/\u1275", + "\u12b0\u122d", + "\u121b\u122d\u12eb", + "\u12eb\u12b8\u1292", + "\u1218\u1270\u1209", + "\u121d/\u121d", + "\u1270\u1215\u1233" + ], + "fullDate": "EEEE\u1361 dd MMMM \u130d\u122d\u130b y G", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Nfk", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "byn-er", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_byn.js b/1.2.30/i18n/angular-locale_byn.js new file mode 100644 index 0000000000..cf1e4a437c --- /dev/null +++ b/1.2.30/i18n/angular-locale_byn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u134b\u12f1\u1235 \u1303\u1265", + "\u134b\u12f1\u1235 \u12f0\u121d\u1262" + ], + "DAY": [ + "\u1230\u1295\u1260\u122d \u1245\u12f3\u12c5", + "\u1230\u1291", + "\u1230\u120a\u131d", + "\u1208\u1313 \u12c8\u122a \u1208\u1265\u12cb", + "\u12a3\u121d\u12f5", + "\u12a3\u122d\u1265", + "\u1230\u1295\u1260\u122d \u123d\u1313\u12c5" + ], + "MONTH": [ + "\u120d\u12f0\u1275\u122a", + "\u12ab\u1265\u12bd\u1265\u1272", + "\u12ad\u1265\u120b", + "\u134b\u1305\u12ba\u122a", + "\u12ad\u1262\u1245\u122a", + "\u121d\u12aa\u12a4\u120d \u1275\u131f\u1292\u122a", + "\u12b0\u122d\u12a9", + "\u121b\u122d\u12eb\u121d \u1275\u122a", + "\u12eb\u12b8\u1292 \u1218\u1233\u1245\u1208\u122a", + "\u1218\u1270\u1209", + "\u121d\u12aa\u12a4\u120d \u1218\u123d\u12c8\u122a", + "\u1270\u1215\u1233\u1235\u122a" + ], + "SHORTDAY": [ + "\u1230/\u1245", + "\u1230\u1291", + "\u1230\u120a\u131d", + "\u1208\u1313", + "\u12a3\u121d\u12f5", + "\u12a3\u122d\u1265", + "\u1230/\u123d" + ], + "SHORTMONTH": [ + "\u120d\u12f0\u1275", + "\u12ab\u1265\u12bd", + "\u12ad\u1265\u120b", + "\u134b\u1305\u12ba", + "\u12ad\u1262\u1245", + "\u121d/\u1275", + "\u12b0\u122d", + "\u121b\u122d\u12eb", + "\u12eb\u12b8\u1292", + "\u1218\u1270\u1209", + "\u121d/\u121d", + "\u1270\u1215\u1233" + ], + "fullDate": "EEEE\u1361 dd MMMM \u130d\u122d\u130b y G", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Nfk", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "byn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ca-ad.js b/1.2.30/i18n/angular-locale_ca-ad.js new file mode 100644 index 0000000000..b86cc88d75 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ca-ad.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "diumenge", + "dilluns", + "dimarts", + "dimecres", + "dijous", + "divendres", + "dissabte" + ], + "MONTH": [ + "gener", + "febrer", + "mar\u00e7", + "abril", + "maig", + "juny", + "juliol", + "agost", + "setembre", + "octubre", + "novembre", + "desembre" + ], + "SHORTDAY": [ + "dg.", + "dl.", + "dt.", + "dc.", + "dj.", + "dv.", + "ds." + ], + "SHORTMONTH": [ + "gen.", + "feb.", + "mar\u00e7", + "abr.", + "maig", + "juny", + "jul.", + "ag.", + "set.", + "oct.", + "nov.", + "des." + ], + "fullDate": "EEEE, d MMMM 'de' y", + "longDate": "d MMMM 'de' y", + "medium": "dd/MM/y H:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ca-ad", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ca-es-valencia.js b/1.2.30/i18n/angular-locale_ca-es-valencia.js new file mode 100644 index 0000000000..91f4e39931 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ca-es-valencia.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "diumenge", + "dilluns", + "dimarts", + "dimecres", + "dijous", + "divendres", + "dissabte" + ], + "MONTH": [ + "gener", + "febrer", + "mar\u00e7", + "abril", + "maig", + "juny", + "juliol", + "agost", + "setembre", + "octubre", + "novembre", + "desembre" + ], + "SHORTDAY": [ + "dg.", + "dl.", + "dt.", + "dc.", + "dj.", + "dv.", + "ds." + ], + "SHORTMONTH": [ + "gen.", + "feb.", + "mar\u00e7", + "abr.", + "maig", + "juny", + "jul.", + "ag.", + "set.", + "oct.", + "nov.", + "des." + ], + "fullDate": "EEEE, d MMMM 'de' y", + "longDate": "d MMMM 'de' y", + "medium": "dd/MM/y H:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ca-es-valencia", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ca-es.js b/1.2.30/i18n/angular-locale_ca-es.js new file mode 100644 index 0000000000..95540c3974 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ca-es.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "diumenge", + "dilluns", + "dimarts", + "dimecres", + "dijous", + "divendres", + "dissabte" + ], + "MONTH": [ + "gener", + "febrer", + "mar\u00e7", + "abril", + "maig", + "juny", + "juliol", + "agost", + "setembre", + "octubre", + "novembre", + "desembre" + ], + "SHORTDAY": [ + "dg.", + "dl.", + "dt.", + "dc.", + "dj.", + "dv.", + "ds." + ], + "SHORTMONTH": [ + "gen.", + "feb.", + "mar\u00e7", + "abr.", + "maig", + "juny", + "jul.", + "ag.", + "set.", + "oct.", + "nov.", + "des." + ], + "fullDate": "EEEE, d MMMM 'de' y", + "longDate": "d MMMM 'de' y", + "medium": "dd/MM/y H:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ca-es", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ca-fr.js b/1.2.30/i18n/angular-locale_ca-fr.js new file mode 100644 index 0000000000..1ab024eedc --- /dev/null +++ b/1.2.30/i18n/angular-locale_ca-fr.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "diumenge", + "dilluns", + "dimarts", + "dimecres", + "dijous", + "divendres", + "dissabte" + ], + "MONTH": [ + "gener", + "febrer", + "mar\u00e7", + "abril", + "maig", + "juny", + "juliol", + "agost", + "setembre", + "octubre", + "novembre", + "desembre" + ], + "SHORTDAY": [ + "dg.", + "dl.", + "dt.", + "dc.", + "dj.", + "dv.", + "ds." + ], + "SHORTMONTH": [ + "gen.", + "feb.", + "mar\u00e7", + "abr.", + "maig", + "juny", + "jul.", + "ag.", + "set.", + "oct.", + "nov.", + "des." + ], + "fullDate": "EEEE, d MMMM 'de' y", + "longDate": "d MMMM 'de' y", + "medium": "dd/MM/y H:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ca-fr", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ca-it.js b/1.2.30/i18n/angular-locale_ca-it.js new file mode 100644 index 0000000000..cdd68ced16 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ca-it.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "diumenge", + "dilluns", + "dimarts", + "dimecres", + "dijous", + "divendres", + "dissabte" + ], + "MONTH": [ + "gener", + "febrer", + "mar\u00e7", + "abril", + "maig", + "juny", + "juliol", + "agost", + "setembre", + "octubre", + "novembre", + "desembre" + ], + "SHORTDAY": [ + "dg.", + "dl.", + "dt.", + "dc.", + "dj.", + "dv.", + "ds." + ], + "SHORTMONTH": [ + "gen.", + "feb.", + "mar\u00e7", + "abr.", + "maig", + "juny", + "jul.", + "ag.", + "set.", + "oct.", + "nov.", + "des." + ], + "fullDate": "EEEE, d MMMM 'de' y", + "longDate": "d MMMM 'de' y", + "medium": "dd/MM/y H:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ca-it", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ca.js b/1.2.30/i18n/angular-locale_ca.js new file mode 100644 index 0000000000..368b23ad8f --- /dev/null +++ b/1.2.30/i18n/angular-locale_ca.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "diumenge", + "dilluns", + "dimarts", + "dimecres", + "dijous", + "divendres", + "dissabte" + ], + "MONTH": [ + "gener", + "febrer", + "mar\u00e7", + "abril", + "maig", + "juny", + "juliol", + "agost", + "setembre", + "octubre", + "novembre", + "desembre" + ], + "SHORTDAY": [ + "dg.", + "dl.", + "dt.", + "dc.", + "dj.", + "dv.", + "ds." + ], + "SHORTMONTH": [ + "gen.", + "feb.", + "mar\u00e7", + "abr.", + "maig", + "juny", + "jul.", + "ag.", + "set.", + "oct.", + "nov.", + "des." + ], + "fullDate": "EEEE, d MMMM 'de' y", + "longDate": "d MMMM 'de' y", + "medium": "dd/MM/y H:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ca", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_cgg-ug.js b/1.2.30/i18n/angular-locale_cgg-ug.js new file mode 100644 index 0000000000..376ff890ad --- /dev/null +++ b/1.2.30/i18n/angular-locale_cgg-ug.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sande", + "Orwokubanza", + "Orwakabiri", + "Orwakashatu", + "Orwakana", + "Orwakataano", + "Orwamukaaga" + ], + "MONTH": [ + "Okwokubanza", + "Okwakabiri", + "Okwakashatu", + "Okwakana", + "Okwakataana", + "Okwamukaaga", + "Okwamushanju", + "Okwamunaana", + "Okwamwenda", + "Okwaikumi", + "Okwaikumi na kumwe", + "Okwaikumi na ibiri" + ], + "SHORTDAY": [ + "SAN", + "ORK", + "OKB", + "OKS", + "OKN", + "OKT", + "OMK" + ], + "SHORTMONTH": [ + "KBZ", + "KBR", + "KST", + "KKN", + "KTN", + "KMK", + "KMS", + "KMN", + "KMW", + "KKM", + "KNK", + "KNB" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "UGX", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "cgg-ug", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_cgg.js b/1.2.30/i18n/angular-locale_cgg.js new file mode 100644 index 0000000000..e05678da8b --- /dev/null +++ b/1.2.30/i18n/angular-locale_cgg.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sande", + "Orwokubanza", + "Orwakabiri", + "Orwakashatu", + "Orwakana", + "Orwakataano", + "Orwamukaaga" + ], + "MONTH": [ + "Okwokubanza", + "Okwakabiri", + "Okwakashatu", + "Okwakana", + "Okwakataana", + "Okwamukaaga", + "Okwamushanju", + "Okwamunaana", + "Okwamwenda", + "Okwaikumi", + "Okwaikumi na kumwe", + "Okwaikumi na ibiri" + ], + "SHORTDAY": [ + "SAN", + "ORK", + "OKB", + "OKS", + "OKN", + "OKT", + "OMK" + ], + "SHORTMONTH": [ + "KBZ", + "KBR", + "KST", + "KKN", + "KTN", + "KMK", + "KMS", + "KMN", + "KMW", + "KKM", + "KNK", + "KNB" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "UGX", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "cgg", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_chr-us.js b/1.2.30/i18n/angular-locale_chr-us.js new file mode 100644 index 0000000000..cc2f8a6b12 --- /dev/null +++ b/1.2.30/i18n/angular-locale_chr-us.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u13cc\u13be\u13b4", + "\u13d2\u13af\u13f1\u13a2\u13d7\u13e2" + ], + "DAY": [ + "\u13a4\u13be\u13d9\u13d3\u13c6\u13cd\u13ac", + "\u13a4\u13be\u13d9\u13d3\u13c9\u13c5\u13af", + "\u13d4\u13b5\u13c1\u13a2\u13a6", + "\u13e6\u13a2\u13c1\u13a2\u13a6", + "\u13c5\u13a9\u13c1\u13a2\u13a6", + "\u13e7\u13be\u13a9\u13b6\u13cd\u13d7", + "\u13a4\u13be\u13d9\u13d3\u13c8\u13d5\u13be" + ], + "MONTH": [ + "\u13a4\u13c3\u13b8\u13d4\u13c5", + "\u13a7\u13a6\u13b5", + "\u13a0\u13c5\u13f1", + "\u13a7\u13ec\u13c2", + "\u13a0\u13c2\u13cd\u13ac\u13d8", + "\u13d5\u13ad\u13b7\u13f1", + "\u13ab\u13f0\u13c9\u13c2", + "\u13a6\u13b6\u13c2", + "\u13da\u13b5\u13cd\u13d7", + "\u13da\u13c2\u13c5\u13d7", + "\u13c5\u13d3\u13d5\u13c6", + "\u13a5\u13cd\u13a9\u13f1" + ], + "SHORTDAY": [ + "\u13c6\u13cd\u13ac", + "\u13c9\u13c5\u13af", + "\u13d4\u13b5\u13c1", + "\u13e6\u13a2\u13c1", + "\u13c5\u13a9\u13c1", + "\u13e7\u13be\u13a9", + "\u13c8\u13d5\u13be" + ], + "SHORTMONTH": [ + "\u13a4\u13c3", + "\u13a7\u13a6", + "\u13a0\u13c5", + "\u13a7\u13ec", + "\u13a0\u13c2", + "\u13d5\u13ad", + "\u13ab\u13f0", + "\u13a6\u13b6", + "\u13da\u13b5", + "\u13da\u13c2", + "\u13c5\u13d3", + "\u13a5\u13cd" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "chr-us", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_chr.js b/1.2.30/i18n/angular-locale_chr.js new file mode 100644 index 0000000000..b0cc5d66e5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_chr.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u13cc\u13be\u13b4", + "\u13d2\u13af\u13f1\u13a2\u13d7\u13e2" + ], + "DAY": [ + "\u13a4\u13be\u13d9\u13d3\u13c6\u13cd\u13ac", + "\u13a4\u13be\u13d9\u13d3\u13c9\u13c5\u13af", + "\u13d4\u13b5\u13c1\u13a2\u13a6", + "\u13e6\u13a2\u13c1\u13a2\u13a6", + "\u13c5\u13a9\u13c1\u13a2\u13a6", + "\u13e7\u13be\u13a9\u13b6\u13cd\u13d7", + "\u13a4\u13be\u13d9\u13d3\u13c8\u13d5\u13be" + ], + "MONTH": [ + "\u13a4\u13c3\u13b8\u13d4\u13c5", + "\u13a7\u13a6\u13b5", + "\u13a0\u13c5\u13f1", + "\u13a7\u13ec\u13c2", + "\u13a0\u13c2\u13cd\u13ac\u13d8", + "\u13d5\u13ad\u13b7\u13f1", + "\u13ab\u13f0\u13c9\u13c2", + "\u13a6\u13b6\u13c2", + "\u13da\u13b5\u13cd\u13d7", + "\u13da\u13c2\u13c5\u13d7", + "\u13c5\u13d3\u13d5\u13c6", + "\u13a5\u13cd\u13a9\u13f1" + ], + "SHORTDAY": [ + "\u13c6\u13cd\u13ac", + "\u13c9\u13c5\u13af", + "\u13d4\u13b5\u13c1", + "\u13e6\u13a2\u13c1", + "\u13c5\u13a9\u13c1", + "\u13e7\u13be\u13a9", + "\u13c8\u13d5\u13be" + ], + "SHORTMONTH": [ + "\u13a4\u13c3", + "\u13a7\u13a6", + "\u13a0\u13c5", + "\u13a7\u13ec", + "\u13a0\u13c2", + "\u13d5\u13ad", + "\u13ab\u13f0", + "\u13a6\u13b6", + "\u13da\u13b5", + "\u13da\u13c2", + "\u13c5\u13d3", + "\u13a5\u13cd" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "chr", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ckb-arab-iq.js b/1.2.30/i18n/angular-locale_ckb-arab-iq.js new file mode 100644 index 0000000000..b936313a53 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ckb-arab-iq.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0628.\u0646", + "\u062f.\u0646" + ], + "DAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "MONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "SHORTDAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "SHORTMONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "d\u06cc MMMM\u06cc y", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ckb-arab-iq", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ckb-arab-ir.js b/1.2.30/i18n/angular-locale_ckb-arab-ir.js new file mode 100644 index 0000000000..a32816ab6c --- /dev/null +++ b/1.2.30/i18n/angular-locale_ckb-arab-ir.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0628.\u0646", + "\u062f.\u0646" + ], + "DAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "MONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "SHORTDAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "SHORTMONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "d\u06cc MMMM\u06cc y", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rial", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ckb-arab-ir", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ckb-arab.js b/1.2.30/i18n/angular-locale_ckb-arab.js new file mode 100644 index 0000000000..34a5a3c488 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ckb-arab.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0628.\u0646", + "\u062f.\u0646" + ], + "DAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "MONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "SHORTDAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "SHORTMONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "d\u06cc MMMM\u06cc y", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ckb-arab", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ckb-iq.js b/1.2.30/i18n/angular-locale_ckb-iq.js new file mode 100644 index 0000000000..28ba257c86 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ckb-iq.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0628.\u0646", + "\u062f.\u0646" + ], + "DAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "MONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "SHORTDAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "SHORTMONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "d\u06cc MMMM\u06cc y", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ckb-iq", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ckb-ir.js b/1.2.30/i18n/angular-locale_ckb-ir.js new file mode 100644 index 0000000000..5f663d21e3 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ckb-ir.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0628.\u0646", + "\u062f.\u0646" + ], + "DAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "MONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "SHORTDAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "SHORTMONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "d\u06cc MMMM\u06cc y", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rial", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ckb-ir", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ckb-latn-iq.js b/1.2.30/i18n/angular-locale_ckb-latn-iq.js new file mode 100644 index 0000000000..c2c0a53c58 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ckb-latn-iq.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0628.\u0646", + "\u062f.\u0646" + ], + "DAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "MONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "SHORTDAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "SHORTMONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "d\u06cc MMMM\u06cc y", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ckb-latn-iq", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ckb-latn.js b/1.2.30/i18n/angular-locale_ckb-latn.js new file mode 100644 index 0000000000..ad01e76545 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ckb-latn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0628.\u0646", + "\u062f.\u0646" + ], + "DAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "MONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "SHORTDAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "SHORTMONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "d\u06cc MMMM\u06cc y", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ckb-latn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ckb.js b/1.2.30/i18n/angular-locale_ckb.js new file mode 100644 index 0000000000..6a9aa2afbf --- /dev/null +++ b/1.2.30/i18n/angular-locale_ckb.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0628.\u0646", + "\u062f.\u0646" + ], + "DAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "MONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "SHORTDAY": [ + "\u06cc\u06d5\u06a9\u0634\u06d5\u0645\u0645\u06d5", + "\u062f\u0648\u0648\u0634\u06d5\u0645\u0645\u06d5", + "\u0633\u06ce\u0634\u06d5\u0645\u0645\u06d5", + "\u0686\u0648\u0627\u0631\u0634\u06d5\u0645\u0645\u06d5", + "\u067e\u06ce\u0646\u062c\u0634\u06d5\u0645\u0645\u06d5", + "\u06be\u06d5\u06cc\u0646\u06cc", + "\u0634\u06d5\u0645\u0645\u06d5" + ], + "SHORTMONTH": [ + "\u06a9\u0627\u0646\u0648\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u0634\u0648\u0628\u0627\u062a", + "\u0626\u0627\u0632\u0627\u0631", + "\u0646\u06cc\u0633\u0627\u0646", + "\u0626\u0627\u06cc\u0627\u0631", + "\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646", + "\u062a\u06d5\u0645\u0648\u0648\u0632", + "\u0626\u0627\u0628", + "\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645", + "\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645", + "\u06a9\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "d\u06cc MMMM\u06cc y", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ckb", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_cs-cz.js b/1.2.30/i18n/angular-locale_cs-cz.js new file mode 100644 index 0000000000..bc27896421 --- /dev/null +++ b/1.2.30/i18n/angular-locale_cs-cz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "ned\u011ble", + "pond\u011bl\u00ed", + "\u00fater\u00fd", + "st\u0159eda", + "\u010dtvrtek", + "p\u00e1tek", + "sobota" + ], + "MONTH": [ + "ledna", + "\u00fanora", + "b\u0159ezna", + "dubna", + "kv\u011btna", + "\u010dervna", + "\u010dervence", + "srpna", + "z\u00e1\u0159\u00ed", + "\u0159\u00edjna", + "listopadu", + "prosince" + ], + "SHORTDAY": [ + "ne", + "po", + "\u00fat", + "st", + "\u010dt", + "p\u00e1", + "so" + ], + "SHORTMONTH": [ + "led", + "\u00fano", + "b\u0159e", + "dub", + "kv\u011b", + "\u010dvn", + "\u010dvc", + "srp", + "z\u00e1\u0159", + "\u0159\u00edj", + "lis", + "pro" + ], + "fullDate": "EEEE d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d. M. y H:mm:ss", + "mediumDate": "d. M. y", + "mediumTime": "H:mm:ss", + "short": "dd.MM.yy H:mm", + "shortDate": "dd.MM.yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "K\u010d", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "cs-cz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } if (i >= 2 && i <= 4 && vf.v == 0) { return PLURAL_CATEGORY.FEW; } if (vf.v != 0) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_cs.js b/1.2.30/i18n/angular-locale_cs.js new file mode 100644 index 0000000000..5af3399ff9 --- /dev/null +++ b/1.2.30/i18n/angular-locale_cs.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "ned\u011ble", + "pond\u011bl\u00ed", + "\u00fater\u00fd", + "st\u0159eda", + "\u010dtvrtek", + "p\u00e1tek", + "sobota" + ], + "MONTH": [ + "ledna", + "\u00fanora", + "b\u0159ezna", + "dubna", + "kv\u011btna", + "\u010dervna", + "\u010dervence", + "srpna", + "z\u00e1\u0159\u00ed", + "\u0159\u00edjna", + "listopadu", + "prosince" + ], + "SHORTDAY": [ + "ne", + "po", + "\u00fat", + "st", + "\u010dt", + "p\u00e1", + "so" + ], + "SHORTMONTH": [ + "led", + "\u00fano", + "b\u0159e", + "dub", + "kv\u011b", + "\u010dvn", + "\u010dvc", + "srp", + "z\u00e1\u0159", + "\u0159\u00edj", + "lis", + "pro" + ], + "fullDate": "EEEE d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d. M. y H:mm:ss", + "mediumDate": "d. M. y", + "mediumTime": "H:mm:ss", + "short": "dd.MM.yy H:mm", + "shortDate": "dd.MM.yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "K\u010d", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "cs", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } if (i >= 2 && i <= 4 && vf.v == 0) { return PLURAL_CATEGORY.FEW; } if (vf.v != 0) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_cy-gb.js b/1.2.30/i18n/angular-locale_cy-gb.js new file mode 100644 index 0000000000..9de1ca0a18 --- /dev/null +++ b/1.2.30/i18n/angular-locale_cy-gb.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Dydd Sul", + "Dydd Llun", + "Dydd Mawrth", + "Dydd Mercher", + "Dydd Iau", + "Dydd Gwener", + "Dydd Sadwrn" + ], + "MONTH": [ + "Ionawr", + "Chwefror", + "Mawrth", + "Ebrill", + "Mai", + "Mehefin", + "Gorffennaf", + "Awst", + "Medi", + "Hydref", + "Tachwedd", + "Rhagfyr" + ], + "SHORTDAY": [ + "Sul", + "Llun", + "Maw", + "Mer", + "Iau", + "Gwen", + "Sad" + ], + "SHORTMONTH": [ + "Ion", + "Chwef", + "Mawrth", + "Ebrill", + "Mai", + "Meh", + "Gorff", + "Awst", + "Medi", + "Hyd", + "Tach", + "Rhag" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "cy-gb", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == 3) { return PLURAL_CATEGORY.FEW; } if (n == 6) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_cy.js b/1.2.30/i18n/angular-locale_cy.js new file mode 100644 index 0000000000..206b066038 --- /dev/null +++ b/1.2.30/i18n/angular-locale_cy.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Dydd Sul", + "Dydd Llun", + "Dydd Mawrth", + "Dydd Mercher", + "Dydd Iau", + "Dydd Gwener", + "Dydd Sadwrn" + ], + "MONTH": [ + "Ionawr", + "Chwefror", + "Mawrth", + "Ebrill", + "Mai", + "Mehefin", + "Gorffennaf", + "Awst", + "Medi", + "Hydref", + "Tachwedd", + "Rhagfyr" + ], + "SHORTDAY": [ + "Sul", + "Llun", + "Maw", + "Mer", + "Iau", + "Gwen", + "Sad" + ], + "SHORTMONTH": [ + "Ion", + "Chwef", + "Mawrth", + "Ebrill", + "Mai", + "Meh", + "Gorff", + "Awst", + "Medi", + "Hyd", + "Tach", + "Rhag" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "cy", + "pluralCat": function (n, opt_precision) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == 3) { return PLURAL_CATEGORY.FEW; } if (n == 6) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_da-dk.js b/1.2.30/i18n/angular-locale_da-dk.js new file mode 100644 index 0000000000..4f9d509540 --- /dev/null +++ b/1.2.30/i18n/angular-locale_da-dk.js @@ -0,0 +1,128 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +function getWT(v, f) { + if (f === 0) { + return {w: 0, t: 0}; + } + + while ((f % 10) === 0) { + f /= 10; + v--; + } + + return {w: v, t: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "s\u00f8ndag", + "mandag", + "tirsdag", + "onsdag", + "torsdag", + "fredag", + "l\u00f8rdag" + ], + "MONTH": [ + "januar", + "februar", + "marts", + "april", + "maj", + "juni", + "juli", + "august", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "s\u00f8n.", + "man.", + "tir.", + "ons.", + "tor.", + "fre.", + "l\u00f8r." + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mar.", + "apr.", + "maj", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "EEEE 'den' d. MMMM y", + "longDate": "d. MMM y", + "medium": "dd/MM/y HH.mm.ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH.mm.ss", + "short": "dd/MM/yy HH.mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "da-dk", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); var wt = getWT(vf.v, vf.f); if (n == 1 || wt.t != 0 && (i == 0 || i == 1)) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_da-gl.js b/1.2.30/i18n/angular-locale_da-gl.js new file mode 100644 index 0000000000..f56c5696b9 --- /dev/null +++ b/1.2.30/i18n/angular-locale_da-gl.js @@ -0,0 +1,128 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +function getWT(v, f) { + if (f === 0) { + return {w: 0, t: 0}; + } + + while ((f % 10) === 0) { + f /= 10; + v--; + } + + return {w: v, t: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "s\u00f8ndag", + "mandag", + "tirsdag", + "onsdag", + "torsdag", + "fredag", + "l\u00f8rdag" + ], + "MONTH": [ + "januar", + "februar", + "marts", + "april", + "maj", + "juni", + "juli", + "august", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "s\u00f8n.", + "man.", + "tir.", + "ons.", + "tor.", + "fre.", + "l\u00f8r." + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mar.", + "apr.", + "maj", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "EEEE 'den' d. MMMM y", + "longDate": "d. MMM y", + "medium": "dd/MM/y HH.mm.ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH.mm.ss", + "short": "dd/MM/yy HH.mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "da-gl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); var wt = getWT(vf.v, vf.f); if (n == 1 || wt.t != 0 && (i == 0 || i == 1)) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_da.js b/1.2.30/i18n/angular-locale_da.js new file mode 100644 index 0000000000..bdb48ff351 --- /dev/null +++ b/1.2.30/i18n/angular-locale_da.js @@ -0,0 +1,128 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +function getWT(v, f) { + if (f === 0) { + return {w: 0, t: 0}; + } + + while ((f % 10) === 0) { + f /= 10; + v--; + } + + return {w: v, t: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "s\u00f8ndag", + "mandag", + "tirsdag", + "onsdag", + "torsdag", + "fredag", + "l\u00f8rdag" + ], + "MONTH": [ + "januar", + "februar", + "marts", + "april", + "maj", + "juni", + "juli", + "august", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "s\u00f8n.", + "man.", + "tir.", + "ons.", + "tor.", + "fre.", + "l\u00f8r." + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mar.", + "apr.", + "maj", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "EEEE 'den' d. MMMM y", + "longDate": "d. MMM y", + "medium": "dd/MM/y HH.mm.ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH.mm.ss", + "short": "dd/MM/yy HH.mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "da", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); var wt = getWT(vf.v, vf.f); if (n == 1 || wt.t != 0 && (i == 0 || i == 1)) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_dav-ke.js b/1.2.30/i18n/angular-locale_dav-ke.js new file mode 100644 index 0000000000..b7c9956269 --- /dev/null +++ b/1.2.30/i18n/angular-locale_dav-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Luma lwa K", + "luma lwa p" + ], + "DAY": [ + "Ituku ja jumwa", + "Kuramuka jimweri", + "Kuramuka kawi", + "Kuramuka kadadu", + "Kuramuka kana", + "Kuramuka kasanu", + "Kifula nguwo" + ], + "MONTH": [ + "Mori ghwa imbiri", + "Mori ghwa kawi", + "Mori ghwa kadadu", + "Mori ghwa kana", + "Mori ghwa kasanu", + "Mori ghwa karandadu", + "Mori ghwa mfungade", + "Mori ghwa wunyanya", + "Mori ghwa ikenda", + "Mori ghwa ikumi", + "Mori ghwa ikumi na imweri", + "Mori ghwa ikumi na iwi" + ], + "SHORTDAY": [ + "Jum", + "Jim", + "Kaw", + "Kad", + "Kan", + "Kas", + "Ngu" + ], + "SHORTMONTH": [ + "Imb", + "Kaw", + "Kad", + "Kan", + "Kas", + "Kar", + "Mfu", + "Wun", + "Ike", + "Iku", + "Imw", + "Iwi" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "dav-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_dav.js b/1.2.30/i18n/angular-locale_dav.js new file mode 100644 index 0000000000..95f5b02f6a --- /dev/null +++ b/1.2.30/i18n/angular-locale_dav.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Luma lwa K", + "luma lwa p" + ], + "DAY": [ + "Ituku ja jumwa", + "Kuramuka jimweri", + "Kuramuka kawi", + "Kuramuka kadadu", + "Kuramuka kana", + "Kuramuka kasanu", + "Kifula nguwo" + ], + "MONTH": [ + "Mori ghwa imbiri", + "Mori ghwa kawi", + "Mori ghwa kadadu", + "Mori ghwa kana", + "Mori ghwa kasanu", + "Mori ghwa karandadu", + "Mori ghwa mfungade", + "Mori ghwa wunyanya", + "Mori ghwa ikenda", + "Mori ghwa ikumi", + "Mori ghwa ikumi na imweri", + "Mori ghwa ikumi na iwi" + ], + "SHORTDAY": [ + "Jum", + "Jim", + "Kaw", + "Kad", + "Kan", + "Kas", + "Ngu" + ], + "SHORTMONTH": [ + "Imb", + "Kaw", + "Kad", + "Kan", + "Kas", + "Kar", + "Mfu", + "Wun", + "Ike", + "Iku", + "Imw", + "Iwi" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "dav", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_de-at.js b/1.2.30/i18n/angular-locale_de-at.js new file mode 100644 index 0000000000..503707ffc0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_de-at.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "vorm.", + "nachm." + ], + "DAY": [ + "Sonntag", + "Montag", + "Dienstag", + "Mittwoch", + "Donnerstag", + "Freitag", + "Samstag" + ], + "MONTH": [ + "J\u00e4nner", + "Februar", + "M\u00e4rz", + "April", + "Mai", + "Juni", + "Juli", + "August", + "September", + "Oktober", + "November", + "Dezember" + ], + "SHORTDAY": [ + "So.", + "Mo.", + "Di.", + "Mi.", + "Do.", + "Fr.", + "Sa." + ], + "SHORTMONTH": [ + "J\u00e4n.", + "Feb.", + "M\u00e4rz", + "Apr.", + "Mai", + "Juni", + "Juli", + "Aug.", + "Sep.", + "Okt.", + "Nov.", + "Dez." + ], + "fullDate": "EEEE, dd. MMMM y", + "longDate": "dd. MMMM y", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "de-at", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_de-be.js b/1.2.30/i18n/angular-locale_de-be.js new file mode 100644 index 0000000000..a4e28b55d2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_de-be.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "vorm.", + "nachm." + ], + "DAY": [ + "Sonntag", + "Montag", + "Dienstag", + "Mittwoch", + "Donnerstag", + "Freitag", + "Samstag" + ], + "MONTH": [ + "Januar", + "Februar", + "M\u00e4rz", + "April", + "Mai", + "Juni", + "Juli", + "August", + "September", + "Oktober", + "November", + "Dezember" + ], + "SHORTDAY": [ + "So.", + "Mo.", + "Di.", + "Mi.", + "Do.", + "Fr.", + "Sa." + ], + "SHORTMONTH": [ + "Jan.", + "Feb.", + "M\u00e4rz", + "Apr.", + "Mai", + "Juni", + "Juli", + "Aug.", + "Sep.", + "Okt.", + "Nov.", + "Dez." + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "de-be", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_de-ch.js b/1.2.30/i18n/angular-locale_de-ch.js new file mode 100644 index 0000000000..edb0d508c7 --- /dev/null +++ b/1.2.30/i18n/angular-locale_de-ch.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "vorm.", + "nachm." + ], + "DAY": [ + "Sonntag", + "Montag", + "Dienstag", + "Mittwoch", + "Donnerstag", + "Freitag", + "Samstag" + ], + "MONTH": [ + "Januar", + "Februar", + "M\u00e4rz", + "April", + "Mai", + "Juni", + "Juli", + "August", + "September", + "Oktober", + "November", + "Dezember" + ], + "SHORTDAY": [ + "So.", + "Mo.", + "Di.", + "Mi.", + "Do.", + "Fr.", + "Sa." + ], + "SHORTMONTH": [ + "Jan.", + "Feb.", + "M\u00e4rz", + "Apr.", + "Mai", + "Juni", + "Juli", + "Aug.", + "Sep.", + "Okt.", + "Nov.", + "Dez." + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CHF", + "DECIMAL_SEP": ".", + "GROUP_SEP": "'", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "de-ch", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_de-de.js b/1.2.30/i18n/angular-locale_de-de.js new file mode 100644 index 0000000000..b1d24da683 --- /dev/null +++ b/1.2.30/i18n/angular-locale_de-de.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "vorm.", + "nachm." + ], + "DAY": [ + "Sonntag", + "Montag", + "Dienstag", + "Mittwoch", + "Donnerstag", + "Freitag", + "Samstag" + ], + "MONTH": [ + "Januar", + "Februar", + "M\u00e4rz", + "April", + "Mai", + "Juni", + "Juli", + "August", + "September", + "Oktober", + "November", + "Dezember" + ], + "SHORTDAY": [ + "So.", + "Mo.", + "Di.", + "Mi.", + "Do.", + "Fr.", + "Sa." + ], + "SHORTMONTH": [ + "Jan.", + "Feb.", + "M\u00e4rz", + "Apr.", + "Mai", + "Juni", + "Juli", + "Aug.", + "Sep.", + "Okt.", + "Nov.", + "Dez." + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "de-de", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_de-li.js b/1.2.30/i18n/angular-locale_de-li.js new file mode 100644 index 0000000000..c29bbfb5d4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_de-li.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "vorm.", + "nachm." + ], + "DAY": [ + "Sonntag", + "Montag", + "Dienstag", + "Mittwoch", + "Donnerstag", + "Freitag", + "Samstag" + ], + "MONTH": [ + "Januar", + "Februar", + "M\u00e4rz", + "April", + "Mai", + "Juni", + "Juli", + "August", + "September", + "Oktober", + "November", + "Dezember" + ], + "SHORTDAY": [ + "So.", + "Mo.", + "Di.", + "Mi.", + "Do.", + "Fr.", + "Sa." + ], + "SHORTMONTH": [ + "Jan.", + "Feb.", + "M\u00e4rz", + "Apr.", + "Mai", + "Juni", + "Juli", + "Aug.", + "Sep.", + "Okt.", + "Nov.", + "Dez." + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CHF", + "DECIMAL_SEP": ".", + "GROUP_SEP": "'", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "de-li", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_de-lu.js b/1.2.30/i18n/angular-locale_de-lu.js new file mode 100644 index 0000000000..ff62c14b08 --- /dev/null +++ b/1.2.30/i18n/angular-locale_de-lu.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "vorm.", + "nachm." + ], + "DAY": [ + "Sonntag", + "Montag", + "Dienstag", + "Mittwoch", + "Donnerstag", + "Freitag", + "Samstag" + ], + "MONTH": [ + "Januar", + "Februar", + "M\u00e4rz", + "April", + "Mai", + "Juni", + "Juli", + "August", + "September", + "Oktober", + "November", + "Dezember" + ], + "SHORTDAY": [ + "So.", + "Mo.", + "Di.", + "Mi.", + "Do.", + "Fr.", + "Sa." + ], + "SHORTMONTH": [ + "Jan.", + "Feb.", + "M\u00e4rz", + "Apr.", + "Mai", + "Juni", + "Juli", + "Aug.", + "Sep.", + "Okt.", + "Nov.", + "Dez." + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "de-lu", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_de.js b/1.2.30/i18n/angular-locale_de.js new file mode 100644 index 0000000000..0c8f3ea287 --- /dev/null +++ b/1.2.30/i18n/angular-locale_de.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "vorm.", + "nachm." + ], + "DAY": [ + "Sonntag", + "Montag", + "Dienstag", + "Mittwoch", + "Donnerstag", + "Freitag", + "Samstag" + ], + "MONTH": [ + "Januar", + "Februar", + "M\u00e4rz", + "April", + "Mai", + "Juni", + "Juli", + "August", + "September", + "Oktober", + "November", + "Dezember" + ], + "SHORTDAY": [ + "So.", + "Mo.", + "Di.", + "Mi.", + "Do.", + "Fr.", + "Sa." + ], + "SHORTMONTH": [ + "Jan.", + "Feb.", + "M\u00e4rz", + "Apr.", + "Mai", + "Juni", + "Juli", + "Aug.", + "Sep.", + "Okt.", + "Nov.", + "Dez." + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "de", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_dje-ne.js b/1.2.30/i18n/angular-locale_dje-ne.js new file mode 100644 index 0000000000..027f8d2dc2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_dje-ne.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Subbaahi", + "Zaarikay b" + ], + "DAY": [ + "Alhadi", + "Atinni", + "Atalaata", + "Alarba", + "Alhamisi", + "Alzuma", + "Asibti" + ], + "MONTH": [ + "\u017danwiye", + "Feewiriye", + "Marsi", + "Awiril", + "Me", + "\u017duwe\u014b", + "\u017duyye", + "Ut", + "Sektanbur", + "Oktoobur", + "Noowanbur", + "Deesanbur" + ], + "SHORTDAY": [ + "Alh", + "Ati", + "Ata", + "Ala", + "Alm", + "Alz", + "Asi" + ], + "SHORTMONTH": [ + "\u017dan", + "Fee", + "Mar", + "Awi", + "Me", + "\u017duw", + "\u017duy", + "Ut", + "Sek", + "Okt", + "Noo", + "Dee" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "dje-ne", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_dje.js b/1.2.30/i18n/angular-locale_dje.js new file mode 100644 index 0000000000..6f49c10907 --- /dev/null +++ b/1.2.30/i18n/angular-locale_dje.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Subbaahi", + "Zaarikay b" + ], + "DAY": [ + "Alhadi", + "Atinni", + "Atalaata", + "Alarba", + "Alhamisi", + "Alzuma", + "Asibti" + ], + "MONTH": [ + "\u017danwiye", + "Feewiriye", + "Marsi", + "Awiril", + "Me", + "\u017duwe\u014b", + "\u017duyye", + "Ut", + "Sektanbur", + "Oktoobur", + "Noowanbur", + "Deesanbur" + ], + "SHORTDAY": [ + "Alh", + "Ati", + "Ata", + "Ala", + "Alm", + "Alz", + "Asi" + ], + "SHORTMONTH": [ + "\u017dan", + "Fee", + "Mar", + "Awi", + "Me", + "\u017duw", + "\u017duy", + "Ut", + "Sek", + "Okt", + "Noo", + "Dee" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "dje", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_dua-cm.js b/1.2.30/i18n/angular-locale_dua-cm.js new file mode 100644 index 0000000000..3577854439 --- /dev/null +++ b/1.2.30/i18n/angular-locale_dua-cm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "idi\u0253a", + "eby\u00e1mu" + ], + "DAY": [ + "\u00e9ti", + "m\u0254\u0301s\u00fa", + "kwas\u00fa", + "muk\u0254\u0301s\u00fa", + "\u014bgis\u00fa", + "\u0257\u00f3n\u025bs\u00fa", + "esa\u0253as\u00fa" + ], + "MONTH": [ + "dim\u0254\u0301di", + "\u014bg\u0254nd\u025b", + "s\u0254\u014b\u025b", + "di\u0253\u00e1\u0253\u00e1", + "emiasele", + "es\u0254p\u025bs\u0254p\u025b", + "madi\u0253\u025b\u0301d\u00ed\u0253\u025b\u0301", + "di\u014bgindi", + "ny\u025bt\u025bki", + "may\u00e9s\u025b\u0301", + "tin\u00edn\u00ed", + "el\u00e1\u014bg\u025b\u0301" + ], + "SHORTDAY": [ + "\u00e9t", + "m\u0254\u0301s", + "kwa", + "muk", + "\u014bgi", + "\u0257\u00f3n", + "esa" + ], + "SHORTMONTH": [ + "di", + "\u014bg\u0254n", + "s\u0254\u014b", + "di\u0253", + "emi", + "es\u0254", + "mad", + "di\u014b", + "ny\u025bt", + "may", + "tin", + "el\u00e1" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "dua-cm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_dua.js b/1.2.30/i18n/angular-locale_dua.js new file mode 100644 index 0000000000..50c7e5e448 --- /dev/null +++ b/1.2.30/i18n/angular-locale_dua.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "idi\u0253a", + "eby\u00e1mu" + ], + "DAY": [ + "\u00e9ti", + "m\u0254\u0301s\u00fa", + "kwas\u00fa", + "muk\u0254\u0301s\u00fa", + "\u014bgis\u00fa", + "\u0257\u00f3n\u025bs\u00fa", + "esa\u0253as\u00fa" + ], + "MONTH": [ + "dim\u0254\u0301di", + "\u014bg\u0254nd\u025b", + "s\u0254\u014b\u025b", + "di\u0253\u00e1\u0253\u00e1", + "emiasele", + "es\u0254p\u025bs\u0254p\u025b", + "madi\u0253\u025b\u0301d\u00ed\u0253\u025b\u0301", + "di\u014bgindi", + "ny\u025bt\u025bki", + "may\u00e9s\u025b\u0301", + "tin\u00edn\u00ed", + "el\u00e1\u014bg\u025b\u0301" + ], + "SHORTDAY": [ + "\u00e9t", + "m\u0254\u0301s", + "kwa", + "muk", + "\u014bgi", + "\u0257\u00f3n", + "esa" + ], + "SHORTMONTH": [ + "di", + "\u014bg\u0254n", + "s\u0254\u014b", + "di\u0253", + "emi", + "es\u0254", + "mad", + "di\u014b", + "ny\u025bt", + "may", + "tin", + "el\u00e1" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "dua", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_dyo-sn.js b/1.2.30/i18n/angular-locale_dyo-sn.js new file mode 100644 index 0000000000..cbf2938210 --- /dev/null +++ b/1.2.30/i18n/angular-locale_dyo-sn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Dimas", + "Tene\u014b", + "Talata", + "Alarbay", + "Aramisay", + "Arjuma", + "Sibiti" + ], + "MONTH": [ + "Sanvie", + "F\u00e9birie", + "Mars", + "Aburil", + "Mee", + "Sue\u014b", + "S\u00fauyee", + "Ut", + "Settembar", + "Oktobar", + "Novembar", + "Disambar" + ], + "SHORTDAY": [ + "Dim", + "Ten", + "Tal", + "Ala", + "Ara", + "Arj", + "Sib" + ], + "SHORTMONTH": [ + "Sa", + "Fe", + "Ma", + "Ab", + "Me", + "Su", + "S\u00fa", + "Ut", + "Se", + "Ok", + "No", + "De" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "dyo-sn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_dyo.js b/1.2.30/i18n/angular-locale_dyo.js new file mode 100644 index 0000000000..a76ee8850e --- /dev/null +++ b/1.2.30/i18n/angular-locale_dyo.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Dimas", + "Tene\u014b", + "Talata", + "Alarbay", + "Aramisay", + "Arjuma", + "Sibiti" + ], + "MONTH": [ + "Sanvie", + "F\u00e9birie", + "Mars", + "Aburil", + "Mee", + "Sue\u014b", + "S\u00fauyee", + "Ut", + "Settembar", + "Oktobar", + "Novembar", + "Disambar" + ], + "SHORTDAY": [ + "Dim", + "Ten", + "Tal", + "Ala", + "Ara", + "Arj", + "Sib" + ], + "SHORTMONTH": [ + "Sa", + "Fe", + "Ma", + "Ab", + "Me", + "Su", + "S\u00fa", + "Ut", + "Se", + "Ok", + "No", + "De" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "dyo", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_dz-bt.js b/1.2.30/i18n/angular-locale_dz-bt.js new file mode 100644 index 0000000000..44328aa1ca --- /dev/null +++ b/1.2.30/i18n/angular-locale_dz-bt.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0f66\u0f94\u0f0b\u0f46\u0f0b", + "\u0f55\u0fb1\u0f72\u0f0b\u0f46\u0f0b" + ], + "DAY": [ + "\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b" + ], + "MONTH": [ + "\u0f5f\u0fb3\u0f0b\u0f51\u0f44\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b" + ], + "SHORTDAY": [ + "\u0f5f\u0fb3\u0f0b", + "\u0f58\u0f72\u0f62\u0f0b", + "\u0f63\u0fb7\u0f42\u0f0b", + "\u0f55\u0f74\u0f62\u0f0b", + "\u0f66\u0f44\u0f66\u0f0b", + "\u0f66\u0fa4\u0f7a\u0f53\u0f0b", + "\u0f49\u0f72\u0f0b" + ], + "SHORTMONTH": [ + "\u0f21", + "\u0f22", + "\u0f23", + "\u0f24", + "\u0f25", + "\u0f26", + "\u0f27", + "\u0f28", + "\u0f29", + "\u0f21\u0f20", + "\u0f21\u0f21", + "12" + ], + "fullDate": "EEEE, \u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by MMMM \u0f5a\u0f7a\u0f66\u0f0bdd", + "longDate": "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by MMMM \u0f5a\u0f7a\u0f66\u0f0b dd", + "medium": "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by \u0f5f\u0fb3\u0f0bMMM \u0f5a\u0f7a\u0f66\u0f0bdd \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0bh:mm:ss a", + "mediumDate": "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by \u0f5f\u0fb3\u0f0bMMM \u0f5a\u0f7a\u0f66\u0f0bdd", + "mediumTime": "\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0bh:mm:ss a", + "short": "y-MM-dd \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b h \u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b mm a", + "shortDate": "y-MM-dd", + "shortTime": "\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b h \u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Nu.", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "dz-bt", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_dz.js b/1.2.30/i18n/angular-locale_dz.js new file mode 100644 index 0000000000..60db2c262b --- /dev/null +++ b/1.2.30/i18n/angular-locale_dz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0f66\u0f94\u0f0b\u0f46\u0f0b", + "\u0f55\u0fb1\u0f72\u0f0b\u0f46\u0f0b" + ], + "DAY": [ + "\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b", + "\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b" + ], + "MONTH": [ + "\u0f5f\u0fb3\u0f0b\u0f51\u0f44\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b", + "\u0f5f\u0fb3\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b" + ], + "SHORTDAY": [ + "\u0f5f\u0fb3\u0f0b", + "\u0f58\u0f72\u0f62\u0f0b", + "\u0f63\u0fb7\u0f42\u0f0b", + "\u0f55\u0f74\u0f62\u0f0b", + "\u0f66\u0f44\u0f66\u0f0b", + "\u0f66\u0fa4\u0f7a\u0f53\u0f0b", + "\u0f49\u0f72\u0f0b" + ], + "SHORTMONTH": [ + "\u0f21", + "\u0f22", + "\u0f23", + "\u0f24", + "\u0f25", + "\u0f26", + "\u0f27", + "\u0f28", + "\u0f29", + "\u0f21\u0f20", + "\u0f21\u0f21", + "12" + ], + "fullDate": "EEEE, \u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by MMMM \u0f5a\u0f7a\u0f66\u0f0bdd", + "longDate": "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by MMMM \u0f5a\u0f7a\u0f66\u0f0b dd", + "medium": "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by \u0f5f\u0fb3\u0f0bMMM \u0f5a\u0f7a\u0f66\u0f0bdd \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0bh:mm:ss a", + "mediumDate": "\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by \u0f5f\u0fb3\u0f0bMMM \u0f5a\u0f7a\u0f66\u0f0bdd", + "mediumTime": "\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0bh:mm:ss a", + "short": "y-MM-dd \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b h \u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b mm a", + "shortDate": "y-MM-dd", + "shortTime": "\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b h \u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Nu.", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "dz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ebu-ke.js b/1.2.30/i18n/angular-locale_ebu-ke.js new file mode 100644 index 0000000000..eb14909304 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ebu-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "KI", + "UT" + ], + "DAY": [ + "Kiumia", + "Njumatatu", + "Njumaine", + "Njumatano", + "Aramithi", + "Njumaa", + "NJumamothii" + ], + "MONTH": [ + "Mweri wa mbere", + "Mweri wa ka\u0129ri", + "Mweri wa kathat\u0169", + "Mweri wa kana", + "Mweri wa gatano", + "Mweri wa gatantat\u0169", + "Mweri wa m\u0169gwanja", + "Mweri wa kanana", + "Mweri wa kenda", + "Mweri wa ik\u0169mi", + "Mweri wa ik\u0169mi na \u0169mwe", + "Mweri wa ik\u0169mi na Ka\u0129r\u0129" + ], + "SHORTDAY": [ + "Kma", + "Tat", + "Ine", + "Tan", + "Arm", + "Maa", + "NMM" + ], + "SHORTMONTH": [ + "Mbe", + "Kai", + "Kat", + "Kan", + "Gat", + "Gan", + "Mug", + "Knn", + "Ken", + "Iku", + "Imw", + "Igi" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ebu-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ebu.js b/1.2.30/i18n/angular-locale_ebu.js new file mode 100644 index 0000000000..d75a03c2f0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ebu.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "KI", + "UT" + ], + "DAY": [ + "Kiumia", + "Njumatatu", + "Njumaine", + "Njumatano", + "Aramithi", + "Njumaa", + "NJumamothii" + ], + "MONTH": [ + "Mweri wa mbere", + "Mweri wa ka\u0129ri", + "Mweri wa kathat\u0169", + "Mweri wa kana", + "Mweri wa gatano", + "Mweri wa gatantat\u0169", + "Mweri wa m\u0169gwanja", + "Mweri wa kanana", + "Mweri wa kenda", + "Mweri wa ik\u0169mi", + "Mweri wa ik\u0169mi na \u0169mwe", + "Mweri wa ik\u0169mi na Ka\u0129r\u0129" + ], + "SHORTDAY": [ + "Kma", + "Tat", + "Ine", + "Tan", + "Arm", + "Maa", + "NMM" + ], + "SHORTMONTH": [ + "Mbe", + "Kai", + "Kat", + "Kan", + "Gat", + "Gan", + "Mug", + "Knn", + "Ken", + "Iku", + "Imw", + "Igi" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ebu", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ee-gh.js b/1.2.30/i18n/angular-locale_ee-gh.js new file mode 100644 index 0000000000..7431af258d --- /dev/null +++ b/1.2.30/i18n/angular-locale_ee-gh.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u014bdi", + "\u0263etr\u0254" + ], + "DAY": [ + "k\u0254si\u0256a", + "dzo\u0256a", + "bla\u0256a", + "ku\u0256a", + "yawo\u0256a", + "fi\u0256a", + "memle\u0256a" + ], + "MONTH": [ + "dzove", + "dzodze", + "tedoxe", + "af\u0254f\u0129e", + "dama", + "masa", + "siaml\u0254m", + "deasiamime", + "any\u0254ny\u0254", + "kele", + "ade\u025bmekp\u0254xe", + "dzome" + ], + "SHORTDAY": [ + "k\u0254s", + "dzo", + "bla", + "ku\u0256", + "yaw", + "fi\u0256", + "mem" + ], + "SHORTMONTH": [ + "dzv", + "dzd", + "ted", + "af\u0254", + "dam", + "mas", + "sia", + "dea", + "any", + "kel", + "ade", + "dzm" + ], + "fullDate": "EEEE, MMMM d 'lia' y", + "longDate": "MMMM d 'lia' y", + "medium": "MMM d 'lia', y a 'ga' h:mm:ss", + "mediumDate": "MMM d 'lia', y", + "mediumTime": "a 'ga' h:mm:ss", + "short": "M/d/yy a 'ga' h:mm", + "shortDate": "M/d/yy", + "shortTime": "a 'ga' h:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "GHS", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ee-gh", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ee-tg.js b/1.2.30/i18n/angular-locale_ee-tg.js new file mode 100644 index 0000000000..ee236cb68f --- /dev/null +++ b/1.2.30/i18n/angular-locale_ee-tg.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u014bdi", + "\u0263etr\u0254" + ], + "DAY": [ + "k\u0254si\u0256a", + "dzo\u0256a", + "bla\u0256a", + "ku\u0256a", + "yawo\u0256a", + "fi\u0256a", + "memle\u0256a" + ], + "MONTH": [ + "dzove", + "dzodze", + "tedoxe", + "af\u0254f\u0129e", + "dama", + "masa", + "siaml\u0254m", + "deasiamime", + "any\u0254ny\u0254", + "kele", + "ade\u025bmekp\u0254xe", + "dzome" + ], + "SHORTDAY": [ + "k\u0254s", + "dzo", + "bla", + "ku\u0256", + "yaw", + "fi\u0256", + "mem" + ], + "SHORTMONTH": [ + "dzv", + "dzd", + "ted", + "af\u0254", + "dam", + "mas", + "sia", + "dea", + "any", + "kel", + "ade", + "dzm" + ], + "fullDate": "EEEE, MMMM d 'lia' y", + "longDate": "MMMM d 'lia' y", + "medium": "MMM d 'lia', y a 'ga' h:mm:ss", + "mediumDate": "MMM d 'lia', y", + "mediumTime": "a 'ga' h:mm:ss", + "short": "M/d/yy a 'ga' h:mm", + "shortDate": "M/d/yy", + "shortTime": "a 'ga' h:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ee-tg", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ee.js b/1.2.30/i18n/angular-locale_ee.js new file mode 100644 index 0000000000..b57345400f --- /dev/null +++ b/1.2.30/i18n/angular-locale_ee.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u014bdi", + "\u0263etr\u0254" + ], + "DAY": [ + "k\u0254si\u0256a", + "dzo\u0256a", + "bla\u0256a", + "ku\u0256a", + "yawo\u0256a", + "fi\u0256a", + "memle\u0256a" + ], + "MONTH": [ + "dzove", + "dzodze", + "tedoxe", + "af\u0254f\u0129e", + "dama", + "masa", + "siaml\u0254m", + "deasiamime", + "any\u0254ny\u0254", + "kele", + "ade\u025bmekp\u0254xe", + "dzome" + ], + "SHORTDAY": [ + "k\u0254s", + "dzo", + "bla", + "ku\u0256", + "yaw", + "fi\u0256", + "mem" + ], + "SHORTMONTH": [ + "dzv", + "dzd", + "ted", + "af\u0254", + "dam", + "mas", + "sia", + "dea", + "any", + "kel", + "ade", + "dzm" + ], + "fullDate": "EEEE, MMMM d 'lia' y", + "longDate": "MMMM d 'lia' y", + "medium": "MMM d 'lia', y a 'ga' h:mm:ss", + "mediumDate": "MMM d 'lia', y", + "mediumTime": "a 'ga' h:mm:ss", + "short": "M/d/yy a 'ga' h:mm", + "shortDate": "M/d/yy", + "shortTime": "a 'ga' h:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "GHS", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ee", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_el-cy.js b/1.2.30/i18n/angular-locale_el-cy.js new file mode 100644 index 0000000000..da714bf599 --- /dev/null +++ b/1.2.30/i18n/angular-locale_el-cy.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u03c0.\u03bc.", + "\u03bc.\u03bc." + ], + "DAY": [ + "\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae", + "\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1", + "\u03a4\u03c1\u03af\u03c4\u03b7", + "\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7", + "\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7", + "\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae", + "\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf" + ], + "MONTH": [ + "\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5", + "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5", + "\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5", + "\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5", + "\u039c\u03b1\u0390\u03bf\u03c5", + "\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5", + "\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5", + "\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5", + "\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5", + "\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5", + "\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5", + "\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5" + ], + "SHORTDAY": [ + "\u039a\u03c5\u03c1", + "\u0394\u03b5\u03c5", + "\u03a4\u03c1\u03af", + "\u03a4\u03b5\u03c4", + "\u03a0\u03ad\u03bc", + "\u03a0\u03b1\u03c1", + "\u03a3\u03ac\u03b2" + ], + "SHORTMONTH": [ + "\u0399\u03b1\u03bd", + "\u03a6\u03b5\u03b2", + "\u039c\u03b1\u03c1", + "\u0391\u03c0\u03c1", + "\u039c\u03b1\u0390", + "\u0399\u03bf\u03c5\u03bd", + "\u0399\u03bf\u03c5\u03bb", + "\u0391\u03c5\u03b3", + "\u03a3\u03b5\u03c0", + "\u039f\u03ba\u03c4", + "\u039d\u03bf\u03b5", + "\u0394\u03b5\u03ba" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "el-cy", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_el-gr.js b/1.2.30/i18n/angular-locale_el-gr.js new file mode 100644 index 0000000000..af0e8f051d --- /dev/null +++ b/1.2.30/i18n/angular-locale_el-gr.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u03c0.\u03bc.", + "\u03bc.\u03bc." + ], + "DAY": [ + "\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae", + "\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1", + "\u03a4\u03c1\u03af\u03c4\u03b7", + "\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7", + "\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7", + "\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae", + "\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf" + ], + "MONTH": [ + "\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5", + "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5", + "\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5", + "\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5", + "\u039c\u03b1\u0390\u03bf\u03c5", + "\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5", + "\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5", + "\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5", + "\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5", + "\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5", + "\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5", + "\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5" + ], + "SHORTDAY": [ + "\u039a\u03c5\u03c1", + "\u0394\u03b5\u03c5", + "\u03a4\u03c1\u03af", + "\u03a4\u03b5\u03c4", + "\u03a0\u03ad\u03bc", + "\u03a0\u03b1\u03c1", + "\u03a3\u03ac\u03b2" + ], + "SHORTMONTH": [ + "\u0399\u03b1\u03bd", + "\u03a6\u03b5\u03b2", + "\u039c\u03b1\u03c1", + "\u0391\u03c0\u03c1", + "\u039c\u03b1\u0390", + "\u0399\u03bf\u03c5\u03bd", + "\u0399\u03bf\u03c5\u03bb", + "\u0391\u03c5\u03b3", + "\u03a3\u03b5\u03c0", + "\u039f\u03ba\u03c4", + "\u039d\u03bf\u03b5", + "\u0394\u03b5\u03ba" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "el-gr", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_el.js b/1.2.30/i18n/angular-locale_el.js new file mode 100644 index 0000000000..54dd178a76 --- /dev/null +++ b/1.2.30/i18n/angular-locale_el.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u03c0.\u03bc.", + "\u03bc.\u03bc." + ], + "DAY": [ + "\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae", + "\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1", + "\u03a4\u03c1\u03af\u03c4\u03b7", + "\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7", + "\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7", + "\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae", + "\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf" + ], + "MONTH": [ + "\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5", + "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5", + "\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5", + "\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5", + "\u039c\u03b1\u0390\u03bf\u03c5", + "\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5", + "\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5", + "\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5", + "\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5", + "\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5", + "\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5", + "\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5" + ], + "SHORTDAY": [ + "\u039a\u03c5\u03c1", + "\u0394\u03b5\u03c5", + "\u03a4\u03c1\u03af", + "\u03a4\u03b5\u03c4", + "\u03a0\u03ad\u03bc", + "\u03a0\u03b1\u03c1", + "\u03a3\u03ac\u03b2" + ], + "SHORTMONTH": [ + "\u0399\u03b1\u03bd", + "\u03a6\u03b5\u03b2", + "\u039c\u03b1\u03c1", + "\u0391\u03c0\u03c1", + "\u039c\u03b1\u0390", + "\u0399\u03bf\u03c5\u03bd", + "\u0399\u03bf\u03c5\u03bb", + "\u0391\u03c5\u03b3", + "\u03a3\u03b5\u03c0", + "\u039f\u03ba\u03c4", + "\u039d\u03bf\u03b5", + "\u0394\u03b5\u03ba" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "el", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-001.js b/1.2.30/i18n/angular-locale_en-001.js new file mode 100644 index 0000000000..cefc5e614a --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-001.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-001", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-150.js b/1.2.30/i18n/angular-locale_en-150.js new file mode 100644 index 0000000000..e49634c01a --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-150.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMM y", + "medium": "dd MMM y HH:mm:ss", + "mediumDate": "dd MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "en-150", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-ag.js b/1.2.30/i18n/angular-locale_en-ag.js new file mode 100644 index 0000000000..96835a9689 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-ag.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-ag", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-ai.js b/1.2.30/i18n/angular-locale_en-ai.js new file mode 100644 index 0000000000..c7bf13e232 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-ai.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-ai", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-as.js b/1.2.30/i18n/angular-locale_en-as.js new file mode 100644 index 0000000000..c2490c5122 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-as.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-as", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-au.js b/1.2.30/i18n/angular-locale_en-au.js new file mode 100644 index 0000000000..62fe83b3be --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-au.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/MM/y h:mm a", + "shortDate": "d/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-au", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-bb.js b/1.2.30/i18n/angular-locale_en-bb.js new file mode 100644 index 0000000000..9f15dcd2c4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-bb.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-bb", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-be.js b/1.2.30/i18n/angular-locale_en-be.js new file mode 100644 index 0000000000..872f821b16 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-be.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMM y", + "medium": "dd MMM y HH:mm:ss", + "mediumDate": "dd MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "en-be", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-bm.js b/1.2.30/i18n/angular-locale_en-bm.js new file mode 100644 index 0000000000..107d96044b --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-bm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-bm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-bs.js b/1.2.30/i18n/angular-locale_en-bs.js new file mode 100644 index 0000000000..00edea6d21 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-bs.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-bs", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-bw.js b/1.2.30/i18n/angular-locale_en-bw.js new file mode 100644 index 0000000000..a7538fecc1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-bw.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "dd MMMM y", + "medium": "dd MMM y h:mm:ss a", + "mediumDate": "dd MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "P", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-bw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-bz.js b/1.2.30/i18n/angular-locale_en-bz.js new file mode 100644 index 0000000000..1cdd695b9f --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-bz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y HH:mm:ss", + "mediumDate": "dd-MMM-y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-bz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-ca.js b/1.2.30/i18n/angular-locale_en-ca.js new file mode 100644 index 0000000000..a0a2419e27 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-ca.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "y-MM-dd h:mm a", + "shortDate": "y-MM-dd", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-ca", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-cc.js b/1.2.30/i18n/angular-locale_en-cc.js new file mode 100644 index 0000000000..231de48783 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-cc.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-cc", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-ck.js b/1.2.30/i18n/angular-locale_en-ck.js new file mode 100644 index 0000000000..a03b0512e5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-ck.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-ck", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-cm.js b/1.2.30/i18n/angular-locale_en-cm.js new file mode 100644 index 0000000000..ab5494b747 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-cm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-cm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-cx.js b/1.2.30/i18n/angular-locale_en-cx.js new file mode 100644 index 0000000000..a1e0478a93 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-cx.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-cx", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-dg.js b/1.2.30/i18n/angular-locale_en-dg.js new file mode 100644 index 0000000000..0ce3ef058c --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-dg.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-dg", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-dm.js b/1.2.30/i18n/angular-locale_en-dm.js new file mode 100644 index 0000000000..71d0931ccf --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-dm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-dm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-dsrt-us.js b/1.2.30/i18n/angular-locale_en-dsrt-us.js new file mode 100644 index 0000000000..0ede3159eb --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-dsrt-us.js @@ -0,0 +1,99 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\ud801\udc08\ud801\udc23", + "\ud801\udc11\ud801\udc23" + ], + "DAY": [ + "\ud801\udc1d\ud801\udc32\ud801\udc4c\ud801\udc3c\ud801\udc29", + "\ud801\udc23\ud801\udc32\ud801\udc4c\ud801\udc3c\ud801\udc29", + "\ud801\udc13\ud801\udc2d\ud801\udc46\ud801\udc3c\ud801\udc29", + "\ud801\udc0e\ud801\udc2f\ud801\udc4c\ud801\udc46\ud801\udc3c\ud801\udc29", + "\ud801\udc1b\ud801\udc32\ud801\udc49\ud801\udc46\ud801\udc3c\ud801\udc29", + "\ud801\udc19\ud801\udc49\ud801\udc34\ud801\udc3c\ud801\udc29", + "\ud801\udc1d\ud801\udc30\ud801\udc3b\ud801\udc32\ud801\udc49\ud801\udc3c\ud801\udc29" + ], + "MONTH": [ + "\ud801\udc16\ud801\udc30\ud801\udc4c\ud801\udc37\ud801\udc2d\ud801\udc2f\ud801\udc49\ud801\udc28", + "\ud801\udc19\ud801\udc2f\ud801\udc3a\ud801\udc49\ud801\udc2d\ud801\udc2f\ud801\udc49\ud801\udc28", + "\ud801\udc23\ud801\udc2a\ud801\udc49\ud801\udc3d", + "\ud801\udc01\ud801\udc39\ud801\udc49\ud801\udc2e\ud801\udc4a", + "\ud801\udc23\ud801\udc29", + "\ud801\udc16\ud801\udc2d\ud801\udc4c", + "\ud801\udc16\ud801\udc2d\ud801\udc4a\ud801\udc34", + "\ud801\udc02\ud801\udc40\ud801\udc32\ud801\udc45\ud801\udc3b", + "\ud801\udc1d\ud801\udc2f\ud801\udc39\ud801\udc3b\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49", + "\ud801\udc09\ud801\udc3f\ud801\udc3b\ud801\udc2c\ud801\udc3a\ud801\udc32\ud801\udc49", + "\ud801\udc24\ud801\udc2c\ud801\udc42\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49", + "\ud801\udc14\ud801\udc28\ud801\udc45\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49" + ], + "SHORTDAY": [ + "\ud801\udc1d\ud801\udc32\ud801\udc4c", + "\ud801\udc23\ud801\udc32\ud801\udc4c", + "\ud801\udc13\ud801\udc2d\ud801\udc46", + "\ud801\udc0e\ud801\udc2f\ud801\udc4c", + "\ud801\udc1b\ud801\udc32\ud801\udc49", + "\ud801\udc19\ud801\udc49\ud801\udc34", + "\ud801\udc1d\ud801\udc30\ud801\udc3b" + ], + "SHORTMONTH": [ + "\ud801\udc16\ud801\udc30\ud801\udc4c", + "\ud801\udc19\ud801\udc2f\ud801\udc3a", + "\ud801\udc23\ud801\udc2a\ud801\udc49", + "\ud801\udc01\ud801\udc39\ud801\udc49", + "\ud801\udc23\ud801\udc29", + "\ud801\udc16\ud801\udc2d\ud801\udc4c", + "\ud801\udc16\ud801\udc2d\ud801\udc4a", + "\ud801\udc02\ud801\udc40", + "\ud801\udc1d\ud801\udc2f\ud801\udc39", + "\ud801\udc09\ud801\udc3f\ud801\udc3b", + "\ud801\udc24\ud801\udc2c\ud801\udc42", + "\ud801\udc14\ud801\udc28\ud801\udc45" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "macFrac": 0, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "macFrac": 0, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "(\u00a4", + "negSuf": ")", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-dsrt-us", + "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-dsrt.js b/1.2.30/i18n/angular-locale_en-dsrt.js new file mode 100644 index 0000000000..5e86ec53d8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-dsrt.js @@ -0,0 +1,99 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\ud801\udc08\ud801\udc23", + "\ud801\udc11\ud801\udc23" + ], + "DAY": [ + "\ud801\udc1d\ud801\udc32\ud801\udc4c\ud801\udc3c\ud801\udc29", + "\ud801\udc23\ud801\udc32\ud801\udc4c\ud801\udc3c\ud801\udc29", + "\ud801\udc13\ud801\udc2d\ud801\udc46\ud801\udc3c\ud801\udc29", + "\ud801\udc0e\ud801\udc2f\ud801\udc4c\ud801\udc46\ud801\udc3c\ud801\udc29", + "\ud801\udc1b\ud801\udc32\ud801\udc49\ud801\udc46\ud801\udc3c\ud801\udc29", + "\ud801\udc19\ud801\udc49\ud801\udc34\ud801\udc3c\ud801\udc29", + "\ud801\udc1d\ud801\udc30\ud801\udc3b\ud801\udc32\ud801\udc49\ud801\udc3c\ud801\udc29" + ], + "MONTH": [ + "\ud801\udc16\ud801\udc30\ud801\udc4c\ud801\udc37\ud801\udc2d\ud801\udc2f\ud801\udc49\ud801\udc28", + "\ud801\udc19\ud801\udc2f\ud801\udc3a\ud801\udc49\ud801\udc2d\ud801\udc2f\ud801\udc49\ud801\udc28", + "\ud801\udc23\ud801\udc2a\ud801\udc49\ud801\udc3d", + "\ud801\udc01\ud801\udc39\ud801\udc49\ud801\udc2e\ud801\udc4a", + "\ud801\udc23\ud801\udc29", + "\ud801\udc16\ud801\udc2d\ud801\udc4c", + "\ud801\udc16\ud801\udc2d\ud801\udc4a\ud801\udc34", + "\ud801\udc02\ud801\udc40\ud801\udc32\ud801\udc45\ud801\udc3b", + "\ud801\udc1d\ud801\udc2f\ud801\udc39\ud801\udc3b\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49", + "\ud801\udc09\ud801\udc3f\ud801\udc3b\ud801\udc2c\ud801\udc3a\ud801\udc32\ud801\udc49", + "\ud801\udc24\ud801\udc2c\ud801\udc42\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49", + "\ud801\udc14\ud801\udc28\ud801\udc45\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49" + ], + "SHORTDAY": [ + "\ud801\udc1d\ud801\udc32\ud801\udc4c", + "\ud801\udc23\ud801\udc32\ud801\udc4c", + "\ud801\udc13\ud801\udc2d\ud801\udc46", + "\ud801\udc0e\ud801\udc2f\ud801\udc4c", + "\ud801\udc1b\ud801\udc32\ud801\udc49", + "\ud801\udc19\ud801\udc49\ud801\udc34", + "\ud801\udc1d\ud801\udc30\ud801\udc3b" + ], + "SHORTMONTH": [ + "\ud801\udc16\ud801\udc30\ud801\udc4c", + "\ud801\udc19\ud801\udc2f\ud801\udc3a", + "\ud801\udc23\ud801\udc2a\ud801\udc49", + "\ud801\udc01\ud801\udc39\ud801\udc49", + "\ud801\udc23\ud801\udc29", + "\ud801\udc16\ud801\udc2d\ud801\udc4c", + "\ud801\udc16\ud801\udc2d\ud801\udc4a", + "\ud801\udc02\ud801\udc40", + "\ud801\udc1d\ud801\udc2f\ud801\udc39", + "\ud801\udc09\ud801\udc3f\ud801\udc3b", + "\ud801\udc24\ud801\udc2c\ud801\udc42", + "\ud801\udc14\ud801\udc28\ud801\udc45" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "macFrac": 0, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "macFrac": 0, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "(\u00a4", + "negSuf": ")", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-dsrt", + "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-er.js b/1.2.30/i18n/angular-locale_en-er.js new file mode 100644 index 0000000000..9b1d66b8d0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-er.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Nfk", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-er", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-fj.js b/1.2.30/i18n/angular-locale_en-fj.js new file mode 100644 index 0000000000..0abca889f6 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-fj.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-fj", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-fk.js b/1.2.30/i18n/angular-locale_en-fk.js new file mode 100644 index 0000000000..85cb2baff5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-fk.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-fk", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-fm.js b/1.2.30/i18n/angular-locale_en-fm.js new file mode 100644 index 0000000000..5c1b3841c0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-fm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-fm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-gb.js b/1.2.30/i18n/angular-locale_en-gb.js new file mode 100644 index 0000000000..f10e43aafb --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-gb.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "am", + "pm" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-gb", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-gd.js b/1.2.30/i18n/angular-locale_en-gd.js new file mode 100644 index 0000000000..088c7276ed --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-gd.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-gd", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-gg.js b/1.2.30/i18n/angular-locale_en-gg.js new file mode 100644 index 0000000000..924166c4d3 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-gg.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-gg", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-gh.js b/1.2.30/i18n/angular-locale_en-gh.js new file mode 100644 index 0000000000..ee43387a6a --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-gh.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "GHS", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-gh", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-gi.js b/1.2.30/i18n/angular-locale_en-gi.js new file mode 100644 index 0000000000..ba2bceb20d --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-gi.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-gi", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-gm.js b/1.2.30/i18n/angular-locale_en-gm.js new file mode 100644 index 0000000000..02ba20411c --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-gm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "GMD", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-gm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-gu.js b/1.2.30/i18n/angular-locale_en-gu.js new file mode 100644 index 0000000000..4ecf93253d --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-gu.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-gu", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-gy.js b/1.2.30/i18n/angular-locale_en-gy.js new file mode 100644 index 0000000000..b845e533a4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-gy.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-gy", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-hk.js b/1.2.30/i18n/angular-locale_en-hk.js new file mode 100644 index 0000000000..6fc1837282 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-hk.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y h:mm:ss a", + "mediumDate": "d MMM, y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-hk", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-ie.js b/1.2.30/i18n/angular-locale_en-ie.js new file mode 100644 index 0000000000..acd24d455a --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-ie.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-ie", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-im.js b/1.2.30/i18n/angular-locale_en-im.js new file mode 100644 index 0000000000..8df03588b9 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-im.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-im", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-in.js b/1.2.30/i18n/angular-locale_en-in.js new file mode 100644 index 0000000000..a71a8926e3 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-in.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "en-in", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-io.js b/1.2.30/i18n/angular-locale_en-io.js new file mode 100644 index 0000000000..6ed08130ed --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-io.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-io", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-iso.js b/1.2.30/i18n/angular-locale_en-iso.js new file mode 100644 index 0000000000..e710958eba --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-iso.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yyyy-MM-dd HH:mm", + "shortDate": "yyyy-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-iso", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-je.js b/1.2.30/i18n/angular-locale_en-je.js new file mode 100644 index 0000000000..745fbad1d5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-je.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-je", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-jm.js b/1.2.30/i18n/angular-locale_en-jm.js new file mode 100644 index 0000000000..68f65f637f --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-jm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-jm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-ke.js b/1.2.30/i18n/angular-locale_en-ke.js new file mode 100644 index 0000000000..f8fc4f7bcd --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-ki.js b/1.2.30/i18n/angular-locale_en-ki.js new file mode 100644 index 0000000000..8d35d666f8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-ki.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-ki", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-kn.js b/1.2.30/i18n/angular-locale_en-kn.js new file mode 100644 index 0000000000..1cbe4aa17b --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-kn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-kn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-ky.js b/1.2.30/i18n/angular-locale_en-ky.js new file mode 100644 index 0000000000..16c965205d --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-ky.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-ky", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-lc.js b/1.2.30/i18n/angular-locale_en-lc.js new file mode 100644 index 0000000000..b71cc7aba5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-lc.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-lc", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-lr.js b/1.2.30/i18n/angular-locale_en-lr.js new file mode 100644 index 0000000000..af84233d2c --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-lr.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-lr", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-ls.js b/1.2.30/i18n/angular-locale_en-ls.js new file mode 100644 index 0000000000..897c63613b --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-ls.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-ls", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-mg.js b/1.2.30/i18n/angular-locale_en-mg.js new file mode 100644 index 0000000000..ee387d65fc --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-mg.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ar", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-mg", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-mh.js b/1.2.30/i18n/angular-locale_en-mh.js new file mode 100644 index 0000000000..771069da81 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-mh.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-mh", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-mo.js b/1.2.30/i18n/angular-locale_en-mo.js new file mode 100644 index 0000000000..8fa1c08d8f --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-mo.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MOP", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-mo", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-mp.js b/1.2.30/i18n/angular-locale_en-mp.js new file mode 100644 index 0000000000..337b48b8df --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-mp.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-mp", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-ms.js b/1.2.30/i18n/angular-locale_en-ms.js new file mode 100644 index 0000000000..5b3ed0024d --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-ms.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-ms", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-mt.js b/1.2.30/i18n/angular-locale_en-mt.js new file mode 100644 index 0000000000..37e2e64b5e --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-mt.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "dd MMMM y", + "medium": "dd MMM y h:mm:ss a", + "mediumDate": "dd MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-mt", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-mu.js b/1.2.30/i18n/angular-locale_en-mu.js new file mode 100644 index 0000000000..4beaddf57d --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-mu.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MURs", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-mu", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-mw.js b/1.2.30/i18n/angular-locale_en-mw.js new file mode 100644 index 0000000000..b85e53c383 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-mw.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MWK", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-mw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-na.js b/1.2.30/i18n/angular-locale_en-na.js new file mode 100644 index 0000000000..efac8f8339 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-na.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-na", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-nf.js b/1.2.30/i18n/angular-locale_en-nf.js new file mode 100644 index 0000000000..79f32e3449 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-nf.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-nf", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-ng.js b/1.2.30/i18n/angular-locale_en-ng.js new file mode 100644 index 0000000000..d5633c9689 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-ng.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20a6", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-ng", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-nr.js b/1.2.30/i18n/angular-locale_en-nr.js new file mode 100644 index 0000000000..4cfa8778e8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-nr.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-nr", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-nu.js b/1.2.30/i18n/angular-locale_en-nu.js new file mode 100644 index 0000000000..662c0dfe97 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-nu.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-nu", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-nz.js b/1.2.30/i18n/angular-locale_en-nz.js new file mode 100644 index 0000000000..194cc8898b --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-nz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d/MM/y h:mm:ss a", + "mediumDate": "d/MM/y", + "mediumTime": "h:mm:ss a", + "short": "d/MM/yy h:mm a", + "shortDate": "d/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-nz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-pg.js b/1.2.30/i18n/angular-locale_en-pg.js new file mode 100644 index 0000000000..9c23b65677 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-pg.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "PGK", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-pg", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-ph.js b/1.2.30/i18n/angular-locale_en-ph.js new file mode 100644 index 0000000000..3a5bb5f581 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-ph.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b1", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-ph", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-pk.js b/1.2.30/i18n/angular-locale_en-pk.js new file mode 100644 index 0000000000..a012fabffe --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-pk.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rs", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "en-pk", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-pn.js b/1.2.30/i18n/angular-locale_en-pn.js new file mode 100644 index 0000000000..00af04c457 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-pn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-pn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-pr.js b/1.2.30/i18n/angular-locale_en-pr.js new file mode 100644 index 0000000000..29470c4376 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-pr.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-pr", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-pw.js b/1.2.30/i18n/angular-locale_en-pw.js new file mode 100644 index 0000000000..8f7fb359ec --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-pw.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-pw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-rw.js b/1.2.30/i18n/angular-locale_en-rw.js new file mode 100644 index 0000000000..7b22eecad7 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-rw.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "RF", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-rw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-sb.js b/1.2.30/i18n/angular-locale_en-sb.js new file mode 100644 index 0000000000..a9520b8352 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-sb.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-sb", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-sc.js b/1.2.30/i18n/angular-locale_en-sc.js new file mode 100644 index 0000000000..7482aa87f6 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-sc.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "SCR", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-sc", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-sd.js b/1.2.30/i18n/angular-locale_en-sd.js new file mode 100644 index 0000000000..1af55d184c --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-sd.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "SDG", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-sd", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-sg.js b/1.2.30/i18n/angular-locale_en-sg.js new file mode 100644 index 0000000000..61909d8fe0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-sg.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-sg", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-sh.js b/1.2.30/i18n/angular-locale_en-sh.js new file mode 100644 index 0000000000..f001db73a6 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-sh.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-sh", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-sl.js b/1.2.30/i18n/angular-locale_en-sl.js new file mode 100644 index 0000000000..5bcc3c52e6 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-sl.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "SLL", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-sl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-ss.js b/1.2.30/i18n/angular-locale_en-ss.js new file mode 100644 index 0000000000..70bf92381a --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-ss.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "SSP", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-ss", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-sx.js b/1.2.30/i18n/angular-locale_en-sx.js new file mode 100644 index 0000000000..f645168c64 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-sx.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "ANG", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-sx", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-sz.js b/1.2.30/i18n/angular-locale_en-sz.js new file mode 100644 index 0000000000..1d233ee202 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-sz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "SZL", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-sz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-tc.js b/1.2.30/i18n/angular-locale_en-tc.js new file mode 100644 index 0000000000..e6483b9d8e --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-tc.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-tc", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-tk.js b/1.2.30/i18n/angular-locale_en-tk.js new file mode 100644 index 0000000000..4cd119b1f8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-tk.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-tk", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-to.js b/1.2.30/i18n/angular-locale_en-to.js new file mode 100644 index 0000000000..13fb98ecd9 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-to.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "T$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-to", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-tt.js b/1.2.30/i18n/angular-locale_en-tt.js new file mode 100644 index 0000000000..d1f5a38f46 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-tt.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-tt", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-tv.js b/1.2.30/i18n/angular-locale_en-tv.js new file mode 100644 index 0000000000..44a0384c3d --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-tv.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-tv", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-tz.js b/1.2.30/i18n/angular-locale_en-tz.js new file mode 100644 index 0000000000..53115fdc18 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-tz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-tz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-ug.js b/1.2.30/i18n/angular-locale_en-ug.js new file mode 100644 index 0000000000..990ea4427f --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-ug.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "UGX", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-ug", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-um.js b/1.2.30/i18n/angular-locale_en-um.js new file mode 100644 index 0000000000..a3e9951c18 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-um.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-um", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-us.js b/1.2.30/i18n/angular-locale_en-us.js new file mode 100644 index 0000000000..b490f2a94b --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-us.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-us", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-vc.js b/1.2.30/i18n/angular-locale_en-vc.js new file mode 100644 index 0000000000..427a38cb16 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-vc.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-vc", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-vg.js b/1.2.30/i18n/angular-locale_en-vg.js new file mode 100644 index 0000000000..d1eb73514c --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-vg.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-vg", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-vi.js b/1.2.30/i18n/angular-locale_en-vi.js new file mode 100644 index 0000000000..51d6d0b1ed --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-vi.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-vi", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-vu.js b/1.2.30/i18n/angular-locale_en-vu.js new file mode 100644 index 0000000000..66236b6b42 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-vu.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "VUV", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-vu", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-ws.js b/1.2.30/i18n/angular-locale_en-ws.js new file mode 100644 index 0000000000..8458ac4c85 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-ws.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "WST", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-ws", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-za.js b/1.2.30/i18n/angular-locale_en-za.js new file mode 100644 index 0000000000..b10fbf5bf6 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-za.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "dd MMMM y", + "medium": "dd MMM y h:mm:ss a", + "mediumDate": "dd MMM y", + "mediumTime": "h:mm:ss a", + "short": "y/MM/dd h:mm a", + "shortDate": "y/MM/dd", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-za", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-zm.js b/1.2.30/i18n/angular-locale_en-zm.js new file mode 100644 index 0000000000..bb68be9795 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-zm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "ZMW", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-zm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en-zw.js b/1.2.30/i18n/angular-locale_en-zw.js new file mode 100644 index 0000000000..7b06ffb41e --- /dev/null +++ b/1.2.30/i18n/angular-locale_en-zw.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "dd MMMM y", + "medium": "dd MMM,y h:mm:ss a", + "mediumDate": "dd MMM,y", + "mediumTime": "h:mm:ss a", + "short": "d/M/y h:mm a", + "shortDate": "d/M/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en-zw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_en.js b/1.2.30/i18n/angular-locale_en.js new file mode 100644 index 0000000000..0e5e574756 --- /dev/null +++ b/1.2.30/i18n/angular-locale_en.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "MONTH": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "SHORTDAY": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "en", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_eo-001.js b/1.2.30/i18n/angular-locale_eo-001.js new file mode 100644 index 0000000000..9905da1cb1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_eo-001.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "atm", + "ptm" + ], + "DAY": [ + "diman\u0109o", + "lundo", + "mardo", + "merkredo", + "\u0135a\u016ddo", + "vendredo", + "sabato" + ], + "MONTH": [ + "januaro", + "februaro", + "marto", + "aprilo", + "majo", + "junio", + "julio", + "a\u016dgusto", + "septembro", + "oktobro", + "novembro", + "decembro" + ], + "SHORTDAY": [ + "di", + "lu", + "ma", + "me", + "\u0135a", + "ve", + "sa" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "a\u016dg", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE, d-'a' 'de' MMMM y", + "longDate": "y-MMMM-dd", + "medium": "y-MMM-dd HH:mm:ss", + "mediumDate": "y-MMM-dd", + "mediumTime": "HH:mm:ss", + "short": "yy-MM-dd HH:mm", + "shortDate": "yy-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "eo-001", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_eo.js b/1.2.30/i18n/angular-locale_eo.js new file mode 100644 index 0000000000..1c8a9fc215 --- /dev/null +++ b/1.2.30/i18n/angular-locale_eo.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "atm", + "ptm" + ], + "DAY": [ + "diman\u0109o", + "lundo", + "mardo", + "merkredo", + "\u0135a\u016ddo", + "vendredo", + "sabato" + ], + "MONTH": [ + "januaro", + "februaro", + "marto", + "aprilo", + "majo", + "junio", + "julio", + "a\u016dgusto", + "septembro", + "oktobro", + "novembro", + "decembro" + ], + "SHORTDAY": [ + "di", + "lu", + "ma", + "me", + "\u0135a", + "ve", + "sa" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "a\u016dg", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE, d-'a' 'de' MMMM y", + "longDate": "y-MMMM-dd", + "medium": "y-MMM-dd HH:mm:ss", + "mediumDate": "y-MMM-dd", + "mediumTime": "HH:mm:ss", + "short": "yy-MM-dd HH:mm", + "shortDate": "yy-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "eo", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-419.js b/1.2.30/i18n/angular-locale_es-419.js new file mode 100644 index 0000000000..1385dca8f1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-419.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "es-419", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-ar.js b/1.2.30/i18n/angular-locale_es-ar.js new file mode 100644 index 0000000000..7aec28b376 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-ar.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-ar", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-bo.js b/1.2.30/i18n/angular-locale_es-bo.js new file mode 100644 index 0000000000..84479983bd --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-bo.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Bs", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-bo", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-cl.js b/1.2.30/i18n/angular-locale_es-cl.js new file mode 100644 index 0000000000..0f27c32351 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-cl.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "dd-MM-y H:mm:ss", + "mediumDate": "dd-MM-y", + "mediumTime": "H:mm:ss", + "short": "dd-MM-yy H:mm", + "shortDate": "dd-MM-yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "es-cl", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-co.js b/1.2.30/i18n/angular-locale_es-co.js new file mode 100644 index 0000000000..8c3110e403 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-co.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/MM/y h:mm:ss a", + "mediumDate": "d/MM/y", + "mediumTime": "h:mm:ss a", + "short": "d/MM/yy h:mm a", + "shortDate": "d/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-co", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-cr.js b/1.2.30/i18n/angular-locale_es-cr.js new file mode 100644 index 0000000000..6639139b78 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-cr.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20a1", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-cr", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-cu.js b/1.2.30/i18n/angular-locale_es-cu.js new file mode 100644 index 0000000000..31668afffd --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-cu.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-cu", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-do.js b/1.2.30/i18n/angular-locale_es-do.js new file mode 100644 index 0000000000..b669a92a8d --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-do.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-do", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-ea.js b/1.2.30/i18n/angular-locale_es-ea.js new file mode 100644 index 0000000000..680fda1308 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-ea.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-ea", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-ec.js b/1.2.30/i18n/angular-locale_es-ec.js new file mode 100644 index 0000000000..03bbbe1027 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-ec.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "es-ec", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-es.js b/1.2.30/i18n/angular-locale_es-es.js new file mode 100644 index 0000000000..6ca47d2843 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-es.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-es", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-gq.js b/1.2.30/i18n/angular-locale_es-gq.js new file mode 100644 index 0000000000..89acb0f606 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-gq.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "es-gq", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-gt.js b/1.2.30/i18n/angular-locale_es-gt.js new file mode 100644 index 0000000000..4af3d3f885 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-gt.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/MM/y H:mm:ss", + "mediumDate": "d/MM/y", + "mediumTime": "H:mm:ss", + "short": "d/MM/yy H:mm", + "shortDate": "d/MM/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Q", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-gt", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-hn.js b/1.2.30/i18n/angular-locale_es-hn.js new file mode 100644 index 0000000000..28d1e6095b --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-hn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE dd 'de' MMMM 'de' y", + "longDate": "dd 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "L", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-hn", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-ic.js b/1.2.30/i18n/angular-locale_es-ic.js new file mode 100644 index 0000000000..b01c4f8fa0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-ic.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-ic", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-mx.js b/1.2.30/i18n/angular-locale_es-mx.js new file mode 100644 index 0000000000..46b0ad65d7 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-mx.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9r.", + "jue.", + "vier.", + "s\u00e1b" + ], + "SHORTMONTH": [ + "ene.", + "febr.", + "mzo.", + "abr.", + "my.", + "jun.", + "jul.", + "ag.", + "set.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "es-mx", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-ni.js b/1.2.30/i18n/angular-locale_es-ni.js new file mode 100644 index 0000000000..493508866b --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-ni.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "C$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-ni", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-pa.js b/1.2.30/i18n/angular-locale_es-pa.js new file mode 100644 index 0000000000..7087acc3ac --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-pa.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "MM/dd/y H:mm:ss", + "mediumDate": "MM/dd/y", + "mediumTime": "H:mm:ss", + "short": "MM/dd/yy H:mm", + "shortDate": "MM/dd/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "B/.", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-pa", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-pe.js b/1.2.30/i18n/angular-locale_es-pe.js new file mode 100644 index 0000000000..be66a56ad2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-pe.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/MM/yy H:mm", + "shortDate": "d/MM/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "S/.", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-pe", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-ph.js b/1.2.30/i18n/angular-locale_es-ph.js new file mode 100644 index 0000000000..0b3307566e --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-ph.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b1", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-ph", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-pr.js b/1.2.30/i18n/angular-locale_es-pr.js new file mode 100644 index 0000000000..4d0afaff9d --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-pr.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "MM/dd/y h:mm:ss a", + "mediumDate": "MM/dd/y", + "mediumTime": "h:mm:ss a", + "short": "MM/dd/yy h:mm a", + "shortDate": "MM/dd/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-pr", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-py.js b/1.2.30/i18n/angular-locale_es-py.js new file mode 100644 index 0000000000..da580b1959 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-py.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Gs", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "es-py", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-sv.js b/1.2.30/i18n/angular-locale_es-sv.js new file mode 100644 index 0000000000..1917fd2992 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-sv.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-sv", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-us.js b/1.2.30/i18n/angular-locale_es-us.js new file mode 100644 index 0000000000..e8309ce565 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-us.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es-us", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-uy.js b/1.2.30/i18n/angular-locale_es-uy.js new file mode 100644 index 0000000000..b79c7bd26a --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-uy.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "es-uy", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es-ve.js b/1.2.30/i18n/angular-locale_es-ve.js new file mode 100644 index 0000000000..e98ac81c58 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es-ve.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Bs", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "es-ve", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_es.js b/1.2.30/i18n/angular-locale_es.js new file mode 100644 index 0000000000..2e76d5fcc7 --- /dev/null +++ b/1.2.30/i18n/angular-locale_es.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a. m.", + "p. m." + ], + "DAY": [ + "domingo", + "lunes", + "martes", + "mi\u00e9rcoles", + "jueves", + "viernes", + "s\u00e1bado" + ], + "MONTH": [ + "enero", + "febrero", + "marzo", + "abril", + "mayo", + "junio", + "julio", + "agosto", + "septiembre", + "octubre", + "noviembre", + "diciembre" + ], + "SHORTDAY": [ + "dom.", + "lun.", + "mar.", + "mi\u00e9.", + "jue.", + "vie.", + "s\u00e1b." + ], + "SHORTMONTH": [ + "ene.", + "feb.", + "mar.", + "abr.", + "may.", + "jun.", + "jul.", + "ago.", + "sept.", + "oct.", + "nov.", + "dic." + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d/M/y H:mm:ss", + "mediumDate": "d/M/y", + "mediumTime": "H:mm:ss", + "short": "d/M/yy H:mm", + "shortDate": "d/M/yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "es", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_et-ee.js b/1.2.30/i18n/angular-locale_et-ee.js new file mode 100644 index 0000000000..7618a4351d --- /dev/null +++ b/1.2.30/i18n/angular-locale_et-ee.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "p\u00fchap\u00e4ev", + "esmasp\u00e4ev", + "teisip\u00e4ev", + "kolmap\u00e4ev", + "neljap\u00e4ev", + "reede", + "laup\u00e4ev" + ], + "MONTH": [ + "jaanuar", + "veebruar", + "m\u00e4rts", + "aprill", + "mai", + "juuni", + "juuli", + "august", + "september", + "oktoober", + "november", + "detsember" + ], + "SHORTDAY": [ + "P", + "E", + "T", + "K", + "N", + "R", + "L" + ], + "SHORTMONTH": [ + "jaan", + "veebr", + "m\u00e4rts", + "apr", + "mai", + "juuni", + "juuli", + "aug", + "sept", + "okt", + "nov", + "dets" + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "dd.MM.y H:mm.ss", + "mediumDate": "dd.MM.y", + "mediumTime": "H:mm.ss", + "short": "dd.MM.yy H:mm", + "shortDate": "dd.MM.yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "et-ee", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_et.js b/1.2.30/i18n/angular-locale_et.js new file mode 100644 index 0000000000..1c52ec09f4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_et.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "p\u00fchap\u00e4ev", + "esmasp\u00e4ev", + "teisip\u00e4ev", + "kolmap\u00e4ev", + "neljap\u00e4ev", + "reede", + "laup\u00e4ev" + ], + "MONTH": [ + "jaanuar", + "veebruar", + "m\u00e4rts", + "aprill", + "mai", + "juuni", + "juuli", + "august", + "september", + "oktoober", + "november", + "detsember" + ], + "SHORTDAY": [ + "P", + "E", + "T", + "K", + "N", + "R", + "L" + ], + "SHORTMONTH": [ + "jaan", + "veebr", + "m\u00e4rts", + "apr", + "mai", + "juuni", + "juuli", + "aug", + "sept", + "okt", + "nov", + "dets" + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "dd.MM.y H:mm.ss", + "mediumDate": "dd.MM.y", + "mediumTime": "H:mm.ss", + "short": "dd.MM.yy H:mm", + "shortDate": "dd.MM.yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "et", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_eu-es.js b/1.2.30/i18n/angular-locale_eu-es.js new file mode 100644 index 0000000000..ea8e797b0b --- /dev/null +++ b/1.2.30/i18n/angular-locale_eu-es.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "igandea", + "astelehena", + "asteartea", + "asteazkena", + "osteguna", + "ostirala", + "larunbata" + ], + "MONTH": [ + "urtarrilak", + "otsailak", + "martxoak", + "apirilak", + "maiatzak", + "ekainak", + "uztailak", + "abuztuak", + "irailak", + "urriak", + "azaroak", + "abenduak" + ], + "SHORTDAY": [ + "ig.", + "al.", + "ar.", + "az.", + "og.", + "or.", + "lr." + ], + "SHORTMONTH": [ + "urt.", + "ots.", + "mar.", + "api.", + "mai.", + "eka.", + "uzt.", + "abu.", + "ira.", + "urr.", + "aza.", + "abe." + ], + "fullDate": "y('e')'ko' MMMM d, EEEE", + "longDate": "y('e')'ko' MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "eu-es", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_eu.js b/1.2.30/i18n/angular-locale_eu.js new file mode 100644 index 0000000000..161b77a807 --- /dev/null +++ b/1.2.30/i18n/angular-locale_eu.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "igandea", + "astelehena", + "asteartea", + "asteazkena", + "osteguna", + "ostirala", + "larunbata" + ], + "MONTH": [ + "urtarrilak", + "otsailak", + "martxoak", + "apirilak", + "maiatzak", + "ekainak", + "uztailak", + "abuztuak", + "irailak", + "urriak", + "azaroak", + "abenduak" + ], + "SHORTDAY": [ + "ig.", + "al.", + "ar.", + "az.", + "og.", + "or.", + "lr." + ], + "SHORTMONTH": [ + "urt.", + "ots.", + "mar.", + "api.", + "mai.", + "eka.", + "uzt.", + "abu.", + "ira.", + "urr.", + "aza.", + "abe." + ], + "fullDate": "y('e')'ko' MMMM d, EEEE", + "longDate": "y('e')'ko' MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "eu", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ewo-cm.js b/1.2.30/i18n/angular-locale_ewo-cm.js new file mode 100644 index 0000000000..c9b9189b32 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ewo-cm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "k\u00edk\u00edr\u00edg", + "ng\u0259g\u00f3g\u0259le" + ], + "DAY": [ + "s\u0254\u0301nd\u0254", + "m\u0254\u0301ndi", + "s\u0254\u0301nd\u0254 m\u0259l\u00fa m\u0259\u0301b\u025b\u030c", + "s\u0254\u0301nd\u0254 m\u0259l\u00fa m\u0259\u0301l\u025b\u0301", + "s\u0254\u0301nd\u0254 m\u0259l\u00fa m\u0259\u0301nyi", + "f\u00falad\u00e9", + "s\u00e9rad\u00e9" + ], + "MONTH": [ + "ng\u0254n os\u00fa", + "ng\u0254n b\u025b\u030c", + "ng\u0254n l\u00e1la", + "ng\u0254n nyina", + "ng\u0254n t\u00e1na", + "ng\u0254n sam\u0259na", + "ng\u0254n zamgb\u00e1la", + "ng\u0254n mwom", + "ng\u0254n ebul\u00fa", + "ng\u0254n aw\u00f3m", + "ng\u0254n aw\u00f3m ai dzi\u00e1", + "ng\u0254n aw\u00f3m ai b\u025b\u030c" + ], + "SHORTDAY": [ + "s\u0254\u0301n", + "m\u0254\u0301n", + "smb", + "sml", + "smn", + "f\u00fal", + "s\u00e9r" + ], + "SHORTMONTH": [ + "ngo", + "ngb", + "ngl", + "ngn", + "ngt", + "ngs", + "ngz", + "ngm", + "nge", + "nga", + "ngad", + "ngab" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ewo-cm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ewo.js b/1.2.30/i18n/angular-locale_ewo.js new file mode 100644 index 0000000000..1eb30edf88 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ewo.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "k\u00edk\u00edr\u00edg", + "ng\u0259g\u00f3g\u0259le" + ], + "DAY": [ + "s\u0254\u0301nd\u0254", + "m\u0254\u0301ndi", + "s\u0254\u0301nd\u0254 m\u0259l\u00fa m\u0259\u0301b\u025b\u030c", + "s\u0254\u0301nd\u0254 m\u0259l\u00fa m\u0259\u0301l\u025b\u0301", + "s\u0254\u0301nd\u0254 m\u0259l\u00fa m\u0259\u0301nyi", + "f\u00falad\u00e9", + "s\u00e9rad\u00e9" + ], + "MONTH": [ + "ng\u0254n os\u00fa", + "ng\u0254n b\u025b\u030c", + "ng\u0254n l\u00e1la", + "ng\u0254n nyina", + "ng\u0254n t\u00e1na", + "ng\u0254n sam\u0259na", + "ng\u0254n zamgb\u00e1la", + "ng\u0254n mwom", + "ng\u0254n ebul\u00fa", + "ng\u0254n aw\u00f3m", + "ng\u0254n aw\u00f3m ai dzi\u00e1", + "ng\u0254n aw\u00f3m ai b\u025b\u030c" + ], + "SHORTDAY": [ + "s\u0254\u0301n", + "m\u0254\u0301n", + "smb", + "sml", + "smn", + "f\u00fal", + "s\u00e9r" + ], + "SHORTMONTH": [ + "ngo", + "ngb", + "ngl", + "ngn", + "ngt", + "ngs", + "ngz", + "ngm", + "nge", + "nga", + "ngad", + "ngab" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ewo", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fa-af.js b/1.2.30/i18n/angular-locale_fa-af.js new file mode 100644 index 0000000000..511da9c6cb --- /dev/null +++ b/1.2.30/i18n/angular-locale_fa-af.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0642\u0628\u0644\u200c\u0627\u0632\u0638\u0647\u0631", + "\u0628\u0639\u062f\u0627\u0632\u0638\u0647\u0631" + ], + "DAY": [ + "\u06cc\u06a9\u0634\u0646\u0628\u0647", + "\u062f\u0648\u0634\u0646\u0628\u0647", + "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", + "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", + "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", + "\u062c\u0645\u0639\u0647", + "\u0634\u0646\u0628\u0647" + ], + "MONTH": [ + "\u062c\u0646\u0648\u0631\u06cc", + "\u0641\u0628\u0631\u0648\u0631\u06cc", + "\u0645\u0627\u0631\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u06cc", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644\u0627\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u067e\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u06cc\u06a9\u0634\u0646\u0628\u0647", + "\u062f\u0648\u0634\u0646\u0628\u0647", + "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", + "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", + "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", + "\u062c\u0645\u0639\u0647", + "\u0634\u0646\u0628\u0647" + ], + "SHORTMONTH": [ + "\u062c\u0646\u0648", + "\u0641\u0648\u0631\u06cc\u0647\u0654", + "\u0645\u0627\u0631\u0633", + "\u0622\u0648\u0631\u06cc\u0644", + "\u0645\u0640\u06cc", + "\u0698\u0648\u0626\u0646", + "\u062c\u0648\u0644", + "\u0627\u0648\u062a", + "\u0633\u067e\u062a\u0627\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0628\u0631", + "\u0646\u0648\u0627\u0645\u0628\u0631", + "\u062f\u0633\u0645" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y H:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "H:mm:ss", + "short": "y/M/d H:mm", + "shortDate": "y/M/d", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Af.", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u200e\u00a4-", + "negSuf": "", + "posPre": "\u200e\u00a4", + "posSuf": "" + } + ] + }, + "id": "fa-af", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fa-ir.js b/1.2.30/i18n/angular-locale_fa-ir.js new file mode 100644 index 0000000000..beef6a2051 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fa-ir.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0642\u0628\u0644\u200c\u0627\u0632\u0638\u0647\u0631", + "\u0628\u0639\u062f\u0627\u0632\u0638\u0647\u0631" + ], + "DAY": [ + "\u06cc\u06a9\u0634\u0646\u0628\u0647", + "\u062f\u0648\u0634\u0646\u0628\u0647", + "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", + "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", + "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", + "\u062c\u0645\u0639\u0647", + "\u0634\u0646\u0628\u0647" + ], + "MONTH": [ + "\u0698\u0627\u0646\u0648\u06cc\u0647\u0654", + "\u0641\u0648\u0631\u06cc\u0647\u0654", + "\u0645\u0627\u0631\u0633", + "\u0622\u0648\u0631\u06cc\u0644", + "\u0645\u0647\u0654", + "\u0698\u0648\u0626\u0646", + "\u0698\u0648\u0626\u06cc\u0647\u0654", + "\u0627\u0648\u062a", + "\u0633\u067e\u062a\u0627\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0628\u0631", + "\u0646\u0648\u0627\u0645\u0628\u0631", + "\u062f\u0633\u0627\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u06cc\u06a9\u0634\u0646\u0628\u0647", + "\u062f\u0648\u0634\u0646\u0628\u0647", + "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", + "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", + "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", + "\u062c\u0645\u0639\u0647", + "\u0634\u0646\u0628\u0647" + ], + "SHORTMONTH": [ + "\u0698\u0627\u0646\u0648\u06cc\u0647\u0654", + "\u0641\u0648\u0631\u06cc\u0647\u0654", + "\u0645\u0627\u0631\u0633", + "\u0622\u0648\u0631\u06cc\u0644", + "\u0645\u0647\u0654", + "\u0698\u0648\u0626\u0646", + "\u0698\u0648\u0626\u06cc\u0647\u0654", + "\u0627\u0648\u062a", + "\u0633\u067e\u062a\u0627\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0628\u0631", + "\u0646\u0648\u0627\u0645\u0628\u0631", + "\u062f\u0633\u0627\u0645\u0628\u0631" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y H:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "H:mm:ss", + "short": "y/M/d H:mm", + "shortDate": "y/M/d", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rial", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u200e\u00a4-", + "negSuf": "", + "posPre": "\u200e\u00a4", + "posSuf": "" + } + ] + }, + "id": "fa-ir", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fa.js b/1.2.30/i18n/angular-locale_fa.js new file mode 100644 index 0000000000..8d648c0ff9 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fa.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0642\u0628\u0644\u200c\u0627\u0632\u0638\u0647\u0631", + "\u0628\u0639\u062f\u0627\u0632\u0638\u0647\u0631" + ], + "DAY": [ + "\u06cc\u06a9\u0634\u0646\u0628\u0647", + "\u062f\u0648\u0634\u0646\u0628\u0647", + "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", + "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", + "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", + "\u062c\u0645\u0639\u0647", + "\u0634\u0646\u0628\u0647" + ], + "MONTH": [ + "\u0698\u0627\u0646\u0648\u06cc\u0647\u0654", + "\u0641\u0648\u0631\u06cc\u0647\u0654", + "\u0645\u0627\u0631\u0633", + "\u0622\u0648\u0631\u06cc\u0644", + "\u0645\u0647\u0654", + "\u0698\u0648\u0626\u0646", + "\u0698\u0648\u0626\u06cc\u0647\u0654", + "\u0627\u0648\u062a", + "\u0633\u067e\u062a\u0627\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0628\u0631", + "\u0646\u0648\u0627\u0645\u0628\u0631", + "\u062f\u0633\u0627\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u06cc\u06a9\u0634\u0646\u0628\u0647", + "\u062f\u0648\u0634\u0646\u0628\u0647", + "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", + "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", + "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", + "\u062c\u0645\u0639\u0647", + "\u0634\u0646\u0628\u0647" + ], + "SHORTMONTH": [ + "\u0698\u0627\u0646\u0648\u06cc\u0647\u0654", + "\u0641\u0648\u0631\u06cc\u0647\u0654", + "\u0645\u0627\u0631\u0633", + "\u0622\u0648\u0631\u06cc\u0644", + "\u0645\u0647\u0654", + "\u0698\u0648\u0626\u0646", + "\u0698\u0648\u0626\u06cc\u0647\u0654", + "\u0627\u0648\u062a", + "\u0633\u067e\u062a\u0627\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0628\u0631", + "\u0646\u0648\u0627\u0645\u0628\u0631", + "\u062f\u0633\u0627\u0645\u0628\u0631" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y H:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "H:mm:ss", + "short": "y/M/d H:mm", + "shortDate": "y/M/d", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rial", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u200e\u00a4-", + "negSuf": "", + "posPre": "\u200e\u00a4", + "posSuf": "" + } + ] + }, + "id": "fa", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ff-cm.js b/1.2.30/i18n/angular-locale_ff-cm.js new file mode 100644 index 0000000000..8fa45784fb --- /dev/null +++ b/1.2.30/i18n/angular-locale_ff-cm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "subaka", + "kikii\u0257e" + ], + "DAY": [ + "dewo", + "aa\u0253nde", + "mawbaare", + "njeslaare", + "naasaande", + "mawnde", + "hoore-biir" + ], + "MONTH": [ + "siilo", + "colte", + "mbooy", + "see\u0257to", + "duujal", + "korse", + "morso", + "juko", + "siilto", + "yarkomaa", + "jolal", + "bowte" + ], + "SHORTDAY": [ + "dew", + "aa\u0253", + "maw", + "nje", + "naa", + "mwd", + "hbi" + ], + "SHORTMONTH": [ + "sii", + "col", + "mbo", + "see", + "duu", + "kor", + "mor", + "juk", + "slt", + "yar", + "jol", + "bow" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ff-cm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ff-gn.js b/1.2.30/i18n/angular-locale_ff-gn.js new file mode 100644 index 0000000000..cadea47575 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ff-gn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "subaka", + "kikii\u0257e" + ], + "DAY": [ + "dewo", + "aa\u0253nde", + "mawbaare", + "njeslaare", + "naasaande", + "mawnde", + "hoore-biir" + ], + "MONTH": [ + "siilo", + "colte", + "mbooy", + "see\u0257to", + "duujal", + "korse", + "morso", + "juko", + "siilto", + "yarkomaa", + "jolal", + "bowte" + ], + "SHORTDAY": [ + "dew", + "aa\u0253", + "maw", + "nje", + "naa", + "mwd", + "hbi" + ], + "SHORTMONTH": [ + "sii", + "col", + "mbo", + "see", + "duu", + "kor", + "mor", + "juk", + "slt", + "yar", + "jol", + "bow" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FG", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ff-gn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ff-mr.js b/1.2.30/i18n/angular-locale_ff-mr.js new file mode 100644 index 0000000000..ad1a20eb9e --- /dev/null +++ b/1.2.30/i18n/angular-locale_ff-mr.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "subaka", + "kikii\u0257e" + ], + "DAY": [ + "dewo", + "aa\u0253nde", + "mawbaare", + "njeslaare", + "naasaande", + "mawnde", + "hoore-biir" + ], + "MONTH": [ + "siilo", + "colte", + "mbooy", + "see\u0257to", + "duujal", + "korse", + "morso", + "juko", + "siilto", + "yarkomaa", + "jolal", + "bowte" + ], + "SHORTDAY": [ + "dew", + "aa\u0253", + "maw", + "nje", + "naa", + "mwd", + "hbi" + ], + "SHORTMONTH": [ + "sii", + "col", + "mbo", + "see", + "duu", + "kor", + "mor", + "juk", + "slt", + "yar", + "jol", + "bow" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MRO", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ff-mr", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ff-sn.js b/1.2.30/i18n/angular-locale_ff-sn.js new file mode 100644 index 0000000000..e49aced486 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ff-sn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "subaka", + "kikii\u0257e" + ], + "DAY": [ + "dewo", + "aa\u0253nde", + "mawbaare", + "njeslaare", + "naasaande", + "mawnde", + "hoore-biir" + ], + "MONTH": [ + "siilo", + "colte", + "mbooy", + "see\u0257to", + "duujal", + "korse", + "morso", + "juko", + "siilto", + "yarkomaa", + "jolal", + "bowte" + ], + "SHORTDAY": [ + "dew", + "aa\u0253", + "maw", + "nje", + "naa", + "mwd", + "hbi" + ], + "SHORTMONTH": [ + "sii", + "col", + "mbo", + "see", + "duu", + "kor", + "mor", + "juk", + "slt", + "yar", + "jol", + "bow" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ff-sn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ff.js b/1.2.30/i18n/angular-locale_ff.js new file mode 100644 index 0000000000..b2c3b61a40 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ff.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "subaka", + "kikii\u0257e" + ], + "DAY": [ + "dewo", + "aa\u0253nde", + "mawbaare", + "njeslaare", + "naasaande", + "mawnde", + "hoore-biir" + ], + "MONTH": [ + "siilo", + "colte", + "mbooy", + "see\u0257to", + "duujal", + "korse", + "morso", + "juko", + "siilto", + "yarkomaa", + "jolal", + "bowte" + ], + "SHORTDAY": [ + "dew", + "aa\u0253", + "maw", + "nje", + "naa", + "mwd", + "hbi" + ], + "SHORTMONTH": [ + "sii", + "col", + "mbo", + "see", + "duu", + "kor", + "mor", + "juk", + "slt", + "yar", + "jol", + "bow" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ff", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fi-fi.js b/1.2.30/i18n/angular-locale_fi-fi.js new file mode 100644 index 0000000000..c76a1f903c --- /dev/null +++ b/1.2.30/i18n/angular-locale_fi-fi.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "ap.", + "ip." + ], + "DAY": [ + "sunnuntaina", + "maanantaina", + "tiistaina", + "keskiviikkona", + "torstaina", + "perjantaina", + "lauantaina" + ], + "MONTH": [ + "tammikuuta", + "helmikuuta", + "maaliskuuta", + "huhtikuuta", + "toukokuuta", + "kes\u00e4kuuta", + "hein\u00e4kuuta", + "elokuuta", + "syyskuuta", + "lokakuuta", + "marraskuuta", + "joulukuuta" + ], + "SHORTDAY": [ + "su", + "ma", + "ti", + "ke", + "to", + "pe", + "la" + ], + "SHORTMONTH": [ + "tammikuuta", + "helmikuuta", + "maaliskuuta", + "huhtikuuta", + "toukokuuta", + "kes\u00e4kuuta", + "hein\u00e4kuuta", + "elokuuta", + "syyskuuta", + "lokakuuta", + "marraskuuta", + "joulukuuta" + ], + "fullDate": "cccc d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d.M.y H.mm.ss", + "mediumDate": "d.M.y", + "mediumTime": "H.mm.ss", + "short": "d.M.y H.mm", + "shortDate": "d.M.y", + "shortTime": "H.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fi-fi", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fi.js b/1.2.30/i18n/angular-locale_fi.js new file mode 100644 index 0000000000..a1adc44c08 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fi.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "ap.", + "ip." + ], + "DAY": [ + "sunnuntaina", + "maanantaina", + "tiistaina", + "keskiviikkona", + "torstaina", + "perjantaina", + "lauantaina" + ], + "MONTH": [ + "tammikuuta", + "helmikuuta", + "maaliskuuta", + "huhtikuuta", + "toukokuuta", + "kes\u00e4kuuta", + "hein\u00e4kuuta", + "elokuuta", + "syyskuuta", + "lokakuuta", + "marraskuuta", + "joulukuuta" + ], + "SHORTDAY": [ + "su", + "ma", + "ti", + "ke", + "to", + "pe", + "la" + ], + "SHORTMONTH": [ + "tammikuuta", + "helmikuuta", + "maaliskuuta", + "huhtikuuta", + "toukokuuta", + "kes\u00e4kuuta", + "hein\u00e4kuuta", + "elokuuta", + "syyskuuta", + "lokakuuta", + "marraskuuta", + "joulukuuta" + ], + "fullDate": "cccc d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d.M.y H.mm.ss", + "mediumDate": "d.M.y", + "mediumTime": "H.mm.ss", + "short": "d.M.y H.mm", + "shortDate": "d.M.y", + "shortTime": "H.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fi", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fil-ph.js b/1.2.30/i18n/angular-locale_fil-ph.js new file mode 100644 index 0000000000..acb4ec8125 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fil-ph.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Linggo", + "Lunes", + "Martes", + "Miyerkules", + "Huwebes", + "Biyernes", + "Sabado" + ], + "MONTH": [ + "Enero", + "Pebrero", + "Marso", + "Abril", + "Mayo", + "Hunyo", + "Hulyo", + "Agosto", + "Setyembre", + "Oktubre", + "Nobyembre", + "Disyembre" + ], + "SHORTDAY": [ + "Lin", + "Lun", + "Mar", + "Miy", + "Huw", + "Biy", + "Sab" + ], + "SHORTMONTH": [ + "Ene", + "Peb", + "Mar", + "Abr", + "May", + "Hun", + "Hul", + "Ago", + "Set", + "Okt", + "Nob", + "Dis" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b1", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "fil-ph", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && (i == 1 || i == 2 || i == 3) || vf.v == 0 && i % 10 != 4 && i % 10 != 6 && i % 10 != 9 || vf.v != 0 && vf.f % 10 != 4 && vf.f % 10 != 6 && vf.f % 10 != 9) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fil.js b/1.2.30/i18n/angular-locale_fil.js new file mode 100644 index 0000000000..93a4ca7469 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fil.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Linggo", + "Lunes", + "Martes", + "Miyerkules", + "Huwebes", + "Biyernes", + "Sabado" + ], + "MONTH": [ + "Enero", + "Pebrero", + "Marso", + "Abril", + "Mayo", + "Hunyo", + "Hulyo", + "Agosto", + "Setyembre", + "Oktubre", + "Nobyembre", + "Disyembre" + ], + "SHORTDAY": [ + "Lin", + "Lun", + "Mar", + "Miy", + "Huw", + "Biy", + "Sab" + ], + "SHORTMONTH": [ + "Ene", + "Peb", + "Mar", + "Abr", + "May", + "Hun", + "Hul", + "Ago", + "Set", + "Okt", + "Nob", + "Dis" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b1", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "fil", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && (i == 1 || i == 2 || i == 3) || vf.v == 0 && i % 10 != 4 && i % 10 != 6 && i % 10 != 9 || vf.v != 0 && vf.f % 10 != 4 && vf.f % 10 != 6 && vf.f % 10 != 9) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fo-fo.js b/1.2.30/i18n/angular-locale_fo-fo.js new file mode 100644 index 0000000000..3aa37c84bf --- /dev/null +++ b/1.2.30/i18n/angular-locale_fo-fo.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "um fyrrapartur", + "um seinnapartur" + ], + "DAY": [ + "sunnudagur", + "m\u00e1nadagur", + "t\u00fdsdagur", + "mikudagur", + "h\u00f3sdagur", + "fr\u00edggjadagur", + "leygardagur" + ], + "MONTH": [ + "januar", + "februar", + "mars", + "apr\u00edl", + "mai", + "juni", + "juli", + "august", + "september", + "oktober", + "november", + "desember" + ], + "SHORTDAY": [ + "sun", + "m\u00e1n", + "t\u00fds", + "mik", + "h\u00f3s", + "fr\u00ed", + "ley" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "mai", + "jun", + "jul", + "aug", + "sep", + "okt", + "nov", + "des" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "d. MMM y", + "medium": "dd-MM-y HH:mm:ss", + "mediumDate": "dd-MM-y", + "mediumTime": "HH:mm:ss", + "short": "dd-MM-yy HH:mm", + "shortDate": "dd-MM-yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "fo-fo", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fo.js b/1.2.30/i18n/angular-locale_fo.js new file mode 100644 index 0000000000..f205214c18 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fo.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "um fyrrapartur", + "um seinnapartur" + ], + "DAY": [ + "sunnudagur", + "m\u00e1nadagur", + "t\u00fdsdagur", + "mikudagur", + "h\u00f3sdagur", + "fr\u00edggjadagur", + "leygardagur" + ], + "MONTH": [ + "januar", + "februar", + "mars", + "apr\u00edl", + "mai", + "juni", + "juli", + "august", + "september", + "oktober", + "november", + "desember" + ], + "SHORTDAY": [ + "sun", + "m\u00e1n", + "t\u00fds", + "mik", + "h\u00f3s", + "fr\u00ed", + "ley" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "mai", + "jun", + "jul", + "aug", + "sep", + "okt", + "nov", + "des" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "d. MMM y", + "medium": "dd-MM-y HH:mm:ss", + "mediumDate": "dd-MM-y", + "mediumTime": "HH:mm:ss", + "short": "dd-MM-yy HH:mm", + "shortDate": "dd-MM-yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "fo", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-be.js b/1.2.30/i18n/angular-locale_fr-be.js new file mode 100644 index 0000000000..10a90d5f66 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-be.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/MM/yy HH:mm", + "shortDate": "d/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-be", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-bf.js b/1.2.30/i18n/angular-locale_fr-bf.js new file mode 100644 index 0000000000..81eeae3dd1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-bf.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-bf", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-bi.js b/1.2.30/i18n/angular-locale_fr-bi.js new file mode 100644 index 0000000000..e5444f1b0a --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-bi.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FBu", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-bi", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-bj.js b/1.2.30/i18n/angular-locale_fr-bj.js new file mode 100644 index 0000000000..63988d3ad0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-bj.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-bj", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-bl.js b/1.2.30/i18n/angular-locale_fr-bl.js new file mode 100644 index 0000000000..19b2e9da7b --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-bl.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-bl", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-ca.js b/1.2.30/i18n/angular-locale_fr-ca.js new file mode 100644 index 0000000000..556af66faa --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-ca.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "y-MM-dd HH:mm:ss", + "mediumDate": "y-MM-dd", + "mediumTime": "HH:mm:ss", + "short": "yy-MM-dd HH:mm", + "shortDate": "yy-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-ca", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-cd.js b/1.2.30/i18n/angular-locale_fr-cd.js new file mode 100644 index 0000000000..06ab51183d --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-cd.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FrCD", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-cd", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-cf.js b/1.2.30/i18n/angular-locale_fr-cf.js new file mode 100644 index 0000000000..5d5017e2db --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-cf.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-cf", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-cg.js b/1.2.30/i18n/angular-locale_fr-cg.js new file mode 100644 index 0000000000..63e3950bbe --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-cg.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-cg", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-ch.js b/1.2.30/i18n/angular-locale_fr-ch.js new file mode 100644 index 0000000000..d82fadfa6a --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-ch.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CHF", + "DECIMAL_SEP": ".", + "GROUP_SEP": "'", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "fr-ch", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-ci.js b/1.2.30/i18n/angular-locale_fr-ci.js new file mode 100644 index 0000000000..8bc1820449 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-ci.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-ci", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-cm.js b/1.2.30/i18n/angular-locale_fr-cm.js new file mode 100644 index 0000000000..ccbdf13c3c --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-cm.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-cm", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-dj.js b/1.2.30/i18n/angular-locale_fr-dj.js new file mode 100644 index 0000000000..0161b519a4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-dj.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Fdj", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-dj", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-dz.js b/1.2.30/i18n/angular-locale_fr-dz.js new file mode 100644 index 0000000000..69cddf83ec --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-dz.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-dz", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-fr.js b/1.2.30/i18n/angular-locale_fr-fr.js new file mode 100644 index 0000000000..b79f13ec5e --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-fr.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-fr", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-ga.js b/1.2.30/i18n/angular-locale_fr-ga.js new file mode 100644 index 0000000000..766a011945 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-ga.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-ga", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-gf.js b/1.2.30/i18n/angular-locale_fr-gf.js new file mode 100644 index 0000000000..e624b86c14 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-gf.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-gf", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-gn.js b/1.2.30/i18n/angular-locale_fr-gn.js new file mode 100644 index 0000000000..88816765a4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-gn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FG", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-gn", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-gp.js b/1.2.30/i18n/angular-locale_fr-gp.js new file mode 100644 index 0000000000..c206c53cb9 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-gp.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-gp", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-gq.js b/1.2.30/i18n/angular-locale_fr-gq.js new file mode 100644 index 0000000000..0a25e7dffc --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-gq.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-gq", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-ht.js b/1.2.30/i18n/angular-locale_fr-ht.js new file mode 100644 index 0000000000..a0ec970c73 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-ht.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "HTG", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-ht", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-km.js b/1.2.30/i18n/angular-locale_fr-km.js new file mode 100644 index 0000000000..9a3966e509 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-km.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CF", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-km", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-lu.js b/1.2.30/i18n/angular-locale_fr-lu.js new file mode 100644 index 0000000000..be78efb689 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-lu.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-lu", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-ma.js b/1.2.30/i18n/angular-locale_fr-ma.js new file mode 100644 index 0000000000..a8abc055f4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-ma.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "dh", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-ma", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-mc.js b/1.2.30/i18n/angular-locale_fr-mc.js new file mode 100644 index 0000000000..6a4944e407 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-mc.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-mc", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-mf.js b/1.2.30/i18n/angular-locale_fr-mf.js new file mode 100644 index 0000000000..ceb42e46d8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-mf.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-mf", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-mg.js b/1.2.30/i18n/angular-locale_fr-mg.js new file mode 100644 index 0000000000..6d8eb90a74 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-mg.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ar", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-mg", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-ml.js b/1.2.30/i18n/angular-locale_fr-ml.js new file mode 100644 index 0000000000..295b78b4cc --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-ml.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-ml", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-mq.js b/1.2.30/i18n/angular-locale_fr-mq.js new file mode 100644 index 0000000000..19dc58c85e --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-mq.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-mq", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-mr.js b/1.2.30/i18n/angular-locale_fr-mr.js new file mode 100644 index 0000000000..c026c407d4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-mr.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MRO", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-mr", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-mu.js b/1.2.30/i18n/angular-locale_fr-mu.js new file mode 100644 index 0000000000..a8a7ab3aa5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-mu.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MURs", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-mu", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-nc.js b/1.2.30/i18n/angular-locale_fr-nc.js new file mode 100644 index 0000000000..70360c72e8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-nc.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFP", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-nc", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-ne.js b/1.2.30/i18n/angular-locale_fr-ne.js new file mode 100644 index 0000000000..c6b97c61b4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-ne.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-ne", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-pf.js b/1.2.30/i18n/angular-locale_fr-pf.js new file mode 100644 index 0000000000..8d35b511d4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-pf.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFP", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-pf", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-pm.js b/1.2.30/i18n/angular-locale_fr-pm.js new file mode 100644 index 0000000000..46e931bd9a --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-pm.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-pm", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-re.js b/1.2.30/i18n/angular-locale_fr-re.js new file mode 100644 index 0000000000..17c80f43f2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-re.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-re", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-rw.js b/1.2.30/i18n/angular-locale_fr-rw.js new file mode 100644 index 0000000000..4f70629cdd --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-rw.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "RF", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-rw", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-sc.js b/1.2.30/i18n/angular-locale_fr-sc.js new file mode 100644 index 0000000000..ef3986f623 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-sc.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "SCR", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-sc", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-sn.js b/1.2.30/i18n/angular-locale_fr-sn.js new file mode 100644 index 0000000000..15cf9e5f65 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-sn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-sn", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-sy.js b/1.2.30/i18n/angular-locale_fr-sy.js new file mode 100644 index 0000000000..5f36411180 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-sy.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-sy", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-td.js b/1.2.30/i18n/angular-locale_fr-td.js new file mode 100644 index 0000000000..e0148be070 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-td.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-td", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-tg.js b/1.2.30/i18n/angular-locale_fr-tg.js new file mode 100644 index 0000000000..1cf0b7503b --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-tg.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-tg", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-tn.js b/1.2.30/i18n/angular-locale_fr-tn.js new file mode 100644 index 0000000000..7363805b56 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-tn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-tn", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-vu.js b/1.2.30/i18n/angular-locale_fr-vu.js new file mode 100644 index 0000000000..0d9c2573e9 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-vu.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "VUV", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-vu", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-wf.js b/1.2.30/i18n/angular-locale_fr-wf.js new file mode 100644 index 0000000000..e2d7f14a73 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-wf.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFP", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-wf", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr-yt.js b/1.2.30/i18n/angular-locale_fr-yt.js new file mode 100644 index 0000000000..606c1c3ca8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr-yt.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr-yt", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fr.js b/1.2.30/i18n/angular-locale_fr.js new file mode 100644 index 0000000000..c42837eca2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fr.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "MONTH": [ + "janvier", + "f\u00e9vrier", + "mars", + "avril", + "mai", + "juin", + "juillet", + "ao\u00fbt", + "septembre", + "octobre", + "novembre", + "d\u00e9cembre" + ], + "SHORTDAY": [ + "dim.", + "lun.", + "mar.", + "mer.", + "jeu.", + "ven.", + "sam." + ], + "SHORTMONTH": [ + "janv.", + "f\u00e9vr.", + "mars", + "avr.", + "mai", + "juin", + "juil.", + "ao\u00fbt", + "sept.", + "oct.", + "nov.", + "d\u00e9c." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "fr", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fur-it.js b/1.2.30/i18n/angular-locale_fur-it.js new file mode 100644 index 0000000000..59e8d109dd --- /dev/null +++ b/1.2.30/i18n/angular-locale_fur-it.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.", + "p." + ], + "DAY": [ + "domenie", + "lunis", + "martars", + "miercus", + "joibe", + "vinars", + "sabide" + ], + "MONTH": [ + "Zen\u00e2r", + "Fevr\u00e2r", + "Mar\u00e7", + "Avr\u00eel", + "Mai", + "Jugn", + "Lui", + "Avost", + "Setembar", + "Otubar", + "Novembar", + "Dicembar" + ], + "SHORTDAY": [ + "dom", + "lun", + "mar", + "mie", + "joi", + "vin", + "sab" + ], + "SHORTMONTH": [ + "Zen", + "Fev", + "Mar", + "Avr", + "Mai", + "Jug", + "Lui", + "Avo", + "Set", + "Otu", + "Nov", + "Dic" + ], + "fullDate": "EEEE d 'di' MMMM 'dal' y", + "longDate": "d 'di' MMMM 'dal' y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "fur-it", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fur.js b/1.2.30/i18n/angular-locale_fur.js new file mode 100644 index 0000000000..b3abe40125 --- /dev/null +++ b/1.2.30/i18n/angular-locale_fur.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.", + "p." + ], + "DAY": [ + "domenie", + "lunis", + "martars", + "miercus", + "joibe", + "vinars", + "sabide" + ], + "MONTH": [ + "Zen\u00e2r", + "Fevr\u00e2r", + "Mar\u00e7", + "Avr\u00eel", + "Mai", + "Jugn", + "Lui", + "Avost", + "Setembar", + "Otubar", + "Novembar", + "Dicembar" + ], + "SHORTDAY": [ + "dom", + "lun", + "mar", + "mie", + "joi", + "vin", + "sab" + ], + "SHORTMONTH": [ + "Zen", + "Fev", + "Mar", + "Avr", + "Mai", + "Jug", + "Lui", + "Avo", + "Set", + "Otu", + "Nov", + "Dic" + ], + "fullDate": "EEEE d 'di' MMMM 'dal' y", + "longDate": "d 'di' MMMM 'dal' y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "fur", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fy-nl.js b/1.2.30/i18n/angular-locale_fy-nl.js new file mode 100644 index 0000000000..65b95ceaae --- /dev/null +++ b/1.2.30/i18n/angular-locale_fy-nl.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "snein", + "moandei", + "tiisdei", + "woansdei", + "tongersdei", + "freed", + "sneon" + ], + "MONTH": [ + "jannewaris", + "febrewaris", + "maart", + "april", + "maaie", + "juny", + "july", + "augustus", + "septimber", + "oktober", + "novimber", + "desimber" + ], + "SHORTDAY": [ + "si", + "mo", + "ti", + "wo", + "to", + "fr", + "so" + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mrt.", + "apr.", + "mai", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "des." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd-MM-yy HH:mm", + "shortDate": "dd-MM-yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0", + "negSuf": "-", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "fy-nl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_fy.js b/1.2.30/i18n/angular-locale_fy.js new file mode 100644 index 0000000000..4d1af6abef --- /dev/null +++ b/1.2.30/i18n/angular-locale_fy.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "snein", + "moandei", + "tiisdei", + "woansdei", + "tongersdei", + "freed", + "sneon" + ], + "MONTH": [ + "jannewaris", + "febrewaris", + "maart", + "april", + "maaie", + "juny", + "july", + "augustus", + "septimber", + "oktober", + "novimber", + "desimber" + ], + "SHORTDAY": [ + "si", + "mo", + "ti", + "wo", + "to", + "fr", + "so" + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mrt.", + "apr.", + "mai", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "des." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd-MM-yy HH:mm", + "shortDate": "dd-MM-yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0", + "negSuf": "-", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "fy", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ga-ie.js b/1.2.30/i18n/angular-locale_ga-ie.js new file mode 100644 index 0000000000..749e4f1026 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ga-ie.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "D\u00e9 Domhnaigh", + "D\u00e9 Luain", + "D\u00e9 M\u00e1irt", + "D\u00e9 C\u00e9adaoin", + "D\u00e9ardaoin", + "D\u00e9 hAoine", + "D\u00e9 Sathairn" + ], + "MONTH": [ + "Ean\u00e1ir", + "Feabhra", + "M\u00e1rta", + "Aibre\u00e1n", + "Bealtaine", + "Meitheamh", + "I\u00fail", + "L\u00fanasa", + "Me\u00e1n F\u00f3mhair", + "Deireadh F\u00f3mhair", + "Samhain", + "Nollaig" + ], + "SHORTDAY": [ + "Domh", + "Luan", + "M\u00e1irt", + "C\u00e9ad", + "D\u00e9ar", + "Aoine", + "Sath" + ], + "SHORTMONTH": [ + "Ean", + "Feabh", + "M\u00e1rta", + "Aib", + "Beal", + "Meith", + "I\u00fail", + "L\u00fan", + "MF\u00f3mh", + "DF\u00f3mh", + "Samh", + "Noll" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ga-ie", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n >= 3 && n <= 6) { return PLURAL_CATEGORY.FEW; } if (n >= 7 && n <= 10) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ga.js b/1.2.30/i18n/angular-locale_ga.js new file mode 100644 index 0000000000..0f0ee78f88 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ga.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "D\u00e9 Domhnaigh", + "D\u00e9 Luain", + "D\u00e9 M\u00e1irt", + "D\u00e9 C\u00e9adaoin", + "D\u00e9ardaoin", + "D\u00e9 hAoine", + "D\u00e9 Sathairn" + ], + "MONTH": [ + "Ean\u00e1ir", + "Feabhra", + "M\u00e1rta", + "Aibre\u00e1n", + "Bealtaine", + "Meitheamh", + "I\u00fail", + "L\u00fanasa", + "Me\u00e1n F\u00f3mhair", + "Deireadh F\u00f3mhair", + "Samhain", + "Nollaig" + ], + "SHORTDAY": [ + "Domh", + "Luan", + "M\u00e1irt", + "C\u00e9ad", + "D\u00e9ar", + "Aoine", + "Sath" + ], + "SHORTMONTH": [ + "Ean", + "Feabh", + "M\u00e1rta", + "Aib", + "Beal", + "Meith", + "I\u00fail", + "L\u00fan", + "MF\u00f3mh", + "DF\u00f3mh", + "Samh", + "Noll" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ga", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n >= 3 && n <= 6) { return PLURAL_CATEGORY.FEW; } if (n >= 7 && n <= 10) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_gd-gb.js b/1.2.30/i18n/angular-locale_gd-gb.js new file mode 100644 index 0000000000..2a21d7d993 --- /dev/null +++ b/1.2.30/i18n/angular-locale_gd-gb.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "m", + "f" + ], + "DAY": [ + "DiD\u00f2mhnaich", + "DiLuain", + "DiM\u00e0irt", + "DiCiadain", + "Diardaoin", + "DihAoine", + "DiSathairne" + ], + "MONTH": [ + "Am Faoilleach", + "An Gearran", + "Am M\u00e0rt", + "An Giblean", + "An C\u00e8itean", + "An t-\u00d2gmhios", + "An t-Iuchar", + "An L\u00f9nastal", + "An t-Sultain", + "An D\u00e0mhair", + "An t-Samhain", + "An D\u00f9bhlachd" + ], + "SHORTDAY": [ + "DiD", + "DiL", + "DiM", + "DiC", + "Dia", + "Dih", + "DiS" + ], + "SHORTMONTH": [ + "Faoi", + "Gearr", + "M\u00e0rt", + "Gibl", + "C\u00e8it", + "\u00d2gmh", + "Iuch", + "L\u00f9na", + "Sult", + "D\u00e0mh", + "Samh", + "D\u00f9bh" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "gd-gb", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_gd.js b/1.2.30/i18n/angular-locale_gd.js new file mode 100644 index 0000000000..e8613e3b04 --- /dev/null +++ b/1.2.30/i18n/angular-locale_gd.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "m", + "f" + ], + "DAY": [ + "DiD\u00f2mhnaich", + "DiLuain", + "DiM\u00e0irt", + "DiCiadain", + "Diardaoin", + "DihAoine", + "DiSathairne" + ], + "MONTH": [ + "Am Faoilleach", + "An Gearran", + "Am M\u00e0rt", + "An Giblean", + "An C\u00e8itean", + "An t-\u00d2gmhios", + "An t-Iuchar", + "An L\u00f9nastal", + "An t-Sultain", + "An D\u00e0mhair", + "An t-Samhain", + "An D\u00f9bhlachd" + ], + "SHORTDAY": [ + "DiD", + "DiL", + "DiM", + "DiC", + "Dia", + "Dih", + "DiS" + ], + "SHORTMONTH": [ + "Faoi", + "Gearr", + "M\u00e0rt", + "Gibl", + "C\u00e8it", + "\u00d2gmh", + "Iuch", + "L\u00f9na", + "Sult", + "D\u00e0mh", + "Samh", + "D\u00f9bh" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "gd", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_gl-es.js b/1.2.30/i18n/angular-locale_gl-es.js new file mode 100644 index 0000000000..bf92ed26dc --- /dev/null +++ b/1.2.30/i18n/angular-locale_gl-es.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "domingo", + "luns", + "martes", + "m\u00e9rcores", + "xoves", + "venres", + "s\u00e1bado" + ], + "MONTH": [ + "xaneiro", + "febreiro", + "marzo", + "abril", + "maio", + "xu\u00f1o", + "xullo", + "agosto", + "setembro", + "outubro", + "novembro", + "decembro" + ], + "SHORTDAY": [ + "dom", + "lun", + "mar", + "m\u00e9r", + "xov", + "ven", + "s\u00e1b" + ], + "SHORTMONTH": [ + "xan", + "feb", + "mar", + "abr", + "mai", + "xu\u00f1", + "xul", + "ago", + "set", + "out", + "nov", + "dec" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "dd MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "gl-es", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_gl.js b/1.2.30/i18n/angular-locale_gl.js new file mode 100644 index 0000000000..8886378a68 --- /dev/null +++ b/1.2.30/i18n/angular-locale_gl.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "domingo", + "luns", + "martes", + "m\u00e9rcores", + "xoves", + "venres", + "s\u00e1bado" + ], + "MONTH": [ + "xaneiro", + "febreiro", + "marzo", + "abril", + "maio", + "xu\u00f1o", + "xullo", + "agosto", + "setembro", + "outubro", + "novembro", + "decembro" + ], + "SHORTDAY": [ + "dom", + "lun", + "mar", + "m\u00e9r", + "xov", + "ven", + "s\u00e1b" + ], + "SHORTMONTH": [ + "xan", + "feb", + "mar", + "abr", + "mai", + "xu\u00f1", + "xul", + "ago", + "set", + "out", + "nov", + "dec" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "dd MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "gl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_gsw-ch.js b/1.2.30/i18n/angular-locale_gsw-ch.js new file mode 100644 index 0000000000..b41a8cf66c --- /dev/null +++ b/1.2.30/i18n/angular-locale_gsw-ch.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "vorm.", + "nam." + ], + "DAY": [ + "Sunntig", + "M\u00e4\u00e4ntig", + "Ziischtig", + "Mittwuch", + "Dunschtig", + "Friitig", + "Samschtig" + ], + "MONTH": [ + "Januar", + "Februar", + "M\u00e4rz", + "April", + "Mai", + "Juni", + "Juli", + "Auguscht", + "Sept\u00e4mber", + "Oktoober", + "Nov\u00e4mber", + "Dez\u00e4mber" + ], + "SHORTDAY": [ + "Su.", + "M\u00e4.", + "Zi.", + "Mi.", + "Du.", + "Fr.", + "Sa." + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "M\u00e4r", + "Apr", + "Mai", + "Jun", + "Jul", + "Aug", + "Sep", + "Okt", + "Nov", + "Dez" + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CHF", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u2019", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "gsw-ch", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_gsw-li.js b/1.2.30/i18n/angular-locale_gsw-li.js new file mode 100644 index 0000000000..575c00ad52 --- /dev/null +++ b/1.2.30/i18n/angular-locale_gsw-li.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "vorm.", + "nam." + ], + "DAY": [ + "Sunntig", + "M\u00e4\u00e4ntig", + "Ziischtig", + "Mittwuch", + "Dunschtig", + "Friitig", + "Samschtig" + ], + "MONTH": [ + "Januar", + "Februar", + "M\u00e4rz", + "April", + "Mai", + "Juni", + "Juli", + "Auguscht", + "Sept\u00e4mber", + "Oktoober", + "Nov\u00e4mber", + "Dez\u00e4mber" + ], + "SHORTDAY": [ + "Su.", + "M\u00e4.", + "Zi.", + "Mi.", + "Du.", + "Fr.", + "Sa." + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "M\u00e4r", + "Apr", + "Mai", + "Jun", + "Jul", + "Aug", + "Sep", + "Okt", + "Nov", + "Dez" + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CHF", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u2019", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "gsw-li", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_gsw.js b/1.2.30/i18n/angular-locale_gsw.js new file mode 100644 index 0000000000..e8bd571b44 --- /dev/null +++ b/1.2.30/i18n/angular-locale_gsw.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "vorm.", + "nam." + ], + "DAY": [ + "Sunntig", + "M\u00e4\u00e4ntig", + "Ziischtig", + "Mittwuch", + "Dunschtig", + "Friitig", + "Samschtig" + ], + "MONTH": [ + "Januar", + "Februar", + "M\u00e4rz", + "April", + "Mai", + "Juni", + "Juli", + "Auguscht", + "Sept\u00e4mber", + "Oktoober", + "Nov\u00e4mber", + "Dez\u00e4mber" + ], + "SHORTDAY": [ + "Su.", + "M\u00e4.", + "Zi.", + "Mi.", + "Du.", + "Fr.", + "Sa." + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "M\u00e4r", + "Apr", + "Mai", + "Jun", + "Jul", + "Aug", + "Sep", + "Okt", + "Nov", + "Dez" + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CHF", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u2019", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "gsw", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_gu-in.js b/1.2.30/i18n/angular-locale_gu-in.js new file mode 100644 index 0000000000..9262dbc634 --- /dev/null +++ b/1.2.30/i18n/angular-locale_gu-in.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0", + "\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0", + "\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0", + "\u0aac\u0ac1\u0aa7\u0ab5\u0abe\u0ab0", + "\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0", + "\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0", + "\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0" + ], + "MONTH": [ + "\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0", + "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0", + "\u0aae\u0abe\u0ab0\u0acd\u0a9a", + "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2", + "\u0aae\u0ac7", + "\u0a9c\u0ac2\u0aa8", + "\u0a9c\u0ac1\u0ab2\u0abe\u0a88", + "\u0a91\u0a97\u0ab8\u0acd\u0a9f", + "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0", + "\u0a91\u0a95\u0acd\u0a9f\u0acb\u0aac\u0ab0", + "\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0", + "\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0" + ], + "SHORTDAY": [ + "\u0ab0\u0ab5\u0abf", + "\u0ab8\u0acb\u0aae", + "\u0aae\u0a82\u0a97\u0ab3", + "\u0aac\u0ac1\u0aa7", + "\u0a97\u0ac1\u0ab0\u0ac1", + "\u0ab6\u0ac1\u0a95\u0acd\u0ab0", + "\u0ab6\u0aa8\u0abf" + ], + "SHORTMONTH": [ + "\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1", + "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1", + "\u0aae\u0abe\u0ab0\u0acd\u0a9a", + "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2", + "\u0aae\u0ac7", + "\u0a9c\u0ac2\u0aa8", + "\u0a9c\u0ac1\u0ab2\u0abe\u0a88", + "\u0a91\u0a97\u0ab8\u0acd\u0a9f", + "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7", + "\u0a91\u0a95\u0acd\u0a9f\u0acb", + "\u0aa8\u0ab5\u0ac7", + "\u0aa1\u0abf\u0ab8\u0ac7" + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y hh:mm:ss a", + "mediumDate": "d MMM, y", + "mediumTime": "hh:mm:ss a", + "short": "d-MM-yy hh:mm a", + "shortDate": "d-MM-yy", + "shortTime": "hh:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "gu-in", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_gu.js b/1.2.30/i18n/angular-locale_gu.js new file mode 100644 index 0000000000..ac3395d097 --- /dev/null +++ b/1.2.30/i18n/angular-locale_gu.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0", + "\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0", + "\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0", + "\u0aac\u0ac1\u0aa7\u0ab5\u0abe\u0ab0", + "\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0", + "\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0", + "\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0" + ], + "MONTH": [ + "\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0", + "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0", + "\u0aae\u0abe\u0ab0\u0acd\u0a9a", + "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2", + "\u0aae\u0ac7", + "\u0a9c\u0ac2\u0aa8", + "\u0a9c\u0ac1\u0ab2\u0abe\u0a88", + "\u0a91\u0a97\u0ab8\u0acd\u0a9f", + "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0", + "\u0a91\u0a95\u0acd\u0a9f\u0acb\u0aac\u0ab0", + "\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0", + "\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0" + ], + "SHORTDAY": [ + "\u0ab0\u0ab5\u0abf", + "\u0ab8\u0acb\u0aae", + "\u0aae\u0a82\u0a97\u0ab3", + "\u0aac\u0ac1\u0aa7", + "\u0a97\u0ac1\u0ab0\u0ac1", + "\u0ab6\u0ac1\u0a95\u0acd\u0ab0", + "\u0ab6\u0aa8\u0abf" + ], + "SHORTMONTH": [ + "\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1", + "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1", + "\u0aae\u0abe\u0ab0\u0acd\u0a9a", + "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2", + "\u0aae\u0ac7", + "\u0a9c\u0ac2\u0aa8", + "\u0a9c\u0ac1\u0ab2\u0abe\u0a88", + "\u0a91\u0a97\u0ab8\u0acd\u0a9f", + "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7", + "\u0a91\u0a95\u0acd\u0a9f\u0acb", + "\u0aa8\u0ab5\u0ac7", + "\u0aa1\u0abf\u0ab8\u0ac7" + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y hh:mm:ss a", + "mediumDate": "d MMM, y", + "mediumTime": "hh:mm:ss a", + "short": "d-MM-yy hh:mm a", + "shortDate": "d-MM-yy", + "shortTime": "hh:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "gu", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_guz-ke.js b/1.2.30/i18n/angular-locale_guz-ke.js new file mode 100644 index 0000000000..3014db7e95 --- /dev/null +++ b/1.2.30/i18n/angular-locale_guz-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Ma/Mo", + "Mambia/Mog" + ], + "DAY": [ + "Chumapiri", + "Chumatato", + "Chumaine", + "Chumatano", + "Aramisi", + "Ichuma", + "Esabato" + ], + "MONTH": [ + "Chanuari", + "Feburari", + "Machi", + "Apiriri", + "Mei", + "Juni", + "Chulai", + "Agosti", + "Septemba", + "Okitoba", + "Nobemba", + "Disemba" + ], + "SHORTDAY": [ + "Cpr", + "Ctt", + "Cmn", + "Cmt", + "Ars", + "Icm", + "Est" + ], + "SHORTMONTH": [ + "Can", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Cul", + "Agt", + "Sep", + "Okt", + "Nob", + "Dis" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "guz-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_guz.js b/1.2.30/i18n/angular-locale_guz.js new file mode 100644 index 0000000000..9299c8e535 --- /dev/null +++ b/1.2.30/i18n/angular-locale_guz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Ma/Mo", + "Mambia/Mog" + ], + "DAY": [ + "Chumapiri", + "Chumatato", + "Chumaine", + "Chumatano", + "Aramisi", + "Ichuma", + "Esabato" + ], + "MONTH": [ + "Chanuari", + "Feburari", + "Machi", + "Apiriri", + "Mei", + "Juni", + "Chulai", + "Agosti", + "Septemba", + "Okitoba", + "Nobemba", + "Disemba" + ], + "SHORTDAY": [ + "Cpr", + "Ctt", + "Cmn", + "Cmt", + "Ars", + "Icm", + "Est" + ], + "SHORTMONTH": [ + "Can", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Cul", + "Agt", + "Sep", + "Okt", + "Nob", + "Dis" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "guz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_gv-im.js b/1.2.30/i18n/angular-locale_gv-im.js new file mode 100644 index 0000000000..ba2296db1b --- /dev/null +++ b/1.2.30/i18n/angular-locale_gv-im.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "Jedoonee", + "Jelhein", + "Jemayrt", + "Jercean", + "Jerdein", + "Jeheiney", + "Jesarn" + ], + "MONTH": [ + "Jerrey-geuree", + "Toshiaght-arree", + "Mayrnt", + "Averil", + "Boaldyn", + "Mean-souree", + "Jerrey-souree", + "Luanistyn", + "Mean-fouyir", + "Jerrey-fouyir", + "Mee Houney", + "Mee ny Nollick" + ], + "SHORTDAY": [ + "Jed", + "Jel", + "Jem", + "Jerc", + "Jerd", + "Jeh", + "Jes" + ], + "SHORTMONTH": [ + "J-guer", + "T-arree", + "Mayrnt", + "Avrril", + "Boaldyn", + "M-souree", + "J-souree", + "Luanistyn", + "M-fouyir", + "J-fouyir", + "M.Houney", + "M.Nollick" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "dd MMMM y", + "medium": "MMM dd, y HH:mm:ss", + "mediumDate": "MMM dd, y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "gv-im", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_gv.js b/1.2.30/i18n/angular-locale_gv.js new file mode 100644 index 0000000000..e904414daf --- /dev/null +++ b/1.2.30/i18n/angular-locale_gv.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "Jedoonee", + "Jelhein", + "Jemayrt", + "Jercean", + "Jerdein", + "Jeheiney", + "Jesarn" + ], + "MONTH": [ + "Jerrey-geuree", + "Toshiaght-arree", + "Mayrnt", + "Averil", + "Boaldyn", + "Mean-souree", + "Jerrey-souree", + "Luanistyn", + "Mean-fouyir", + "Jerrey-fouyir", + "Mee Houney", + "Mee ny Nollick" + ], + "SHORTDAY": [ + "Jed", + "Jel", + "Jem", + "Jerc", + "Jerd", + "Jeh", + "Jes" + ], + "SHORTMONTH": [ + "J-guer", + "T-arree", + "Mayrnt", + "Avrril", + "Boaldyn", + "M-souree", + "J-souree", + "Luanistyn", + "M-fouyir", + "J-fouyir", + "M.Houney", + "M.Nollick" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "dd MMMM y", + "medium": "MMM dd, y HH:mm:ss", + "mediumDate": "MMM dd, y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "gv", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ha-latn-gh.js b/1.2.30/i18n/angular-locale_ha-latn-gh.js new file mode 100644 index 0000000000..4082aeaab8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ha-latn-gh.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Lahadi", + "Litinin", + "Talata", + "Laraba", + "Alhamis", + "Jumma'a", + "Asabar" + ], + "MONTH": [ + "Janairu", + "Faburairu", + "Maris", + "Afirilu", + "Mayu", + "Yuni", + "Yuli", + "Agusta", + "Satumba", + "Oktoba", + "Nuwamba", + "Disamba" + ], + "SHORTDAY": [ + "Lh", + "Li", + "Ta", + "Lr", + "Al", + "Ju", + "As" + ], + "SHORTMONTH": [ + "Jan", + "Fab", + "Mar", + "Afi", + "May", + "Yun", + "Yul", + "Agu", + "Sat", + "Okt", + "Nuw", + "Dis" + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/yy HH:mm", + "shortDate": "d/M/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "GHS", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ha-latn-gh", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ha-latn-ne.js b/1.2.30/i18n/angular-locale_ha-latn-ne.js new file mode 100644 index 0000000000..f947d72de6 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ha-latn-ne.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Lahadi", + "Litinin", + "Talata", + "Laraba", + "Alhamis", + "Jumma'a", + "Asabar" + ], + "MONTH": [ + "Janairu", + "Faburairu", + "Maris", + "Afirilu", + "Mayu", + "Yuni", + "Yuli", + "Agusta", + "Satumba", + "Oktoba", + "Nuwamba", + "Disamba" + ], + "SHORTDAY": [ + "Lh", + "Li", + "Ta", + "Lr", + "Al", + "Ju", + "As" + ], + "SHORTMONTH": [ + "Jan", + "Fab", + "Mar", + "Afi", + "May", + "Yun", + "Yul", + "Agu", + "Sat", + "Okt", + "Nuw", + "Dis" + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/yy HH:mm", + "shortDate": "d/M/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ha-latn-ne", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ha-latn-ng.js b/1.2.30/i18n/angular-locale_ha-latn-ng.js new file mode 100644 index 0000000000..1bd9f6425b --- /dev/null +++ b/1.2.30/i18n/angular-locale_ha-latn-ng.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Lahadi", + "Litinin", + "Talata", + "Laraba", + "Alhamis", + "Jumma'a", + "Asabar" + ], + "MONTH": [ + "Janairu", + "Faburairu", + "Maris", + "Afirilu", + "Mayu", + "Yuni", + "Yuli", + "Agusta", + "Satumba", + "Oktoba", + "Nuwamba", + "Disamba" + ], + "SHORTDAY": [ + "Lh", + "Li", + "Ta", + "Lr", + "Al", + "Ju", + "As" + ], + "SHORTMONTH": [ + "Jan", + "Fab", + "Mar", + "Afi", + "May", + "Yun", + "Yul", + "Agu", + "Sat", + "Okt", + "Nuw", + "Dis" + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/yy HH:mm", + "shortDate": "d/M/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20a6", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ha-latn-ng", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ha-latn.js b/1.2.30/i18n/angular-locale_ha-latn.js new file mode 100644 index 0000000000..f151ff27a1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ha-latn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Lahadi", + "Litinin", + "Talata", + "Laraba", + "Alhamis", + "Jumma'a", + "Asabar" + ], + "MONTH": [ + "Janairu", + "Faburairu", + "Maris", + "Afirilu", + "Mayu", + "Yuni", + "Yuli", + "Agusta", + "Satumba", + "Oktoba", + "Nuwamba", + "Disamba" + ], + "SHORTDAY": [ + "Lh", + "Li", + "Ta", + "Lr", + "Al", + "Ju", + "As" + ], + "SHORTMONTH": [ + "Jan", + "Fab", + "Mar", + "Afi", + "May", + "Yun", + "Yul", + "Agu", + "Sat", + "Okt", + "Nuw", + "Dis" + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/yy HH:mm", + "shortDate": "d/M/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ha-latn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ha.js b/1.2.30/i18n/angular-locale_ha.js new file mode 100644 index 0000000000..6ee236f912 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ha.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Lahadi", + "Litinin", + "Talata", + "Laraba", + "Alhamis", + "Jumma'a", + "Asabar" + ], + "MONTH": [ + "Janairu", + "Faburairu", + "Maris", + "Afirilu", + "Mayu", + "Yuni", + "Yuli", + "Agusta", + "Satumba", + "Oktoba", + "Nuwamba", + "Disamba" + ], + "SHORTDAY": [ + "Lh", + "Li", + "Ta", + "Lr", + "Al", + "Ju", + "As" + ], + "SHORTMONTH": [ + "Jan", + "Fab", + "Mar", + "Afi", + "May", + "Yun", + "Yul", + "Agu", + "Sat", + "Okt", + "Nuw", + "Dis" + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/yy HH:mm", + "shortDate": "d/M/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20a6", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ha", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_haw-us.js b/1.2.30/i18n/angular-locale_haw-us.js new file mode 100644 index 0000000000..4446643a97 --- /dev/null +++ b/1.2.30/i18n/angular-locale_haw-us.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "L\u0101pule", + "Po\u02bbakahi", + "Po\u02bbalua", + "Po\u02bbakolu", + "Po\u02bbah\u0101", + "Po\u02bbalima", + "Po\u02bbaono" + ], + "MONTH": [ + "Ianuali", + "Pepeluali", + "Malaki", + "\u02bbApelila", + "Mei", + "Iune", + "Iulai", + "\u02bbAukake", + "Kepakemapa", + "\u02bbOkakopa", + "Nowemapa", + "Kekemapa" + ], + "SHORTDAY": [ + "LP", + "P1", + "P2", + "P3", + "P4", + "P5", + "P6" + ], + "SHORTMONTH": [ + "Ian.", + "Pep.", + "Mal.", + "\u02bbAp.", + "Mei", + "Iun.", + "Iul.", + "\u02bbAu.", + "Kep.", + "\u02bbOk.", + "Now.", + "Kek." + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "haw-us", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_haw.js b/1.2.30/i18n/angular-locale_haw.js new file mode 100644 index 0000000000..8d79d954e0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_haw.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "L\u0101pule", + "Po\u02bbakahi", + "Po\u02bbalua", + "Po\u02bbakolu", + "Po\u02bbah\u0101", + "Po\u02bbalima", + "Po\u02bbaono" + ], + "MONTH": [ + "Ianuali", + "Pepeluali", + "Malaki", + "\u02bbApelila", + "Mei", + "Iune", + "Iulai", + "\u02bbAukake", + "Kepakemapa", + "\u02bbOkakopa", + "Nowemapa", + "Kekemapa" + ], + "SHORTDAY": [ + "LP", + "P1", + "P2", + "P3", + "P4", + "P5", + "P6" + ], + "SHORTMONTH": [ + "Ian.", + "Pep.", + "Mal.", + "\u02bbAp.", + "Mei", + "Iun.", + "Iul.", + "\u02bbAu.", + "Kep.", + "\u02bbOk.", + "Now.", + "Kek." + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "haw", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_he-il.js b/1.2.30/i18n/angular-locale_he-il.js new file mode 100644 index 0000000000..0b2f6301bc --- /dev/null +++ b/1.2.30/i18n/angular-locale_he-il.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u05dc\u05e4\u05e0\u05d4\u05f4\u05e6", + "\u05d0\u05d7\u05d4\u05f4\u05e6" + ], + "DAY": [ + "\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df", + "\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9", + "\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9", + "\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9", + "\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9", + "\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9\u05d9", + "\u05d9\u05d5\u05dd \u05e9\u05d1\u05ea" + ], + "MONTH": [ + "\u05d9\u05e0\u05d5\u05d0\u05e8", + "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8", + "\u05de\u05e8\u05e5", + "\u05d0\u05e4\u05e8\u05d9\u05dc", + "\u05de\u05d0\u05d9", + "\u05d9\u05d5\u05e0\u05d9", + "\u05d9\u05d5\u05dc\u05d9", + "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8", + "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8", + "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8", + "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8", + "\u05d3\u05e6\u05de\u05d1\u05e8" + ], + "SHORTDAY": [ + "\u05d9\u05d5\u05dd \u05d0\u05f3", + "\u05d9\u05d5\u05dd \u05d1\u05f3", + "\u05d9\u05d5\u05dd \u05d2\u05f3", + "\u05d9\u05d5\u05dd \u05d3\u05f3", + "\u05d9\u05d5\u05dd \u05d4\u05f3", + "\u05d9\u05d5\u05dd \u05d5\u05f3", + "\u05e9\u05d1\u05ea" + ], + "SHORTMONTH": [ + "\u05d9\u05e0\u05d5\u05f3", + "\u05e4\u05d1\u05e8\u05f3", + "\u05de\u05e8\u05e5", + "\u05d0\u05e4\u05e8\u05f3", + "\u05de\u05d0\u05d9", + "\u05d9\u05d5\u05e0\u05d9", + "\u05d9\u05d5\u05dc\u05d9", + "\u05d0\u05d5\u05d2\u05f3", + "\u05e1\u05e4\u05d8\u05f3", + "\u05d0\u05d5\u05e7\u05f3", + "\u05e0\u05d5\u05d1\u05f3", + "\u05d3\u05e6\u05de\u05f3" + ], + "fullDate": "EEEE, d \u05d1MMMM y", + "longDate": "d \u05d1MMMM y", + "medium": "d \u05d1MMM y HH:mm:ss", + "mediumDate": "d \u05d1MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20aa", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "he-il", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } if (i == 2 && vf.v == 0) { return PLURAL_CATEGORY.TWO; } if (vf.v == 0 && (n < 0 || n > 10) && n % 10 == 0) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_he.js b/1.2.30/i18n/angular-locale_he.js new file mode 100644 index 0000000000..1246f3f3b3 --- /dev/null +++ b/1.2.30/i18n/angular-locale_he.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u05dc\u05e4\u05e0\u05d4\u05f4\u05e6", + "\u05d0\u05d7\u05d4\u05f4\u05e6" + ], + "DAY": [ + "\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df", + "\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9", + "\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9", + "\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9", + "\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9", + "\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9\u05d9", + "\u05d9\u05d5\u05dd \u05e9\u05d1\u05ea" + ], + "MONTH": [ + "\u05d9\u05e0\u05d5\u05d0\u05e8", + "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8", + "\u05de\u05e8\u05e5", + "\u05d0\u05e4\u05e8\u05d9\u05dc", + "\u05de\u05d0\u05d9", + "\u05d9\u05d5\u05e0\u05d9", + "\u05d9\u05d5\u05dc\u05d9", + "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8", + "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8", + "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8", + "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8", + "\u05d3\u05e6\u05de\u05d1\u05e8" + ], + "SHORTDAY": [ + "\u05d9\u05d5\u05dd \u05d0\u05f3", + "\u05d9\u05d5\u05dd \u05d1\u05f3", + "\u05d9\u05d5\u05dd \u05d2\u05f3", + "\u05d9\u05d5\u05dd \u05d3\u05f3", + "\u05d9\u05d5\u05dd \u05d4\u05f3", + "\u05d9\u05d5\u05dd \u05d5\u05f3", + "\u05e9\u05d1\u05ea" + ], + "SHORTMONTH": [ + "\u05d9\u05e0\u05d5\u05f3", + "\u05e4\u05d1\u05e8\u05f3", + "\u05de\u05e8\u05e5", + "\u05d0\u05e4\u05e8\u05f3", + "\u05de\u05d0\u05d9", + "\u05d9\u05d5\u05e0\u05d9", + "\u05d9\u05d5\u05dc\u05d9", + "\u05d0\u05d5\u05d2\u05f3", + "\u05e1\u05e4\u05d8\u05f3", + "\u05d0\u05d5\u05e7\u05f3", + "\u05e0\u05d5\u05d1\u05f3", + "\u05d3\u05e6\u05de\u05f3" + ], + "fullDate": "EEEE, d \u05d1MMMM y", + "longDate": "d \u05d1MMMM y", + "medium": "d \u05d1MMM y HH:mm:ss", + "mediumDate": "d \u05d1MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20aa", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "he", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } if (i == 2 && vf.v == 0) { return PLURAL_CATEGORY.TWO; } if (vf.v == 0 && (n < 0 || n > 10) && n % 10 == 0) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_hi-in.js b/1.2.30/i18n/angular-locale_hi-in.js new file mode 100644 index 0000000000..9cc8df80f0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_hi-in.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "am", + "pm" + ], + "DAY": [ + "\u0930\u0935\u093f\u0935\u093e\u0930", + "\u0938\u094b\u092e\u0935\u093e\u0930", + "\u092e\u0902\u0917\u0932\u0935\u093e\u0930", + "\u092c\u0941\u0927\u0935\u093e\u0930", + "\u0917\u0941\u0930\u0941\u0935\u093e\u0930", + "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930", + "\u0936\u0928\u093f\u0935\u093e\u0930" + ], + "MONTH": [ + "\u091c\u0928\u0935\u0930\u0940", + "\u092b\u093c\u0930\u0935\u0930\u0940", + "\u092e\u093e\u0930\u094d\u091a", + "\u0905\u092a\u094d\u0930\u0948\u0932", + "\u092e\u0908", + "\u091c\u0942\u0928", + "\u091c\u0941\u0932\u093e\u0908", + "\u0905\u0917\u0938\u094d\u0924", + "\u0938\u093f\u0924\u0902\u092c\u0930", + "\u0905\u0915\u094d\u091f\u0942\u092c\u0930", + "\u0928\u0935\u0902\u092c\u0930", + "\u0926\u093f\u0938\u0902\u092c\u0930" + ], + "SHORTDAY": [ + "\u0930\u0935\u093f", + "\u0938\u094b\u092e", + "\u092e\u0902\u0917\u0932", + "\u092c\u0941\u0927", + "\u0917\u0941\u0930\u0941", + "\u0936\u0941\u0915\u094d\u0930", + "\u0936\u0928\u093f" + ], + "SHORTMONTH": [ + "\u091c\u0928", + "\u092b\u093c\u0930", + "\u092e\u093e\u0930\u094d\u091a", + "\u0905\u092a\u094d\u0930\u0948", + "\u092e\u0908", + "\u091c\u0942\u0928", + "\u091c\u0941\u0932\u093e", + "\u0905\u0917", + "\u0938\u093f\u0924\u0902", + "\u0905\u0915\u094d\u091f\u0942", + "\u0928\u0935\u0902", + "\u0926\u093f\u0938\u0902" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "dd-MM-y h:mm:ss a", + "mediumDate": "dd-MM-y", + "mediumTime": "h:mm:ss a", + "short": "d-M-yy h:mm a", + "shortDate": "d-M-yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "hi-in", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_hi.js b/1.2.30/i18n/angular-locale_hi.js new file mode 100644 index 0000000000..242ffc36cc --- /dev/null +++ b/1.2.30/i18n/angular-locale_hi.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "am", + "pm" + ], + "DAY": [ + "\u0930\u0935\u093f\u0935\u093e\u0930", + "\u0938\u094b\u092e\u0935\u093e\u0930", + "\u092e\u0902\u0917\u0932\u0935\u093e\u0930", + "\u092c\u0941\u0927\u0935\u093e\u0930", + "\u0917\u0941\u0930\u0941\u0935\u093e\u0930", + "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930", + "\u0936\u0928\u093f\u0935\u093e\u0930" + ], + "MONTH": [ + "\u091c\u0928\u0935\u0930\u0940", + "\u092b\u093c\u0930\u0935\u0930\u0940", + "\u092e\u093e\u0930\u094d\u091a", + "\u0905\u092a\u094d\u0930\u0948\u0932", + "\u092e\u0908", + "\u091c\u0942\u0928", + "\u091c\u0941\u0932\u093e\u0908", + "\u0905\u0917\u0938\u094d\u0924", + "\u0938\u093f\u0924\u0902\u092c\u0930", + "\u0905\u0915\u094d\u091f\u0942\u092c\u0930", + "\u0928\u0935\u0902\u092c\u0930", + "\u0926\u093f\u0938\u0902\u092c\u0930" + ], + "SHORTDAY": [ + "\u0930\u0935\u093f", + "\u0938\u094b\u092e", + "\u092e\u0902\u0917\u0932", + "\u092c\u0941\u0927", + "\u0917\u0941\u0930\u0941", + "\u0936\u0941\u0915\u094d\u0930", + "\u0936\u0928\u093f" + ], + "SHORTMONTH": [ + "\u091c\u0928", + "\u092b\u093c\u0930", + "\u092e\u093e\u0930\u094d\u091a", + "\u0905\u092a\u094d\u0930\u0948", + "\u092e\u0908", + "\u091c\u0942\u0928", + "\u091c\u0941\u0932\u093e", + "\u0905\u0917", + "\u0938\u093f\u0924\u0902", + "\u0905\u0915\u094d\u091f\u0942", + "\u0928\u0935\u0902", + "\u0926\u093f\u0938\u0902" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "dd-MM-y h:mm:ss a", + "mediumDate": "dd-MM-y", + "mediumTime": "h:mm:ss a", + "short": "d-M-yy h:mm a", + "shortDate": "d-M-yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "hi", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_hr-ba.js b/1.2.30/i18n/angular-locale_hr-ba.js new file mode 100644 index 0000000000..2f9416e06c --- /dev/null +++ b/1.2.30/i18n/angular-locale_hr-ba.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "nedjelja", + "ponedjeljak", + "utorak", + "srijeda", + "\u010detvrtak", + "petak", + "subota" + ], + "MONTH": [ + "sije\u010dnja", + "velja\u010de", + "o\u017eujka", + "travnja", + "svibnja", + "lipnja", + "srpnja", + "kolovoza", + "rujna", + "listopada", + "studenoga", + "prosinca" + ], + "SHORTDAY": [ + "ned", + "pon", + "uto", + "sri", + "\u010det", + "pet", + "sub" + ], + "SHORTMONTH": [ + "sij", + "velj", + "o\u017eu", + "tra", + "svi", + "lip", + "srp", + "kol", + "ruj", + "lis", + "stu", + "pro" + ], + "fullDate": "EEEE, d. MMMM y.", + "longDate": "d. MMMM y.", + "medium": "d. MMM y. HH:mm:ss", + "mediumDate": "d. MMM y.", + "mediumTime": "HH:mm:ss", + "short": "d.M.yy. HH:mm", + "shortDate": "d.M.yy.", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "KM", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "hr-ba", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_hr-hr.js b/1.2.30/i18n/angular-locale_hr-hr.js new file mode 100644 index 0000000000..1364fb52fb --- /dev/null +++ b/1.2.30/i18n/angular-locale_hr-hr.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "nedjelja", + "ponedjeljak", + "utorak", + "srijeda", + "\u010detvrtak", + "petak", + "subota" + ], + "MONTH": [ + "sije\u010dnja", + "velja\u010de", + "o\u017eujka", + "travnja", + "svibnja", + "lipnja", + "srpnja", + "kolovoza", + "rujna", + "listopada", + "studenoga", + "prosinca" + ], + "SHORTDAY": [ + "ned", + "pon", + "uto", + "sri", + "\u010det", + "pet", + "sub" + ], + "SHORTMONTH": [ + "sij", + "velj", + "o\u017eu", + "tra", + "svi", + "lip", + "srp", + "kol", + "ruj", + "lis", + "stu", + "pro" + ], + "fullDate": "EEEE, d. MMMM y.", + "longDate": "d. MMMM y.", + "medium": "d. MMM y. HH:mm:ss", + "mediumDate": "d. MMM y.", + "mediumTime": "HH:mm:ss", + "short": "d.M.yy. HH:mm", + "shortDate": "d.M.yy.", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kn", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "hr-hr", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_hr.js b/1.2.30/i18n/angular-locale_hr.js new file mode 100644 index 0000000000..52882d8bfe --- /dev/null +++ b/1.2.30/i18n/angular-locale_hr.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "nedjelja", + "ponedjeljak", + "utorak", + "srijeda", + "\u010detvrtak", + "petak", + "subota" + ], + "MONTH": [ + "sije\u010dnja", + "velja\u010de", + "o\u017eujka", + "travnja", + "svibnja", + "lipnja", + "srpnja", + "kolovoza", + "rujna", + "listopada", + "studenoga", + "prosinca" + ], + "SHORTDAY": [ + "ned", + "pon", + "uto", + "sri", + "\u010det", + "pet", + "sub" + ], + "SHORTMONTH": [ + "sij", + "velj", + "o\u017eu", + "tra", + "svi", + "lip", + "srp", + "kol", + "ruj", + "lis", + "stu", + "pro" + ], + "fullDate": "EEEE, d. MMMM y.", + "longDate": "d. MMMM y.", + "medium": "d. MMM y. HH:mm:ss", + "mediumDate": "d. MMM y.", + "mediumTime": "HH:mm:ss", + "short": "d.M.yy. HH:mm", + "shortDate": "d.M.yy.", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kn", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "hr", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_hu-hu.js b/1.2.30/i18n/angular-locale_hu-hu.js new file mode 100644 index 0000000000..1e68c25eb2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_hu-hu.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "de.", + "du." + ], + "DAY": [ + "vas\u00e1rnap", + "h\u00e9tf\u0151", + "kedd", + "szerda", + "cs\u00fct\u00f6rt\u00f6k", + "p\u00e9ntek", + "szombat" + ], + "MONTH": [ + "janu\u00e1r", + "febru\u00e1r", + "m\u00e1rcius", + "\u00e1prilis", + "m\u00e1jus", + "j\u00fanius", + "j\u00falius", + "augusztus", + "szeptember", + "okt\u00f3ber", + "november", + "december" + ], + "SHORTDAY": [ + "V", + "H", + "K", + "Sze", + "Cs", + "P", + "Szo" + ], + "SHORTMONTH": [ + "jan.", + "febr.", + "m\u00e1rc.", + "\u00e1pr.", + "m\u00e1j.", + "j\u00fan.", + "j\u00fal.", + "aug.", + "szept.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "y. MMMM d., EEEE", + "longDate": "y. MMMM d.", + "medium": "y. MMM d. H:mm:ss", + "mediumDate": "y. MMM d.", + "mediumTime": "H:mm:ss", + "short": "y. MM. dd. H:mm", + "shortDate": "y. MM. dd.", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ft", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "hu-hu", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_hu.js b/1.2.30/i18n/angular-locale_hu.js new file mode 100644 index 0000000000..6298e1de2e --- /dev/null +++ b/1.2.30/i18n/angular-locale_hu.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "de.", + "du." + ], + "DAY": [ + "vas\u00e1rnap", + "h\u00e9tf\u0151", + "kedd", + "szerda", + "cs\u00fct\u00f6rt\u00f6k", + "p\u00e9ntek", + "szombat" + ], + "MONTH": [ + "janu\u00e1r", + "febru\u00e1r", + "m\u00e1rcius", + "\u00e1prilis", + "m\u00e1jus", + "j\u00fanius", + "j\u00falius", + "augusztus", + "szeptember", + "okt\u00f3ber", + "november", + "december" + ], + "SHORTDAY": [ + "V", + "H", + "K", + "Sze", + "Cs", + "P", + "Szo" + ], + "SHORTMONTH": [ + "jan.", + "febr.", + "m\u00e1rc.", + "\u00e1pr.", + "m\u00e1j.", + "j\u00fan.", + "j\u00fal.", + "aug.", + "szept.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "y. MMMM d., EEEE", + "longDate": "y. MMMM d.", + "medium": "y. MMM d. H:mm:ss", + "mediumDate": "y. MMM d.", + "mediumTime": "H:mm:ss", + "short": "y. MM. dd. H:mm", + "shortDate": "y. MM. dd.", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ft", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "hu", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_hy-am.js b/1.2.30/i18n/angular-locale_hy-am.js new file mode 100644 index 0000000000..1d129d90b3 --- /dev/null +++ b/1.2.30/i18n/angular-locale_hy-am.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u056f\u0565\u057d\u0585\u0580\u056b\u0581 \u0561\u057c\u0561\u057b", + "\u056f\u0565\u057d\u0585\u0580\u056b\u0581 \u0570\u0565\u057f\u0578" + ], + "DAY": [ + "\u056f\u056b\u0580\u0561\u056f\u056b", + "\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b", + "\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b", + "\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b", + "\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b", + "\u0578\u0582\u0580\u0562\u0561\u0569", + "\u0577\u0561\u0562\u0561\u0569" + ], + "MONTH": [ + "\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b", + "\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b", + "\u0574\u0561\u0580\u057f\u056b", + "\u0561\u057a\u0580\u056b\u056c\u056b", + "\u0574\u0561\u0575\u056b\u057d\u056b", + "\u0570\u0578\u0582\u0576\u056b\u057d\u056b", + "\u0570\u0578\u0582\u056c\u056b\u057d\u056b", + "\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b", + "\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b", + "\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b", + "\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b", + "\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b" + ], + "SHORTDAY": [ + "\u056f\u056b\u0580", + "\u0565\u0580\u056f", + "\u0565\u0580\u0584", + "\u0579\u0580\u0584", + "\u0570\u0576\u0563", + "\u0578\u0582\u0580", + "\u0577\u0562\u0569" + ], + "SHORTMONTH": [ + "\u0570\u0576\u057e", + "\u0583\u057f\u057e", + "\u0574\u0580\u057f", + "\u0561\u057a\u0580", + "\u0574\u0575\u057d", + "\u0570\u0576\u057d", + "\u0570\u056c\u057d", + "\u0585\u0563\u057d", + "\u057d\u057a\u057f", + "\u0570\u056f\u057f", + "\u0576\u0575\u0574", + "\u0564\u056f\u057f" + ], + "fullDate": "y\u0569. MMMM d, EEEE", + "longDate": "dd MMMM, y\u0569.", + "medium": "dd MMM, y \u0569. H:mm:ss", + "mediumDate": "dd MMM, y \u0569.", + "mediumTime": "H:mm:ss", + "short": "dd.MM.yy H:mm", + "shortDate": "dd.MM.yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Dram", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 0, + "lgSize": 0, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 0, + "lgSize": 0, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "hy-am", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_hy.js b/1.2.30/i18n/angular-locale_hy.js new file mode 100644 index 0000000000..077f5e0ba9 --- /dev/null +++ b/1.2.30/i18n/angular-locale_hy.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u056f\u0565\u057d\u0585\u0580\u056b\u0581 \u0561\u057c\u0561\u057b", + "\u056f\u0565\u057d\u0585\u0580\u056b\u0581 \u0570\u0565\u057f\u0578" + ], + "DAY": [ + "\u056f\u056b\u0580\u0561\u056f\u056b", + "\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b", + "\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b", + "\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b", + "\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b", + "\u0578\u0582\u0580\u0562\u0561\u0569", + "\u0577\u0561\u0562\u0561\u0569" + ], + "MONTH": [ + "\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b", + "\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b", + "\u0574\u0561\u0580\u057f\u056b", + "\u0561\u057a\u0580\u056b\u056c\u056b", + "\u0574\u0561\u0575\u056b\u057d\u056b", + "\u0570\u0578\u0582\u0576\u056b\u057d\u056b", + "\u0570\u0578\u0582\u056c\u056b\u057d\u056b", + "\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b", + "\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b", + "\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b", + "\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b", + "\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b" + ], + "SHORTDAY": [ + "\u056f\u056b\u0580", + "\u0565\u0580\u056f", + "\u0565\u0580\u0584", + "\u0579\u0580\u0584", + "\u0570\u0576\u0563", + "\u0578\u0582\u0580", + "\u0577\u0562\u0569" + ], + "SHORTMONTH": [ + "\u0570\u0576\u057e", + "\u0583\u057f\u057e", + "\u0574\u0580\u057f", + "\u0561\u057a\u0580", + "\u0574\u0575\u057d", + "\u0570\u0576\u057d", + "\u0570\u056c\u057d", + "\u0585\u0563\u057d", + "\u057d\u057a\u057f", + "\u0570\u056f\u057f", + "\u0576\u0575\u0574", + "\u0564\u056f\u057f" + ], + "fullDate": "y\u0569. MMMM d, EEEE", + "longDate": "dd MMMM, y\u0569.", + "medium": "dd MMM, y \u0569. H:mm:ss", + "mediumDate": "dd MMM, y \u0569.", + "mediumTime": "H:mm:ss", + "short": "dd.MM.yy H:mm", + "shortDate": "dd.MM.yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Dram", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 0, + "lgSize": 0, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 0, + "lgSize": 0, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "hy", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ia-fr.js b/1.2.30/i18n/angular-locale_ia-fr.js new file mode 100644 index 0000000000..fb190cf72c --- /dev/null +++ b/1.2.30/i18n/angular-locale_ia-fr.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "dominica", + "lunedi", + "martedi", + "mercuridi", + "jovedi", + "venerdi", + "sabbato" + ], + "MONTH": [ + "januario", + "februario", + "martio", + "april", + "maio", + "junio", + "julio", + "augusto", + "septembre", + "octobre", + "novembre", + "decembre" + ], + "SHORTDAY": [ + "dom", + "lun", + "mar", + "mer", + "jov", + "ven", + "sab" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "mai", + "jun", + "jul", + "aug", + "sep", + "oct", + "nov", + "dec" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ia-fr", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ia.js b/1.2.30/i18n/angular-locale_ia.js new file mode 100644 index 0000000000..94c9a7da7e --- /dev/null +++ b/1.2.30/i18n/angular-locale_ia.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "dominica", + "lunedi", + "martedi", + "mercuridi", + "jovedi", + "venerdi", + "sabbato" + ], + "MONTH": [ + "januario", + "februario", + "martio", + "april", + "maio", + "junio", + "julio", + "augusto", + "septembre", + "octobre", + "novembre", + "decembre" + ], + "SHORTDAY": [ + "dom", + "lun", + "mar", + "mer", + "jov", + "ven", + "sab" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "mai", + "jun", + "jul", + "aug", + "sep", + "oct", + "nov", + "dec" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ia", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_id-id.js b/1.2.30/i18n/angular-locale_id-id.js new file mode 100644 index 0000000000..2ffe79a61e --- /dev/null +++ b/1.2.30/i18n/angular-locale_id-id.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Minggu", + "Senin", + "Selasa", + "Rabu", + "Kamis", + "Jumat", + "Sabtu" + ], + "MONTH": [ + "Januari", + "Februari", + "Maret", + "April", + "Mei", + "Juni", + "Juli", + "Agustus", + "September", + "Oktober", + "November", + "Desember" + ], + "SHORTDAY": [ + "Min", + "Sen", + "Sel", + "Rab", + "Kam", + "Jum", + "Sab" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Mei", + "Jun", + "Jul", + "Agt", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, dd MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH.mm.ss", + "mediumDate": "d MMM y", + "mediumTime": "HH.mm.ss", + "short": "dd/MM/yy HH.mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rp", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "id-id", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_id.js b/1.2.30/i18n/angular-locale_id.js new file mode 100644 index 0000000000..65ea794ad4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_id.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Minggu", + "Senin", + "Selasa", + "Rabu", + "Kamis", + "Jumat", + "Sabtu" + ], + "MONTH": [ + "Januari", + "Februari", + "Maret", + "April", + "Mei", + "Juni", + "Juli", + "Agustus", + "September", + "Oktober", + "November", + "Desember" + ], + "SHORTDAY": [ + "Min", + "Sen", + "Sel", + "Rab", + "Kam", + "Jum", + "Sab" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Mei", + "Jun", + "Jul", + "Agt", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, dd MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH.mm.ss", + "mediumDate": "d MMM y", + "mediumTime": "HH.mm.ss", + "short": "dd/MM/yy HH.mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rp", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "id", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ig-ng.js b/1.2.30/i18n/angular-locale_ig-ng.js new file mode 100644 index 0000000000..3ada04f85a --- /dev/null +++ b/1.2.30/i18n/angular-locale_ig-ng.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "A.M.", + "P.M." + ], + "DAY": [ + "Mb\u1ecds\u1ecb \u1ee4ka", + "M\u1ecdnde", + "Tiuzdee", + "Wenezdee", + "T\u1ecd\u1ecdzdee", + "Fra\u1ecbdee", + "Sat\u1ecddee" + ], + "MONTH": [ + "Jen\u1ee5war\u1ecb", + "Febr\u1ee5war\u1ecb", + "Maach\u1ecb", + "Eprel", + "Mee", + "Juun", + "Jula\u1ecb", + "\u1eccg\u1ecd\u1ecdst", + "Septemba", + "\u1eccktoba", + "Novemba", + "Disemba" + ], + "SHORTDAY": [ + "\u1ee4ka", + "M\u1ecdn", + "Tiu", + "Wen", + "T\u1ecd\u1ecd", + "Fra\u1ecb", + "Sat" + ], + "SHORTMONTH": [ + "Jen", + "Feb", + "Maa", + "Epr", + "Mee", + "Juu", + "Jul", + "\u1eccg\u1ecd", + "Sep", + "\u1ecckt", + "Nov", + "Dis" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20a6", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ig-ng", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ig.js b/1.2.30/i18n/angular-locale_ig.js new file mode 100644 index 0000000000..843f7372f1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ig.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "A.M.", + "P.M." + ], + "DAY": [ + "Mb\u1ecds\u1ecb \u1ee4ka", + "M\u1ecdnde", + "Tiuzdee", + "Wenezdee", + "T\u1ecd\u1ecdzdee", + "Fra\u1ecbdee", + "Sat\u1ecddee" + ], + "MONTH": [ + "Jen\u1ee5war\u1ecb", + "Febr\u1ee5war\u1ecb", + "Maach\u1ecb", + "Eprel", + "Mee", + "Juun", + "Jula\u1ecb", + "\u1eccg\u1ecd\u1ecdst", + "Septemba", + "\u1eccktoba", + "Novemba", + "Disemba" + ], + "SHORTDAY": [ + "\u1ee4ka", + "M\u1ecdn", + "Tiu", + "Wen", + "T\u1ecd\u1ecd", + "Fra\u1ecb", + "Sat" + ], + "SHORTMONTH": [ + "Jen", + "Feb", + "Maa", + "Epr", + "Mee", + "Juu", + "Jul", + "\u1eccg\u1ecd", + "Sep", + "\u1ecckt", + "Nov", + "Dis" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20a6", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ig", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ii-cn.js b/1.2.30/i18n/angular-locale_ii-cn.js new file mode 100644 index 0000000000..1790d11973 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ii-cn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\ua3b8\ua111", + "\ua06f\ua2d2" + ], + "DAY": [ + "\ua46d\ua18f\ua44d", + "\ua18f\ua282\ua2cd", + "\ua18f\ua282\ua44d", + "\ua18f\ua282\ua315", + "\ua18f\ua282\ua1d6", + "\ua18f\ua282\ua26c", + "\ua18f\ua282\ua0d8" + ], + "MONTH": [ + "\ua2cd\ua1aa", + "\ua44d\ua1aa", + "\ua315\ua1aa", + "\ua1d6\ua1aa", + "\ua26c\ua1aa", + "\ua0d8\ua1aa", + "\ua3c3\ua1aa", + "\ua246\ua1aa", + "\ua22c\ua1aa", + "\ua2b0\ua1aa", + "\ua2b0\ua2aa\ua1aa", + "\ua2b0\ua44b\ua1aa" + ], + "SHORTDAY": [ + "\ua46d\ua18f", + "\ua18f\ua2cd", + "\ua18f\ua44d", + "\ua18f\ua315", + "\ua18f\ua1d6", + "\ua18f\ua26c", + "\ua18f\ua0d8" + ], + "SHORTMONTH": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a5", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ii-cn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ii.js b/1.2.30/i18n/angular-locale_ii.js new file mode 100644 index 0000000000..ddd0c18b67 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ii.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\ua3b8\ua111", + "\ua06f\ua2d2" + ], + "DAY": [ + "\ua46d\ua18f\ua44d", + "\ua18f\ua282\ua2cd", + "\ua18f\ua282\ua44d", + "\ua18f\ua282\ua315", + "\ua18f\ua282\ua1d6", + "\ua18f\ua282\ua26c", + "\ua18f\ua282\ua0d8" + ], + "MONTH": [ + "\ua2cd\ua1aa", + "\ua44d\ua1aa", + "\ua315\ua1aa", + "\ua1d6\ua1aa", + "\ua26c\ua1aa", + "\ua0d8\ua1aa", + "\ua3c3\ua1aa", + "\ua246\ua1aa", + "\ua22c\ua1aa", + "\ua2b0\ua1aa", + "\ua2b0\ua2aa\ua1aa", + "\ua2b0\ua44b\ua1aa" + ], + "SHORTDAY": [ + "\ua46d\ua18f", + "\ua18f\ua2cd", + "\ua18f\ua44d", + "\ua18f\ua315", + "\ua18f\ua1d6", + "\ua18f\ua26c", + "\ua18f\ua0d8" + ], + "SHORTMONTH": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a5", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ii", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_in.js b/1.2.30/i18n/angular-locale_in.js new file mode 100644 index 0000000000..321fa2f466 --- /dev/null +++ b/1.2.30/i18n/angular-locale_in.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Minggu", + "Senin", + "Selasa", + "Rabu", + "Kamis", + "Jumat", + "Sabtu" + ], + "MONTH": [ + "Januari", + "Februari", + "Maret", + "April", + "Mei", + "Juni", + "Juli", + "Agustus", + "September", + "Oktober", + "November", + "Desember" + ], + "SHORTDAY": [ + "Min", + "Sen", + "Sel", + "Rab", + "Kam", + "Jum", + "Sab" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Mei", + "Jun", + "Jul", + "Agt", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, dd MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH.mm.ss", + "mediumDate": "d MMM y", + "mediumTime": "HH.mm.ss", + "short": "dd/MM/yy HH.mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rp", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "in", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_is-is.js b/1.2.30/i18n/angular-locale_is-is.js new file mode 100644 index 0000000000..e55e17afe2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_is-is.js @@ -0,0 +1,128 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +function getWT(v, f) { + if (f === 0) { + return {w: 0, t: 0}; + } + + while ((f % 10) === 0) { + f /= 10; + v--; + } + + return {w: v, t: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "f.h.", + "e.h." + ], + "DAY": [ + "sunnudagur", + "m\u00e1nudagur", + "\u00feri\u00f0judagur", + "mi\u00f0vikudagur", + "fimmtudagur", + "f\u00f6studagur", + "laugardagur" + ], + "MONTH": [ + "jan\u00faar", + "febr\u00faar", + "mars", + "apr\u00edl", + "ma\u00ed", + "j\u00fan\u00ed", + "j\u00fal\u00ed", + "\u00e1g\u00fast", + "september", + "okt\u00f3ber", + "n\u00f3vember", + "desember" + ], + "SHORTDAY": [ + "sun.", + "m\u00e1n.", + "\u00feri.", + "mi\u00f0.", + "fim.", + "f\u00f6s.", + "lau." + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mar.", + "apr.", + "ma\u00ed", + "j\u00fan.", + "j\u00fal.", + "\u00e1g\u00fa.", + "sep.", + "okt.", + "n\u00f3v.", + "des." + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d. MMM y HH:mm:ss", + "mediumDate": "d. MMM y", + "mediumTime": "HH:mm:ss", + "short": "d.M.y HH:mm", + "shortDate": "d.M.y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "is-is", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); var wt = getWT(vf.v, vf.f); if (wt.t == 0 && i % 10 == 1 && i % 100 != 11 || wt.t != 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_is.js b/1.2.30/i18n/angular-locale_is.js new file mode 100644 index 0000000000..026b9e7199 --- /dev/null +++ b/1.2.30/i18n/angular-locale_is.js @@ -0,0 +1,128 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +function getWT(v, f) { + if (f === 0) { + return {w: 0, t: 0}; + } + + while ((f % 10) === 0) { + f /= 10; + v--; + } + + return {w: v, t: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "f.h.", + "e.h." + ], + "DAY": [ + "sunnudagur", + "m\u00e1nudagur", + "\u00feri\u00f0judagur", + "mi\u00f0vikudagur", + "fimmtudagur", + "f\u00f6studagur", + "laugardagur" + ], + "MONTH": [ + "jan\u00faar", + "febr\u00faar", + "mars", + "apr\u00edl", + "ma\u00ed", + "j\u00fan\u00ed", + "j\u00fal\u00ed", + "\u00e1g\u00fast", + "september", + "okt\u00f3ber", + "n\u00f3vember", + "desember" + ], + "SHORTDAY": [ + "sun.", + "m\u00e1n.", + "\u00feri.", + "mi\u00f0.", + "fim.", + "f\u00f6s.", + "lau." + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mar.", + "apr.", + "ma\u00ed", + "j\u00fan.", + "j\u00fal.", + "\u00e1g\u00fa.", + "sep.", + "okt.", + "n\u00f3v.", + "des." + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d. MMM y HH:mm:ss", + "mediumDate": "d. MMM y", + "mediumTime": "HH:mm:ss", + "short": "d.M.y HH:mm", + "shortDate": "d.M.y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "is", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); var wt = getWT(vf.v, vf.f); if (wt.t == 0 && i % 10 == 1 && i % 100 != 11 || wt.t != 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_it-ch.js b/1.2.30/i18n/angular-locale_it-ch.js new file mode 100644 index 0000000000..dd781e8340 --- /dev/null +++ b/1.2.30/i18n/angular-locale_it-ch.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domenica", + "luned\u00ec", + "marted\u00ec", + "mercoled\u00ec", + "gioved\u00ec", + "venerd\u00ec", + "sabato" + ], + "MONTH": [ + "gennaio", + "febbraio", + "marzo", + "aprile", + "maggio", + "giugno", + "luglio", + "agosto", + "settembre", + "ottobre", + "novembre", + "dicembre" + ], + "SHORTDAY": [ + "dom", + "lun", + "mar", + "mer", + "gio", + "ven", + "sab" + ], + "SHORTMONTH": [ + "gen", + "feb", + "mar", + "apr", + "mag", + "giu", + "lug", + "ago", + "set", + "ott", + "nov", + "dic" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d-MMM-y HH:mm:ss", + "mediumDate": "d-MMM-y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CHF", + "DECIMAL_SEP": ".", + "GROUP_SEP": "'", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "it-ch", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_it-it.js b/1.2.30/i18n/angular-locale_it-it.js new file mode 100644 index 0000000000..ada0c4d084 --- /dev/null +++ b/1.2.30/i18n/angular-locale_it-it.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domenica", + "luned\u00ec", + "marted\u00ec", + "mercoled\u00ec", + "gioved\u00ec", + "venerd\u00ec", + "sabato" + ], + "MONTH": [ + "gennaio", + "febbraio", + "marzo", + "aprile", + "maggio", + "giugno", + "luglio", + "agosto", + "settembre", + "ottobre", + "novembre", + "dicembre" + ], + "SHORTDAY": [ + "dom", + "lun", + "mar", + "mer", + "gio", + "ven", + "sab" + ], + "SHORTMONTH": [ + "gen", + "feb", + "mar", + "apr", + "mag", + "giu", + "lug", + "ago", + "set", + "ott", + "nov", + "dic" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "dd MMMM y", + "medium": "dd/MMM/y HH:mm:ss", + "mediumDate": "dd/MMM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "it-it", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_it-sm.js b/1.2.30/i18n/angular-locale_it-sm.js new file mode 100644 index 0000000000..e59f855fb2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_it-sm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domenica", + "luned\u00ec", + "marted\u00ec", + "mercoled\u00ec", + "gioved\u00ec", + "venerd\u00ec", + "sabato" + ], + "MONTH": [ + "gennaio", + "febbraio", + "marzo", + "aprile", + "maggio", + "giugno", + "luglio", + "agosto", + "settembre", + "ottobre", + "novembre", + "dicembre" + ], + "SHORTDAY": [ + "dom", + "lun", + "mar", + "mer", + "gio", + "ven", + "sab" + ], + "SHORTMONTH": [ + "gen", + "feb", + "mar", + "apr", + "mag", + "giu", + "lug", + "ago", + "set", + "ott", + "nov", + "dic" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "dd MMMM y", + "medium": "dd/MMM/y HH:mm:ss", + "mediumDate": "dd/MMM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "it-sm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_it.js b/1.2.30/i18n/angular-locale_it.js new file mode 100644 index 0000000000..f5f31df039 --- /dev/null +++ b/1.2.30/i18n/angular-locale_it.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domenica", + "luned\u00ec", + "marted\u00ec", + "mercoled\u00ec", + "gioved\u00ec", + "venerd\u00ec", + "sabato" + ], + "MONTH": [ + "gennaio", + "febbraio", + "marzo", + "aprile", + "maggio", + "giugno", + "luglio", + "agosto", + "settembre", + "ottobre", + "novembre", + "dicembre" + ], + "SHORTDAY": [ + "dom", + "lun", + "mar", + "mer", + "gio", + "ven", + "sab" + ], + "SHORTMONTH": [ + "gen", + "feb", + "mar", + "apr", + "mag", + "giu", + "lug", + "ago", + "set", + "ott", + "nov", + "dic" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "dd MMMM y", + "medium": "dd/MMM/y HH:mm:ss", + "mediumDate": "dd/MMM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "it", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_iw.js b/1.2.30/i18n/angular-locale_iw.js new file mode 100644 index 0000000000..bbd6121c5d --- /dev/null +++ b/1.2.30/i18n/angular-locale_iw.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u05dc\u05e4\u05e0\u05d4\u05f4\u05e6", + "\u05d0\u05d7\u05d4\u05f4\u05e6" + ], + "DAY": [ + "\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df", + "\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9", + "\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9", + "\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9", + "\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9", + "\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9\u05d9", + "\u05d9\u05d5\u05dd \u05e9\u05d1\u05ea" + ], + "MONTH": [ + "\u05d9\u05e0\u05d5\u05d0\u05e8", + "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8", + "\u05de\u05e8\u05e5", + "\u05d0\u05e4\u05e8\u05d9\u05dc", + "\u05de\u05d0\u05d9", + "\u05d9\u05d5\u05e0\u05d9", + "\u05d9\u05d5\u05dc\u05d9", + "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8", + "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8", + "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8", + "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8", + "\u05d3\u05e6\u05de\u05d1\u05e8" + ], + "SHORTDAY": [ + "\u05d9\u05d5\u05dd \u05d0\u05f3", + "\u05d9\u05d5\u05dd \u05d1\u05f3", + "\u05d9\u05d5\u05dd \u05d2\u05f3", + "\u05d9\u05d5\u05dd \u05d3\u05f3", + "\u05d9\u05d5\u05dd \u05d4\u05f3", + "\u05d9\u05d5\u05dd \u05d5\u05f3", + "\u05e9\u05d1\u05ea" + ], + "SHORTMONTH": [ + "\u05d9\u05e0\u05d5\u05f3", + "\u05e4\u05d1\u05e8\u05f3", + "\u05de\u05e8\u05e5", + "\u05d0\u05e4\u05e8\u05f3", + "\u05de\u05d0\u05d9", + "\u05d9\u05d5\u05e0\u05d9", + "\u05d9\u05d5\u05dc\u05d9", + "\u05d0\u05d5\u05d2\u05f3", + "\u05e1\u05e4\u05d8\u05f3", + "\u05d0\u05d5\u05e7\u05f3", + "\u05e0\u05d5\u05d1\u05f3", + "\u05d3\u05e6\u05de\u05f3" + ], + "fullDate": "EEEE, d \u05d1MMMM y", + "longDate": "d \u05d1MMMM y", + "medium": "d \u05d1MMM y HH:mm:ss", + "mediumDate": "d \u05d1MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20aa", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "iw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } if (i == 2 && vf.v == 0) { return PLURAL_CATEGORY.TWO; } if (vf.v == 0 && (n < 0 || n > 10) && n % 10 == 0) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ja-jp.js b/1.2.30/i18n/angular-locale_ja-jp.js new file mode 100644 index 0000000000..182f934275 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ja-jp.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u5348\u524d", + "\u5348\u5f8c" + ], + "DAY": [ + "\u65e5\u66dc\u65e5", + "\u6708\u66dc\u65e5", + "\u706b\u66dc\u65e5", + "\u6c34\u66dc\u65e5", + "\u6728\u66dc\u65e5", + "\u91d1\u66dc\u65e5", + "\u571f\u66dc\u65e5" + ], + "MONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "SHORTDAY": [ + "\u65e5", + "\u6708", + "\u706b", + "\u6c34", + "\u6728", + "\u91d1", + "\u571f" + ], + "SHORTMONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "fullDate": "y\u5e74M\u6708d\u65e5EEEE", + "longDate": "y\u5e74M\u6708d\u65e5", + "medium": "y/MM/dd H:mm:ss", + "mediumDate": "y/MM/dd", + "mediumTime": "H:mm:ss", + "short": "y/MM/dd H:mm", + "shortDate": "y/MM/dd", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a5", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ja-jp", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ja.js b/1.2.30/i18n/angular-locale_ja.js new file mode 100644 index 0000000000..0ceb519020 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ja.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u5348\u524d", + "\u5348\u5f8c" + ], + "DAY": [ + "\u65e5\u66dc\u65e5", + "\u6708\u66dc\u65e5", + "\u706b\u66dc\u65e5", + "\u6c34\u66dc\u65e5", + "\u6728\u66dc\u65e5", + "\u91d1\u66dc\u65e5", + "\u571f\u66dc\u65e5" + ], + "MONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "SHORTDAY": [ + "\u65e5", + "\u6708", + "\u706b", + "\u6c34", + "\u6728", + "\u91d1", + "\u571f" + ], + "SHORTMONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "fullDate": "y\u5e74M\u6708d\u65e5EEEE", + "longDate": "y\u5e74M\u6708d\u65e5", + "medium": "y/MM/dd H:mm:ss", + "mediumDate": "y/MM/dd", + "mediumTime": "H:mm:ss", + "short": "y/MM/dd H:mm", + "shortDate": "y/MM/dd", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a5", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ja", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_jgo-cm.js b/1.2.30/i18n/angular-locale_jgo-cm.js new file mode 100644 index 0000000000..f308195ea3 --- /dev/null +++ b/1.2.30/i18n/angular-locale_jgo-cm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "mba\ua78cmba\ua78c", + "\u014bka mb\u0254\u0301t nji" + ], + "DAY": [ + "S\u0254\u0301ndi", + "M\u0254\u0301ndi", + "\u00c1pta M\u0254\u0301ndi", + "W\u025b\u0301n\u025bs\u025bd\u025b", + "T\u0254\u0301s\u025bd\u025b", + "F\u025bl\u00e2y\u025bd\u025b", + "S\u00e1sid\u025b" + ], + "MONTH": [ + "Ndu\u014bmbi Sa\u014b", + "P\u025bsa\u014b P\u025b\u0301p\u00e1", + "P\u025bsa\u014b P\u025b\u0301t\u00e1t", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301kwa", + "P\u025bsa\u014b Pataa", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301nt\u00fak\u00fa", + "P\u025bsa\u014b Saamb\u00e1", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301f\u0254m", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301pf\u00fa\ua78b\u00fa", + "P\u025bsa\u014b N\u025bg\u025b\u0301m", + "P\u025bsa\u014b Nts\u0254\u030cpm\u0254\u0301", + "P\u025bsa\u014b Nts\u0254\u030cpp\u00e1" + ], + "SHORTDAY": [ + "S\u0254\u0301ndi", + "M\u0254\u0301ndi", + "\u00c1pta M\u0254\u0301ndi", + "W\u025b\u0301n\u025bs\u025bd\u025b", + "T\u0254\u0301s\u025bd\u025b", + "F\u025bl\u00e2y\u025bd\u025b", + "S\u00e1sid\u025b" + ], + "SHORTMONTH": [ + "Ndu\u014bmbi Sa\u014b", + "P\u025bsa\u014b P\u025b\u0301p\u00e1", + "P\u025bsa\u014b P\u025b\u0301t\u00e1t", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301kwa", + "P\u025bsa\u014b Pataa", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301nt\u00fak\u00fa", + "P\u025bsa\u014b Saamb\u00e1", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301f\u0254m", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301pf\u00fa\ua78b\u00fa", + "P\u025bsa\u014b N\u025bg\u025b\u0301m", + "P\u025bsa\u014b Nts\u0254\u030cpm\u0254\u0301", + "P\u025bsa\u014b Nts\u0254\u030cpp\u00e1" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "jgo-cm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_jgo.js b/1.2.30/i18n/angular-locale_jgo.js new file mode 100644 index 0000000000..61c514b08d --- /dev/null +++ b/1.2.30/i18n/angular-locale_jgo.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "mba\ua78cmba\ua78c", + "\u014bka mb\u0254\u0301t nji" + ], + "DAY": [ + "S\u0254\u0301ndi", + "M\u0254\u0301ndi", + "\u00c1pta M\u0254\u0301ndi", + "W\u025b\u0301n\u025bs\u025bd\u025b", + "T\u0254\u0301s\u025bd\u025b", + "F\u025bl\u00e2y\u025bd\u025b", + "S\u00e1sid\u025b" + ], + "MONTH": [ + "Ndu\u014bmbi Sa\u014b", + "P\u025bsa\u014b P\u025b\u0301p\u00e1", + "P\u025bsa\u014b P\u025b\u0301t\u00e1t", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301kwa", + "P\u025bsa\u014b Pataa", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301nt\u00fak\u00fa", + "P\u025bsa\u014b Saamb\u00e1", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301f\u0254m", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301pf\u00fa\ua78b\u00fa", + "P\u025bsa\u014b N\u025bg\u025b\u0301m", + "P\u025bsa\u014b Nts\u0254\u030cpm\u0254\u0301", + "P\u025bsa\u014b Nts\u0254\u030cpp\u00e1" + ], + "SHORTDAY": [ + "S\u0254\u0301ndi", + "M\u0254\u0301ndi", + "\u00c1pta M\u0254\u0301ndi", + "W\u025b\u0301n\u025bs\u025bd\u025b", + "T\u0254\u0301s\u025bd\u025b", + "F\u025bl\u00e2y\u025bd\u025b", + "S\u00e1sid\u025b" + ], + "SHORTMONTH": [ + "Ndu\u014bmbi Sa\u014b", + "P\u025bsa\u014b P\u025b\u0301p\u00e1", + "P\u025bsa\u014b P\u025b\u0301t\u00e1t", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301kwa", + "P\u025bsa\u014b Pataa", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301nt\u00fak\u00fa", + "P\u025bsa\u014b Saamb\u00e1", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301f\u0254m", + "P\u025bsa\u014b P\u025b\u0301n\u025b\u0301pf\u00fa\ua78b\u00fa", + "P\u025bsa\u014b N\u025bg\u025b\u0301m", + "P\u025bsa\u014b Nts\u0254\u030cpm\u0254\u0301", + "P\u025bsa\u014b Nts\u0254\u030cpp\u00e1" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "jgo", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_jmc-tz.js b/1.2.30/i18n/angular-locale_jmc-tz.js new file mode 100644 index 0000000000..fdd4c75ee9 --- /dev/null +++ b/1.2.30/i18n/angular-locale_jmc-tz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "utuko", + "kyiukonyi" + ], + "DAY": [ + "Jumapilyi", + "Jumatatuu", + "Jumanne", + "Jumatanu", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Aprilyi", + "Mei", + "Junyi", + "Julyai", + "Agusti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Jpi", + "Jtt", + "Jnn", + "Jtn", + "Alh", + "Iju", + "Jmo" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "jmc-tz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_jmc.js b/1.2.30/i18n/angular-locale_jmc.js new file mode 100644 index 0000000000..13a435f012 --- /dev/null +++ b/1.2.30/i18n/angular-locale_jmc.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "utuko", + "kyiukonyi" + ], + "DAY": [ + "Jumapilyi", + "Jumatatuu", + "Jumanne", + "Jumatanu", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Aprilyi", + "Mei", + "Junyi", + "Julyai", + "Agusti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Jpi", + "Jtt", + "Jnn", + "Jtn", + "Alh", + "Iju", + "Jmo" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "jmc", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ka-ge.js b/1.2.30/i18n/angular-locale_ka-ge.js new file mode 100644 index 0000000000..4f3aebcfec --- /dev/null +++ b/1.2.30/i18n/angular-locale_ka-ge.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u10d3\u10d8\u10da\u10d8\u10e1", + "\u10e1\u10d0\u10e6\u10d0\u10db\u10dd\u10e1" + ], + "DAY": [ + "\u10d9\u10d5\u10d8\u10e0\u10d0", + "\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8", + "\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8", + "\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8", + "\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8", + "\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8", + "\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8" + ], + "MONTH": [ + "\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8", + "\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8", + "\u10db\u10d0\u10e0\u10e2\u10d8", + "\u10d0\u10de\u10e0\u10d8\u10da\u10d8", + "\u10db\u10d0\u10d8\u10e1\u10d8", + "\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8", + "\u10d8\u10d5\u10da\u10d8\u10e1\u10d8", + "\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd", + "\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8", + "\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8", + "\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8", + "\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8" + ], + "SHORTDAY": [ + "\u10d9\u10d5\u10d8", + "\u10dd\u10e0\u10e8", + "\u10e1\u10d0\u10db", + "\u10dd\u10d7\u10ee", + "\u10ee\u10e3\u10d7", + "\u10de\u10d0\u10e0", + "\u10e8\u10d0\u10d1" + ], + "SHORTMONTH": [ + "\u10d8\u10d0\u10dc", + "\u10d7\u10d4\u10d1", + "\u10db\u10d0\u10e0", + "\u10d0\u10de\u10e0", + "\u10db\u10d0\u10d8", + "\u10d8\u10d5\u10dc", + "\u10d8\u10d5\u10da", + "\u10d0\u10d2\u10d5", + "\u10e1\u10d4\u10e5", + "\u10dd\u10e5\u10e2", + "\u10dc\u10dd\u10d4", + "\u10d3\u10d4\u10d9" + ], + "fullDate": "EEEE, dd MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "GEL", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ka-ge", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ka.js b/1.2.30/i18n/angular-locale_ka.js new file mode 100644 index 0000000000..c8d8c4ce45 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ka.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u10d3\u10d8\u10da\u10d8\u10e1", + "\u10e1\u10d0\u10e6\u10d0\u10db\u10dd\u10e1" + ], + "DAY": [ + "\u10d9\u10d5\u10d8\u10e0\u10d0", + "\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8", + "\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8", + "\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8", + "\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8", + "\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8", + "\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8" + ], + "MONTH": [ + "\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8", + "\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8", + "\u10db\u10d0\u10e0\u10e2\u10d8", + "\u10d0\u10de\u10e0\u10d8\u10da\u10d8", + "\u10db\u10d0\u10d8\u10e1\u10d8", + "\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8", + "\u10d8\u10d5\u10da\u10d8\u10e1\u10d8", + "\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd", + "\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8", + "\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8", + "\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8", + "\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8" + ], + "SHORTDAY": [ + "\u10d9\u10d5\u10d8", + "\u10dd\u10e0\u10e8", + "\u10e1\u10d0\u10db", + "\u10dd\u10d7\u10ee", + "\u10ee\u10e3\u10d7", + "\u10de\u10d0\u10e0", + "\u10e8\u10d0\u10d1" + ], + "SHORTMONTH": [ + "\u10d8\u10d0\u10dc", + "\u10d7\u10d4\u10d1", + "\u10db\u10d0\u10e0", + "\u10d0\u10de\u10e0", + "\u10db\u10d0\u10d8", + "\u10d8\u10d5\u10dc", + "\u10d8\u10d5\u10da", + "\u10d0\u10d2\u10d5", + "\u10e1\u10d4\u10e5", + "\u10dd\u10e5\u10e2", + "\u10dc\u10dd\u10d4", + "\u10d3\u10d4\u10d9" + ], + "fullDate": "EEEE, dd MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "GEL", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ka", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kab-dz.js b/1.2.30/i18n/angular-locale_kab-dz.js new file mode 100644 index 0000000000..1999a392eb --- /dev/null +++ b/1.2.30/i18n/angular-locale_kab-dz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "n tufat", + "n tmeddit" + ], + "DAY": [ + "Yanass", + "Sanass", + "Kra\u1e0dass", + "Ku\u1e93ass", + "Samass", + "S\u1e0disass", + "Sayass" + ], + "MONTH": [ + "Yennayer", + "Fu\u1e5bar", + "Me\u0263res", + "Yebrir", + "Mayyu", + "Yunyu", + "Yulyu", + "\u0194uct", + "Ctembe\u1e5b", + "Tube\u1e5b", + "Nunembe\u1e5b", + "Du\u01e7embe\u1e5b" + ], + "SHORTDAY": [ + "Yan", + "San", + "Kra\u1e0d", + "Ku\u1e93", + "Sam", + "S\u1e0dis", + "Say" + ], + "SHORTMONTH": [ + "Yen", + "Fur", + "Me\u0263", + "Yeb", + "May", + "Yun", + "Yul", + "\u0194uc", + "Cte", + "Tub", + "Nun", + "Du\u01e7" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "kab-dz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kab.js b/1.2.30/i18n/angular-locale_kab.js new file mode 100644 index 0000000000..9f60c4fd96 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kab.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "n tufat", + "n tmeddit" + ], + "DAY": [ + "Yanass", + "Sanass", + "Kra\u1e0dass", + "Ku\u1e93ass", + "Samass", + "S\u1e0disass", + "Sayass" + ], + "MONTH": [ + "Yennayer", + "Fu\u1e5bar", + "Me\u0263res", + "Yebrir", + "Mayyu", + "Yunyu", + "Yulyu", + "\u0194uct", + "Ctembe\u1e5b", + "Tube\u1e5b", + "Nunembe\u1e5b", + "Du\u01e7embe\u1e5b" + ], + "SHORTDAY": [ + "Yan", + "San", + "Kra\u1e0d", + "Ku\u1e93", + "Sam", + "S\u1e0dis", + "Say" + ], + "SHORTMONTH": [ + "Yen", + "Fur", + "Me\u0263", + "Yeb", + "May", + "Yun", + "Yul", + "\u0194uc", + "Cte", + "Tub", + "Nun", + "Du\u01e7" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "kab", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kam-ke.js b/1.2.30/i18n/angular-locale_kam-ke.js new file mode 100644 index 0000000000..6744328ed5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kam-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0128yakwakya", + "\u0128yaw\u0129oo" + ], + "DAY": [ + "Wa kyumwa", + "Wa kwamb\u0129l\u0129lya", + "Wa kel\u0129", + "Wa katat\u0169", + "Wa kana", + "Wa katano", + "Wa thanthat\u0169" + ], + "MONTH": [ + "Mwai wa mbee", + "Mwai wa kel\u0129", + "Mwai wa katat\u0169", + "Mwai wa kana", + "Mwai wa katano", + "Mwai wa thanthat\u0169", + "Mwai wa muonza", + "Mwai wa nyaanya", + "Mwai wa kenda", + "Mwai wa \u0129kumi", + "Mwai wa \u0129kumi na \u0129mwe", + "Mwai wa \u0129kumi na il\u0129" + ], + "SHORTDAY": [ + "Wky", + "Wkw", + "Wkl", + "Wt\u0169", + "Wkn", + "Wtn", + "Wth" + ], + "SHORTMONTH": [ + "Mbe", + "Kel", + "Kt\u0169", + "Kan", + "Ktn", + "Tha", + "Moo", + "Nya", + "Knd", + "\u0128ku", + "\u0128km", + "\u0128kl" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "kam-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kam.js b/1.2.30/i18n/angular-locale_kam.js new file mode 100644 index 0000000000..be86b048a2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kam.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0128yakwakya", + "\u0128yaw\u0129oo" + ], + "DAY": [ + "Wa kyumwa", + "Wa kwamb\u0129l\u0129lya", + "Wa kel\u0129", + "Wa katat\u0169", + "Wa kana", + "Wa katano", + "Wa thanthat\u0169" + ], + "MONTH": [ + "Mwai wa mbee", + "Mwai wa kel\u0129", + "Mwai wa katat\u0169", + "Mwai wa kana", + "Mwai wa katano", + "Mwai wa thanthat\u0169", + "Mwai wa muonza", + "Mwai wa nyaanya", + "Mwai wa kenda", + "Mwai wa \u0129kumi", + "Mwai wa \u0129kumi na \u0129mwe", + "Mwai wa \u0129kumi na il\u0129" + ], + "SHORTDAY": [ + "Wky", + "Wkw", + "Wkl", + "Wt\u0169", + "Wkn", + "Wtn", + "Wth" + ], + "SHORTMONTH": [ + "Mbe", + "Kel", + "Kt\u0169", + "Kan", + "Ktn", + "Tha", + "Moo", + "Nya", + "Knd", + "\u0128ku", + "\u0128km", + "\u0128kl" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "kam", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kde-tz.js b/1.2.30/i18n/angular-locale_kde-tz.js new file mode 100644 index 0000000000..aa54b3f1a4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kde-tz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Muhi", + "Chilo" + ], + "DAY": [ + "Liduva lyapili", + "Liduva lyatatu", + "Liduva lyanchechi", + "Liduva lyannyano", + "Liduva lyannyano na linji", + "Liduva lyannyano na mavili", + "Liduva litandi" + ], + "MONTH": [ + "Mwedi Ntandi", + "Mwedi wa Pili", + "Mwedi wa Tatu", + "Mwedi wa Nchechi", + "Mwedi wa Nnyano", + "Mwedi wa Nnyano na Umo", + "Mwedi wa Nnyano na Mivili", + "Mwedi wa Nnyano na Mitatu", + "Mwedi wa Nnyano na Nchechi", + "Mwedi wa Nnyano na Nnyano", + "Mwedi wa Nnyano na Nnyano na U", + "Mwedi wa Nnyano na Nnyano na M" + ], + "SHORTDAY": [ + "Ll2", + "Ll3", + "Ll4", + "Ll5", + "Ll6", + "Ll7", + "Ll1" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "kde-tz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kde.js b/1.2.30/i18n/angular-locale_kde.js new file mode 100644 index 0000000000..a10699bf08 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kde.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Muhi", + "Chilo" + ], + "DAY": [ + "Liduva lyapili", + "Liduva lyatatu", + "Liduva lyanchechi", + "Liduva lyannyano", + "Liduva lyannyano na linji", + "Liduva lyannyano na mavili", + "Liduva litandi" + ], + "MONTH": [ + "Mwedi Ntandi", + "Mwedi wa Pili", + "Mwedi wa Tatu", + "Mwedi wa Nchechi", + "Mwedi wa Nnyano", + "Mwedi wa Nnyano na Umo", + "Mwedi wa Nnyano na Mivili", + "Mwedi wa Nnyano na Mitatu", + "Mwedi wa Nnyano na Nchechi", + "Mwedi wa Nnyano na Nnyano", + "Mwedi wa Nnyano na Nnyano na U", + "Mwedi wa Nnyano na Nnyano na M" + ], + "SHORTDAY": [ + "Ll2", + "Ll3", + "Ll4", + "Ll5", + "Ll6", + "Ll7", + "Ll1" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "kde", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kea-cv.js b/1.2.30/i18n/angular-locale_kea-cv.js new file mode 100644 index 0000000000..2777675d73 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kea-cv.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "am", + "pm" + ], + "DAY": [ + "dumingu", + "sigunda-fera", + "tersa-fera", + "kuarta-fera", + "kinta-fera", + "sesta-fera", + "sabadu" + ], + "MONTH": [ + "Janeru", + "Fevereru", + "Marsu", + "Abril", + "Maiu", + "Junhu", + "Julhu", + "Agostu", + "Setenbru", + "Otubru", + "Nuvenbru", + "Dizenbru" + ], + "SHORTDAY": [ + "dum", + "sig", + "ter", + "kua", + "kin", + "ses", + "sab" + ], + "SHORTMONTH": [ + "Jan", + "Fev", + "Mar", + "Abr", + "Mai", + "Jun", + "Jul", + "Ago", + "Set", + "Otu", + "Nuv", + "Diz" + ], + "fullDate": "EEEE, d 'di' MMMM 'di' y", + "longDate": "d 'di' MMMM 'di' y", + "medium": "d 'di' MMM 'di' y HH:mm:ss", + "mediumDate": "d 'di' MMM 'di' y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CVE", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "kea-cv", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kea.js b/1.2.30/i18n/angular-locale_kea.js new file mode 100644 index 0000000000..09f1fc2b01 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kea.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "am", + "pm" + ], + "DAY": [ + "dumingu", + "sigunda-fera", + "tersa-fera", + "kuarta-fera", + "kinta-fera", + "sesta-fera", + "sabadu" + ], + "MONTH": [ + "Janeru", + "Fevereru", + "Marsu", + "Abril", + "Maiu", + "Junhu", + "Julhu", + "Agostu", + "Setenbru", + "Otubru", + "Nuvenbru", + "Dizenbru" + ], + "SHORTDAY": [ + "dum", + "sig", + "ter", + "kua", + "kin", + "ses", + "sab" + ], + "SHORTMONTH": [ + "Jan", + "Fev", + "Mar", + "Abr", + "Mai", + "Jun", + "Jul", + "Ago", + "Set", + "Otu", + "Nuv", + "Diz" + ], + "fullDate": "EEEE, d 'di' MMMM 'di' y", + "longDate": "d 'di' MMMM 'di' y", + "medium": "d 'di' MMM 'di' y HH:mm:ss", + "mediumDate": "d 'di' MMM 'di' y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CVE", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "kea", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_khq-ml.js b/1.2.30/i18n/angular-locale_khq-ml.js new file mode 100644 index 0000000000..2563520e57 --- /dev/null +++ b/1.2.30/i18n/angular-locale_khq-ml.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Adduha", + "Aluula" + ], + "DAY": [ + "Alhadi", + "Atini", + "Atalata", + "Alarba", + "Alhamiisa", + "Aljuma", + "Assabdu" + ], + "MONTH": [ + "\u017danwiye", + "Feewiriye", + "Marsi", + "Awiril", + "Me", + "\u017duwe\u014b", + "\u017duyye", + "Ut", + "Sektanbur", + "Oktoobur", + "Noowanbur", + "Deesanbur" + ], + "SHORTDAY": [ + "Alh", + "Ati", + "Ata", + "Ala", + "Alm", + "Alj", + "Ass" + ], + "SHORTMONTH": [ + "\u017dan", + "Fee", + "Mar", + "Awi", + "Me", + "\u017duw", + "\u017duy", + "Ut", + "Sek", + "Okt", + "Noo", + "Dee" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "khq-ml", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_khq.js b/1.2.30/i18n/angular-locale_khq.js new file mode 100644 index 0000000000..6b5e435f49 --- /dev/null +++ b/1.2.30/i18n/angular-locale_khq.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Adduha", + "Aluula" + ], + "DAY": [ + "Alhadi", + "Atini", + "Atalata", + "Alarba", + "Alhamiisa", + "Aljuma", + "Assabdu" + ], + "MONTH": [ + "\u017danwiye", + "Feewiriye", + "Marsi", + "Awiril", + "Me", + "\u017duwe\u014b", + "\u017duyye", + "Ut", + "Sektanbur", + "Oktoobur", + "Noowanbur", + "Deesanbur" + ], + "SHORTDAY": [ + "Alh", + "Ati", + "Ata", + "Ala", + "Alm", + "Alj", + "Ass" + ], + "SHORTMONTH": [ + "\u017dan", + "Fee", + "Mar", + "Awi", + "Me", + "\u017duw", + "\u017duy", + "Ut", + "Sek", + "Okt", + "Noo", + "Dee" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "khq", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ki-ke.js b/1.2.30/i18n/angular-locale_ki-ke.js new file mode 100644 index 0000000000..87908de5be --- /dev/null +++ b/1.2.30/i18n/angular-locale_ki-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Kiroko", + "Hwa\u0129-in\u0129" + ], + "DAY": [ + "Kiumia", + "Njumatat\u0169", + "Njumaine", + "Njumatana", + "Aramithi", + "Njumaa", + "Njumamothi" + ], + "MONTH": [ + "Njenuar\u0129", + "Mwere wa ker\u0129", + "Mwere wa gatat\u0169", + "Mwere wa kana", + "Mwere wa gatano", + "Mwere wa gatandat\u0169", + "Mwere wa m\u0169gwanja", + "Mwere wa kanana", + "Mwere wa kenda", + "Mwere wa ik\u0169mi", + "Mwere wa ik\u0169mi na \u0169mwe", + "Ndithemba" + ], + "SHORTDAY": [ + "KMA", + "NTT", + "NMN", + "NMT", + "ART", + "NMA", + "NMM" + ], + "SHORTMONTH": [ + "JEN", + "WKR", + "WGT", + "WKN", + "WTN", + "WTD", + "WMJ", + "WNN", + "WKD", + "WIK", + "WMW", + "DIT" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ki-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ki.js b/1.2.30/i18n/angular-locale_ki.js new file mode 100644 index 0000000000..c277622d0e --- /dev/null +++ b/1.2.30/i18n/angular-locale_ki.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Kiroko", + "Hwa\u0129-in\u0129" + ], + "DAY": [ + "Kiumia", + "Njumatat\u0169", + "Njumaine", + "Njumatana", + "Aramithi", + "Njumaa", + "Njumamothi" + ], + "MONTH": [ + "Njenuar\u0129", + "Mwere wa ker\u0129", + "Mwere wa gatat\u0169", + "Mwere wa kana", + "Mwere wa gatano", + "Mwere wa gatandat\u0169", + "Mwere wa m\u0169gwanja", + "Mwere wa kanana", + "Mwere wa kenda", + "Mwere wa ik\u0169mi", + "Mwere wa ik\u0169mi na \u0169mwe", + "Ndithemba" + ], + "SHORTDAY": [ + "KMA", + "NTT", + "NMN", + "NMT", + "ART", + "NMA", + "NMM" + ], + "SHORTMONTH": [ + "JEN", + "WKR", + "WGT", + "WKN", + "WTN", + "WTD", + "WMJ", + "WNN", + "WKD", + "WIK", + "WMW", + "DIT" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ki", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kk-cyrl-kz.js b/1.2.30/i18n/angular-locale_kk-cyrl-kz.js new file mode 100644 index 0000000000..2139db67ee --- /dev/null +++ b/1.2.30/i18n/angular-locale_kk-cyrl-kz.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0442\u04af\u0441\u043a\u0435 \u0434\u0435\u0439\u0456\u043d", + "\u0442\u04af\u0441\u0442\u0435\u043d \u043a\u0435\u0439\u0456\u043d" + ], + "DAY": [ + "\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456", + "\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456", + "\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456", + "\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456", + "\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456", + "\u0436\u04b1\u043c\u0430", + "\u0441\u0435\u043d\u0431\u0456" + ], + "MONTH": [ + "\u049b\u0430\u04a3\u0442\u0430\u0440", + "\u0430\u049b\u043f\u0430\u043d", + "\u043d\u0430\u0443\u0440\u044b\u0437", + "\u0441\u04d9\u0443\u0456\u0440", + "\u043c\u0430\u043c\u044b\u0440", + "\u043c\u0430\u0443\u0441\u044b\u043c", + "\u0448\u0456\u043b\u0434\u0435", + "\u0442\u0430\u043c\u044b\u0437", + "\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a", + "\u049b\u0430\u0437\u0430\u043d", + "\u049b\u0430\u0440\u0430\u0448\u0430", + "\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d" + ], + "SHORTDAY": [ + "\u0436\u0441.", + "\u0434\u0441.", + "\u0441\u0441.", + "\u0441\u0440.", + "\u0431\u0441.", + "\u0436\u043c.", + "\u0441\u0431." + ], + "SHORTMONTH": [ + "\u049b\u0430\u04a3.", + "\u0430\u049b\u043f.", + "\u043d\u0430\u0443.", + "\u0441\u04d9\u0443.", + "\u043c\u0430\u043c.", + "\u043c\u0430\u0443.", + "\u0448\u0456\u043b.", + "\u0442\u0430\u043c.", + "\u049b\u044b\u0440.", + "\u049b\u0430\u0437.", + "\u049b\u0430\u0440.", + "\u0436\u0435\u043b\u0442." + ], + "fullDate": "EEEE, d MMMM y '\u0436'.", + "longDate": "d MMMM y '\u0436'.", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b8", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "kk-cyrl-kz", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kk-cyrl.js b/1.2.30/i18n/angular-locale_kk-cyrl.js new file mode 100644 index 0000000000..5a627472f2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kk-cyrl.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0442\u04af\u0441\u043a\u0435 \u0434\u0435\u0439\u0456\u043d", + "\u0442\u04af\u0441\u0442\u0435\u043d \u043a\u0435\u0439\u0456\u043d" + ], + "DAY": [ + "\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456", + "\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456", + "\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456", + "\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456", + "\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456", + "\u0436\u04b1\u043c\u0430", + "\u0441\u0435\u043d\u0431\u0456" + ], + "MONTH": [ + "\u049b\u0430\u04a3\u0442\u0430\u0440", + "\u0430\u049b\u043f\u0430\u043d", + "\u043d\u0430\u0443\u0440\u044b\u0437", + "\u0441\u04d9\u0443\u0456\u0440", + "\u043c\u0430\u043c\u044b\u0440", + "\u043c\u0430\u0443\u0441\u044b\u043c", + "\u0448\u0456\u043b\u0434\u0435", + "\u0442\u0430\u043c\u044b\u0437", + "\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a", + "\u049b\u0430\u0437\u0430\u043d", + "\u049b\u0430\u0440\u0430\u0448\u0430", + "\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d" + ], + "SHORTDAY": [ + "\u0436\u0441.", + "\u0434\u0441.", + "\u0441\u0441.", + "\u0441\u0440.", + "\u0431\u0441.", + "\u0436\u043c.", + "\u0441\u0431." + ], + "SHORTMONTH": [ + "\u049b\u0430\u04a3.", + "\u0430\u049b\u043f.", + "\u043d\u0430\u0443.", + "\u0441\u04d9\u0443.", + "\u043c\u0430\u043c.", + "\u043c\u0430\u0443.", + "\u0448\u0456\u043b.", + "\u0442\u0430\u043c.", + "\u049b\u044b\u0440.", + "\u049b\u0430\u0437.", + "\u049b\u0430\u0440.", + "\u0436\u0435\u043b\u0442." + ], + "fullDate": "EEEE, d MMMM y '\u0436'.", + "longDate": "d MMMM y '\u0436'.", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "kk-cyrl", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kk.js b/1.2.30/i18n/angular-locale_kk.js new file mode 100644 index 0000000000..badbec604e --- /dev/null +++ b/1.2.30/i18n/angular-locale_kk.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0442\u04af\u0441\u043a\u0435 \u0434\u0435\u0439\u0456\u043d", + "\u0442\u04af\u0441\u0442\u0435\u043d \u043a\u0435\u0439\u0456\u043d" + ], + "DAY": [ + "\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456", + "\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456", + "\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456", + "\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456", + "\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456", + "\u0436\u04b1\u043c\u0430", + "\u0441\u0435\u043d\u0431\u0456" + ], + "MONTH": [ + "\u049b\u0430\u04a3\u0442\u0430\u0440", + "\u0430\u049b\u043f\u0430\u043d", + "\u043d\u0430\u0443\u0440\u044b\u0437", + "\u0441\u04d9\u0443\u0456\u0440", + "\u043c\u0430\u043c\u044b\u0440", + "\u043c\u0430\u0443\u0441\u044b\u043c", + "\u0448\u0456\u043b\u0434\u0435", + "\u0442\u0430\u043c\u044b\u0437", + "\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a", + "\u049b\u0430\u0437\u0430\u043d", + "\u049b\u0430\u0440\u0430\u0448\u0430", + "\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d" + ], + "SHORTDAY": [ + "\u0436\u0441.", + "\u0434\u0441.", + "\u0441\u0441.", + "\u0441\u0440.", + "\u0431\u0441.", + "\u0436\u043c.", + "\u0441\u0431." + ], + "SHORTMONTH": [ + "\u049b\u0430\u04a3.", + "\u0430\u049b\u043f.", + "\u043d\u0430\u0443.", + "\u0441\u04d9\u0443.", + "\u043c\u0430\u043c.", + "\u043c\u0430\u0443.", + "\u0448\u0456\u043b.", + "\u0442\u0430\u043c.", + "\u049b\u044b\u0440.", + "\u049b\u0430\u0437.", + "\u049b\u0430\u0440.", + "\u0436\u0435\u043b\u0442." + ], + "fullDate": "EEEE, d MMMM y '\u0436'.", + "longDate": "d MMMM y '\u0436'.", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b8", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "kk", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kkj-cm.js b/1.2.30/i18n/angular-locale_kkj-cm.js new file mode 100644 index 0000000000..5ae67041ce --- /dev/null +++ b/1.2.30/i18n/angular-locale_kkj-cm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "s\u0254ndi", + "lundi", + "mardi", + "m\u025brk\u025br\u025bdi", + "yedi", + "va\u014bd\u025br\u025bdi", + "m\u0254n\u0254 s\u0254ndi" + ], + "MONTH": [ + "pamba", + "wanja", + "mbiy\u0254 m\u025bndo\u014bg\u0254", + "Ny\u0254l\u0254mb\u0254\u014bg\u0254", + "M\u0254n\u0254 \u014bgbanja", + "Nya\u014bgw\u025b \u014bgbanja", + "ku\u014bgw\u025b", + "f\u025b", + "njapi", + "nyukul", + "11", + "\u0253ul\u0253us\u025b" + ], + "SHORTDAY": [ + "s\u0254ndi", + "lundi", + "mardi", + "m\u025brk\u025br\u025bdi", + "yedi", + "va\u014bd\u025br\u025bdi", + "m\u0254n\u0254 s\u0254ndi" + ], + "SHORTMONTH": [ + "pamba", + "wanja", + "mbiy\u0254 m\u025bndo\u014bg\u0254", + "Ny\u0254l\u0254mb\u0254\u014bg\u0254", + "M\u0254n\u0254 \u014bgbanja", + "Nya\u014bgw\u025b \u014bgbanja", + "ku\u014bgw\u025b", + "f\u025b", + "njapi", + "nyukul", + "11", + "\u0253ul\u0253us\u025b" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM y HH:mm", + "shortDate": "dd/MM y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "kkj-cm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kkj.js b/1.2.30/i18n/angular-locale_kkj.js new file mode 100644 index 0000000000..384d301687 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kkj.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "s\u0254ndi", + "lundi", + "mardi", + "m\u025brk\u025br\u025bdi", + "yedi", + "va\u014bd\u025br\u025bdi", + "m\u0254n\u0254 s\u0254ndi" + ], + "MONTH": [ + "pamba", + "wanja", + "mbiy\u0254 m\u025bndo\u014bg\u0254", + "Ny\u0254l\u0254mb\u0254\u014bg\u0254", + "M\u0254n\u0254 \u014bgbanja", + "Nya\u014bgw\u025b \u014bgbanja", + "ku\u014bgw\u025b", + "f\u025b", + "njapi", + "nyukul", + "11", + "\u0253ul\u0253us\u025b" + ], + "SHORTDAY": [ + "s\u0254ndi", + "lundi", + "mardi", + "m\u025brk\u025br\u025bdi", + "yedi", + "va\u014bd\u025br\u025bdi", + "m\u0254n\u0254 s\u0254ndi" + ], + "SHORTMONTH": [ + "pamba", + "wanja", + "mbiy\u0254 m\u025bndo\u014bg\u0254", + "Ny\u0254l\u0254mb\u0254\u014bg\u0254", + "M\u0254n\u0254 \u014bgbanja", + "Nya\u014bgw\u025b \u014bgbanja", + "ku\u014bgw\u025b", + "f\u025b", + "njapi", + "nyukul", + "11", + "\u0253ul\u0253us\u025b" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM y HH:mm", + "shortDate": "dd/MM y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "kkj", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kl-gl.js b/1.2.30/i18n/angular-locale_kl-gl.js new file mode 100644 index 0000000000..f4bf8fd1f8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kl-gl.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "ulloqeqqata-tungaa", + "ulloqeqqata-kingorna" + ], + "DAY": [ + "sabaat", + "ataasinngorneq", + "marlunngorneq", + "pingasunngorneq", + "sisamanngorneq", + "tallimanngorneq", + "arfininngorneq" + ], + "MONTH": [ + "januari", + "februari", + "martsi", + "aprili", + "maji", + "juni", + "juli", + "augustusi", + "septemberi", + "oktoberi", + "novemberi", + "decemberi" + ], + "SHORTDAY": [ + "sab", + "ata", + "mar", + "pin", + "sis", + "tal", + "arf" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "aug", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "dd MMMM y", + "medium": "MMM dd, y h:mm:ss a", + "mediumDate": "MMM dd, y", + "mediumTime": "h:mm:ss a", + "short": "y-MM-dd h:mm a", + "shortDate": "y-MM-dd", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "kl-gl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kl.js b/1.2.30/i18n/angular-locale_kl.js new file mode 100644 index 0000000000..e567871593 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kl.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "ulloqeqqata-tungaa", + "ulloqeqqata-kingorna" + ], + "DAY": [ + "sabaat", + "ataasinngorneq", + "marlunngorneq", + "pingasunngorneq", + "sisamanngorneq", + "tallimanngorneq", + "arfininngorneq" + ], + "MONTH": [ + "januari", + "februari", + "martsi", + "aprili", + "maji", + "juni", + "juli", + "augustusi", + "septemberi", + "oktoberi", + "novemberi", + "decemberi" + ], + "SHORTDAY": [ + "sab", + "ata", + "mar", + "pin", + "sis", + "tal", + "arf" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "aug", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "dd MMMM y", + "medium": "MMM dd, y h:mm:ss a", + "mediumDate": "MMM dd, y", + "mediumTime": "h:mm:ss a", + "short": "y-MM-dd h:mm a", + "shortDate": "y-MM-dd", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "kl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kln-ke.js b/1.2.30/i18n/angular-locale_kln-ke.js new file mode 100644 index 0000000000..88f0a046ca --- /dev/null +++ b/1.2.30/i18n/angular-locale_kln-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Beet", + "Kemo" + ], + "DAY": [ + "Betutab tisap", + "Betut netai", + "Betutab aeng'", + "Betutab somok", + "Betutab ang'wan", + "Betutab mut", + "Betutab lo" + ], + "MONTH": [ + "Mulgul", + "Ng'atyato", + "Kiptamo", + "Iwat kut", + "Ng'eiyet", + "Waki", + "Roptui", + "Kipkogaga", + "Buret", + "Epeso", + "Kipsunde netai", + "Kipsunde nebo aeng" + ], + "SHORTDAY": [ + "Tis", + "Tai", + "Aen", + "Som", + "Ang", + "Mut", + "Loh" + ], + "SHORTMONTH": [ + "Mul", + "Nga", + "Kip", + "Iwa", + "Nge", + "Wak", + "Rop", + "Kog", + "Bur", + "Epe", + "Tai", + "Aen" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "kln-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kln.js b/1.2.30/i18n/angular-locale_kln.js new file mode 100644 index 0000000000..af79ff3bdd --- /dev/null +++ b/1.2.30/i18n/angular-locale_kln.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Beet", + "Kemo" + ], + "DAY": [ + "Betutab tisap", + "Betut netai", + "Betutab aeng'", + "Betutab somok", + "Betutab ang'wan", + "Betutab mut", + "Betutab lo" + ], + "MONTH": [ + "Mulgul", + "Ng'atyato", + "Kiptamo", + "Iwat kut", + "Ng'eiyet", + "Waki", + "Roptui", + "Kipkogaga", + "Buret", + "Epeso", + "Kipsunde netai", + "Kipsunde nebo aeng" + ], + "SHORTDAY": [ + "Tis", + "Tai", + "Aen", + "Som", + "Ang", + "Mut", + "Loh" + ], + "SHORTMONTH": [ + "Mul", + "Nga", + "Kip", + "Iwa", + "Nge", + "Wak", + "Rop", + "Kog", + "Bur", + "Epe", + "Tai", + "Aen" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "kln", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_km-kh.js b/1.2.30/i18n/angular-locale_km-kh.js new file mode 100644 index 0000000000..cd6f55ccc8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_km-kh.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u1796\u17d2\u179a\u17b9\u1780", + "\u179b\u17d2\u1784\u17b6\u1785" + ], + "DAY": [ + "\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799", + "\u1785\u1793\u17d2\u1791", + "\u17a2\u1784\u17d2\u1782\u17b6\u179a", + "\u1796\u17bb\u1792", + "\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd", + "\u179f\u17bb\u1780\u17d2\u179a", + "\u179f\u17c5\u179a\u17cd" + ], + "MONTH": [ + "\u1798\u1780\u179a\u17b6", + "\u1780\u17bb\u1798\u17d2\u1797\u17c8", + "\u1798\u17b8\u1793\u17b6", + "\u1798\u17c1\u179f\u17b6", + "\u17a7\u179f\u1797\u17b6", + "\u1798\u17b7\u1790\u17bb\u1793\u17b6", + "\u1780\u1780\u17d2\u1780\u178a\u17b6", + "\u179f\u17b8\u17a0\u17b6", + "\u1780\u1789\u17d2\u1789\u17b6", + "\u178f\u17bb\u179b\u17b6", + "\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6", + "\u1792\u17d2\u1793\u17bc" + ], + "SHORTDAY": [ + "\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799", + "\u1785\u1793\u17d2\u1791", + "\u17a2\u1784\u17d2\u1782\u17b6\u179a", + "\u1796\u17bb\u1792", + "\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd", + "\u179f\u17bb\u1780\u17d2\u179a", + "\u179f\u17c5\u179a\u17cd" + ], + "SHORTMONTH": [ + "\u1798\u1780\u179a\u17b6", + "\u1780\u17bb\u1798\u17d2\u1797\u17c8", + "\u1798\u17b8\u1793\u17b6", + "\u1798\u17c1\u179f\u17b6", + "\u17a7\u179f\u1797\u17b6", + "\u1798\u17b7\u1790\u17bb\u1793\u17b6", + "\u1780\u1780\u17d2\u1780\u178a\u17b6", + "\u179f\u17b8\u17a0\u17b6", + "\u1780\u1789\u17d2\u1789\u17b6", + "\u178f\u17bb\u179b\u17b6", + "\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6", + "\u1792\u17d2\u1793\u17bc" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/M/y h:mm a", + "shortDate": "d/M/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Riel", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "km-kh", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_km.js b/1.2.30/i18n/angular-locale_km.js new file mode 100644 index 0000000000..17913ca80e --- /dev/null +++ b/1.2.30/i18n/angular-locale_km.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u1796\u17d2\u179a\u17b9\u1780", + "\u179b\u17d2\u1784\u17b6\u1785" + ], + "DAY": [ + "\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799", + "\u1785\u1793\u17d2\u1791", + "\u17a2\u1784\u17d2\u1782\u17b6\u179a", + "\u1796\u17bb\u1792", + "\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd", + "\u179f\u17bb\u1780\u17d2\u179a", + "\u179f\u17c5\u179a\u17cd" + ], + "MONTH": [ + "\u1798\u1780\u179a\u17b6", + "\u1780\u17bb\u1798\u17d2\u1797\u17c8", + "\u1798\u17b8\u1793\u17b6", + "\u1798\u17c1\u179f\u17b6", + "\u17a7\u179f\u1797\u17b6", + "\u1798\u17b7\u1790\u17bb\u1793\u17b6", + "\u1780\u1780\u17d2\u1780\u178a\u17b6", + "\u179f\u17b8\u17a0\u17b6", + "\u1780\u1789\u17d2\u1789\u17b6", + "\u178f\u17bb\u179b\u17b6", + "\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6", + "\u1792\u17d2\u1793\u17bc" + ], + "SHORTDAY": [ + "\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799", + "\u1785\u1793\u17d2\u1791", + "\u17a2\u1784\u17d2\u1782\u17b6\u179a", + "\u1796\u17bb\u1792", + "\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd", + "\u179f\u17bb\u1780\u17d2\u179a", + "\u179f\u17c5\u179a\u17cd" + ], + "SHORTMONTH": [ + "\u1798\u1780\u179a\u17b6", + "\u1780\u17bb\u1798\u17d2\u1797\u17c8", + "\u1798\u17b8\u1793\u17b6", + "\u1798\u17c1\u179f\u17b6", + "\u17a7\u179f\u1797\u17b6", + "\u1798\u17b7\u1790\u17bb\u1793\u17b6", + "\u1780\u1780\u17d2\u1780\u178a\u17b6", + "\u179f\u17b8\u17a0\u17b6", + "\u1780\u1789\u17d2\u1789\u17b6", + "\u178f\u17bb\u179b\u17b6", + "\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6", + "\u1792\u17d2\u1793\u17bc" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/M/y h:mm a", + "shortDate": "d/M/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Riel", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "km", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kn-in.js b/1.2.30/i18n/angular-locale_kn-in.js new file mode 100644 index 0000000000..5833682ac8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kn-in.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0cb0\u0cb5\u0cbf\u0cb5\u0cbe\u0cb0", + "\u0cb8\u0ccb\u0cae\u0cb5\u0cbe\u0cb0", + "\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0", + "\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0", + "\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0", + "\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0", + "\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0" + ], + "MONTH": [ + "\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf", + "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf", + "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd", + "\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd", + "\u0cae\u0cc7", + "\u0c9c\u0cc2\u0ca8\u0ccd", + "\u0c9c\u0cc1\u0cb2\u0cc8", + "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd", + "\u0cb8\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd", + "\u0c85\u0c95\u0ccd\u0c9f\u0ccb\u0cac\u0cb0\u0ccd", + "\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd", + "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd" + ], + "SHORTDAY": [ + "\u0cb0.", + "\u0cb8\u0ccb.", + "\u0cae\u0c82.", + "\u0cac\u0cc1.", + "\u0c97\u0cc1.", + "\u0cb6\u0cc1.", + "\u0cb6\u0ca8\u0cbf." + ], + "SHORTMONTH": [ + "\u0c9c\u0ca8.", + "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cc1.", + "\u0cae\u0cbe", + "\u0c8f\u0caa\u0ccd\u0cb0\u0cbf.", + "\u0cae\u0cc7", + "\u0c9c\u0cc2", + "\u0c9c\u0cc1.", + "\u0c86\u0c97.", + "\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82.", + "\u0c85\u0c95\u0ccd\u0c9f\u0ccb.", + "\u0ca8\u0cb5\u0cc6\u0c82.", + "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82." + ], + "fullDate": "d MMMM y, EEEE", + "longDate": "d MMMM y", + "medium": "d MMM y hh:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "hh:mm:ss a", + "short": "d-M-yy hh:mm a", + "shortDate": "d-M-yy", + "shortTime": "hh:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "kn-in", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kn.js b/1.2.30/i18n/angular-locale_kn.js new file mode 100644 index 0000000000..f9477de58e --- /dev/null +++ b/1.2.30/i18n/angular-locale_kn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0cb0\u0cb5\u0cbf\u0cb5\u0cbe\u0cb0", + "\u0cb8\u0ccb\u0cae\u0cb5\u0cbe\u0cb0", + "\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0", + "\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0", + "\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0", + "\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0", + "\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0" + ], + "MONTH": [ + "\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf", + "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf", + "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd", + "\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd", + "\u0cae\u0cc7", + "\u0c9c\u0cc2\u0ca8\u0ccd", + "\u0c9c\u0cc1\u0cb2\u0cc8", + "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd", + "\u0cb8\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd", + "\u0c85\u0c95\u0ccd\u0c9f\u0ccb\u0cac\u0cb0\u0ccd", + "\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd", + "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd" + ], + "SHORTDAY": [ + "\u0cb0.", + "\u0cb8\u0ccb.", + "\u0cae\u0c82.", + "\u0cac\u0cc1.", + "\u0c97\u0cc1.", + "\u0cb6\u0cc1.", + "\u0cb6\u0ca8\u0cbf." + ], + "SHORTMONTH": [ + "\u0c9c\u0ca8.", + "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cc1.", + "\u0cae\u0cbe", + "\u0c8f\u0caa\u0ccd\u0cb0\u0cbf.", + "\u0cae\u0cc7", + "\u0c9c\u0cc2", + "\u0c9c\u0cc1.", + "\u0c86\u0c97.", + "\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82.", + "\u0c85\u0c95\u0ccd\u0c9f\u0ccb.", + "\u0ca8\u0cb5\u0cc6\u0c82.", + "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82." + ], + "fullDate": "d MMMM y, EEEE", + "longDate": "d MMMM y", + "medium": "d MMM y hh:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "hh:mm:ss a", + "short": "d-M-yy hh:mm a", + "shortDate": "d-M-yy", + "shortTime": "hh:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "kn", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ko-kp.js b/1.2.30/i18n/angular-locale_ko-kp.js new file mode 100644 index 0000000000..a2c349590e --- /dev/null +++ b/1.2.30/i18n/angular-locale_ko-kp.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\uc624\uc804", + "\uc624\ud6c4" + ], + "DAY": [ + "\uc77c\uc694\uc77c", + "\uc6d4\uc694\uc77c", + "\ud654\uc694\uc77c", + "\uc218\uc694\uc77c", + "\ubaa9\uc694\uc77c", + "\uae08\uc694\uc77c", + "\ud1a0\uc694\uc77c" + ], + "MONTH": [ + "1\uc6d4", + "2\uc6d4", + "3\uc6d4", + "4\uc6d4", + "5\uc6d4", + "6\uc6d4", + "7\uc6d4", + "8\uc6d4", + "9\uc6d4", + "10\uc6d4", + "11\uc6d4", + "12\uc6d4" + ], + "SHORTDAY": [ + "\uc77c", + "\uc6d4", + "\ud654", + "\uc218", + "\ubaa9", + "\uae08", + "\ud1a0" + ], + "SHORTMONTH": [ + "1\uc6d4", + "2\uc6d4", + "3\uc6d4", + "4\uc6d4", + "5\uc6d4", + "6\uc6d4", + "7\uc6d4", + "8\uc6d4", + "9\uc6d4", + "10\uc6d4", + "11\uc6d4", + "12\uc6d4" + ], + "fullDate": "y\ub144 M\uc6d4 d\uc77c EEEE", + "longDate": "y\ub144 M\uc6d4 d\uc77c", + "medium": "y. M. d. a h:mm:ss", + "mediumDate": "y. M. d.", + "mediumTime": "a h:mm:ss", + "short": "yy. M. d. a h:mm", + "shortDate": "yy. M. d.", + "shortTime": "a h:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20a9KP", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ko-kp", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ko-kr.js b/1.2.30/i18n/angular-locale_ko-kr.js new file mode 100644 index 0000000000..ffa7227930 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ko-kr.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\uc624\uc804", + "\uc624\ud6c4" + ], + "DAY": [ + "\uc77c\uc694\uc77c", + "\uc6d4\uc694\uc77c", + "\ud654\uc694\uc77c", + "\uc218\uc694\uc77c", + "\ubaa9\uc694\uc77c", + "\uae08\uc694\uc77c", + "\ud1a0\uc694\uc77c" + ], + "MONTH": [ + "1\uc6d4", + "2\uc6d4", + "3\uc6d4", + "4\uc6d4", + "5\uc6d4", + "6\uc6d4", + "7\uc6d4", + "8\uc6d4", + "9\uc6d4", + "10\uc6d4", + "11\uc6d4", + "12\uc6d4" + ], + "SHORTDAY": [ + "\uc77c", + "\uc6d4", + "\ud654", + "\uc218", + "\ubaa9", + "\uae08", + "\ud1a0" + ], + "SHORTMONTH": [ + "1\uc6d4", + "2\uc6d4", + "3\uc6d4", + "4\uc6d4", + "5\uc6d4", + "6\uc6d4", + "7\uc6d4", + "8\uc6d4", + "9\uc6d4", + "10\uc6d4", + "11\uc6d4", + "12\uc6d4" + ], + "fullDate": "y\ub144 M\uc6d4 d\uc77c EEEE", + "longDate": "y\ub144 M\uc6d4 d\uc77c", + "medium": "y. M. d. a h:mm:ss", + "mediumDate": "y. M. d.", + "mediumTime": "a h:mm:ss", + "short": "yy. M. d. a h:mm", + "shortDate": "yy. M. d.", + "shortTime": "a h:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20a9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ko-kr", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ko.js b/1.2.30/i18n/angular-locale_ko.js new file mode 100644 index 0000000000..ae493265ff --- /dev/null +++ b/1.2.30/i18n/angular-locale_ko.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\uc624\uc804", + "\uc624\ud6c4" + ], + "DAY": [ + "\uc77c\uc694\uc77c", + "\uc6d4\uc694\uc77c", + "\ud654\uc694\uc77c", + "\uc218\uc694\uc77c", + "\ubaa9\uc694\uc77c", + "\uae08\uc694\uc77c", + "\ud1a0\uc694\uc77c" + ], + "MONTH": [ + "1\uc6d4", + "2\uc6d4", + "3\uc6d4", + "4\uc6d4", + "5\uc6d4", + "6\uc6d4", + "7\uc6d4", + "8\uc6d4", + "9\uc6d4", + "10\uc6d4", + "11\uc6d4", + "12\uc6d4" + ], + "SHORTDAY": [ + "\uc77c", + "\uc6d4", + "\ud654", + "\uc218", + "\ubaa9", + "\uae08", + "\ud1a0" + ], + "SHORTMONTH": [ + "1\uc6d4", + "2\uc6d4", + "3\uc6d4", + "4\uc6d4", + "5\uc6d4", + "6\uc6d4", + "7\uc6d4", + "8\uc6d4", + "9\uc6d4", + "10\uc6d4", + "11\uc6d4", + "12\uc6d4" + ], + "fullDate": "y\ub144 M\uc6d4 d\uc77c EEEE", + "longDate": "y\ub144 M\uc6d4 d\uc77c", + "medium": "y. M. d. a h:mm:ss", + "mediumDate": "y. M. d.", + "mediumTime": "a h:mm:ss", + "short": "yy. M. d. a h:mm", + "shortDate": "yy. M. d.", + "shortTime": "a h:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20a9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ko", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kok-in.js b/1.2.30/i18n/angular-locale_kok-in.js new file mode 100644 index 0000000000..c2aa9b9bd1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kok-in.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u092e.\u092a\u0942.", + "\u092e.\u0928\u0902." + ], + "DAY": [ + "\u0906\u0926\u093f\u0924\u094d\u092f\u0935\u093e\u0930", + "\u0938\u094b\u092e\u0935\u093e\u0930", + "\u092e\u0902\u0917\u0933\u093e\u0930", + "\u092c\u0941\u0927\u0935\u093e\u0930", + "\u0917\u0941\u0930\u0941\u0935\u093e\u0930", + "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930", + "\u0936\u0928\u093f\u0935\u093e\u0930" + ], + "MONTH": [ + "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940", + "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940", + "\u092e\u093e\u0930\u094d\u091a", + "\u090f\u092a\u094d\u0930\u093f\u0932", + "\u092e\u0947", + "\u091c\u0942\u0928", + "\u091c\u0941\u0932\u0948", + "\u0913\u0917\u0938\u094d\u091f", + "\u0938\u0947\u092a\u094d\u091f\u0947\u0902\u092c\u0930", + "\u0913\u0915\u094d\u091f\u094b\u092c\u0930", + "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930", + "\u0921\u093f\u0938\u0947\u0902\u092c\u0930" + ], + "SHORTDAY": [ + "\u0930\u0935\u093f", + "\u0938\u094b\u092e", + "\u092e\u0902\u0917\u0933", + "\u092c\u0941\u0927", + "\u0917\u0941\u0930\u0941", + "\u0936\u0941\u0915\u094d\u0930", + "\u0936\u0928\u093f" + ], + "SHORTMONTH": [ + "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940", + "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940", + "\u092e\u093e\u0930\u094d\u091a", + "\u090f\u092a\u094d\u0930\u093f\u0932", + "\u092e\u0947", + "\u091c\u0942\u0928", + "\u091c\u0941\u0932\u0948", + "\u0913\u0917\u0938\u094d\u091f", + "\u0938\u0947\u092a\u094d\u091f\u0947\u0902\u092c\u0930", + "\u0913\u0915\u094d\u091f\u094b\u092c\u0930", + "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930", + "\u0921\u093f\u0938\u0947\u0902\u092c\u0930" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "dd-MM-y h:mm:ss a", + "mediumDate": "dd-MM-y", + "mediumTime": "h:mm:ss a", + "short": "d-M-yy h:mm a", + "shortDate": "d-M-yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "kok-in", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kok.js b/1.2.30/i18n/angular-locale_kok.js new file mode 100644 index 0000000000..b119b09e04 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kok.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u092e.\u092a\u0942.", + "\u092e.\u0928\u0902." + ], + "DAY": [ + "\u0906\u0926\u093f\u0924\u094d\u092f\u0935\u093e\u0930", + "\u0938\u094b\u092e\u0935\u093e\u0930", + "\u092e\u0902\u0917\u0933\u093e\u0930", + "\u092c\u0941\u0927\u0935\u093e\u0930", + "\u0917\u0941\u0930\u0941\u0935\u093e\u0930", + "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930", + "\u0936\u0928\u093f\u0935\u093e\u0930" + ], + "MONTH": [ + "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940", + "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940", + "\u092e\u093e\u0930\u094d\u091a", + "\u090f\u092a\u094d\u0930\u093f\u0932", + "\u092e\u0947", + "\u091c\u0942\u0928", + "\u091c\u0941\u0932\u0948", + "\u0913\u0917\u0938\u094d\u091f", + "\u0938\u0947\u092a\u094d\u091f\u0947\u0902\u092c\u0930", + "\u0913\u0915\u094d\u091f\u094b\u092c\u0930", + "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930", + "\u0921\u093f\u0938\u0947\u0902\u092c\u0930" + ], + "SHORTDAY": [ + "\u0930\u0935\u093f", + "\u0938\u094b\u092e", + "\u092e\u0902\u0917\u0933", + "\u092c\u0941\u0927", + "\u0917\u0941\u0930\u0941", + "\u0936\u0941\u0915\u094d\u0930", + "\u0936\u0928\u093f" + ], + "SHORTMONTH": [ + "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940", + "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940", + "\u092e\u093e\u0930\u094d\u091a", + "\u090f\u092a\u094d\u0930\u093f\u0932", + "\u092e\u0947", + "\u091c\u0942\u0928", + "\u091c\u0941\u0932\u0948", + "\u0913\u0917\u0938\u094d\u091f", + "\u0938\u0947\u092a\u094d\u091f\u0947\u0902\u092c\u0930", + "\u0913\u0915\u094d\u091f\u094b\u092c\u0930", + "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930", + "\u0921\u093f\u0938\u0947\u0902\u092c\u0930" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "dd-MM-y h:mm:ss a", + "mediumDate": "dd-MM-y", + "mediumTime": "h:mm:ss a", + "short": "d-M-yy h:mm a", + "shortDate": "d-M-yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "kok", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ks-arab-in.js b/1.2.30/i18n/angular-locale_ks-arab-in.js new file mode 100644 index 0000000000..319602d28d --- /dev/null +++ b/1.2.30/i18n/angular-locale_ks-arab-in.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0627\u064e\u062a\u06be\u0648\u0627\u0631", + "\u0698\u0654\u0646\u065b\u062f\u0631\u0655\u0631\u0648\u0627\u0631", + "\u0628\u0648\u065a\u0645\u0648\u0627\u0631", + "\u0628\u0648\u062f\u0648\u0627\u0631", + "\u0628\u0631\u065b\u066e\u06ea\u0633\u0648\u0627\u0631", + "\u062c\u064f\u0645\u06c1", + "\u0628\u0679\u0648\u0627\u0631" + ], + "MONTH": [ + "\u062c\u0646\u0624\u0631\u06cc", + "\u0641\u0631\u0624\u0631\u06cc", + "\u0645\u0627\u0631\u0655\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u06cc\u0654", + "\u062c\u0648\u0657\u0646", + "\u062c\u0648\u0657\u0644\u0627\u06cc\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0657\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0622\u062a\u06be\u0648\u0627\u0631", + "\u0698\u0654\u0646\u065b\u062f\u0655\u0631\u0648\u0627\u0631", + "\u0628\u0648\u065a\u0645\u0648\u0627\u0631", + "\u0628\u0648\u062f\u0648\u0627\u0631", + "\u0628\u0631\u065b\u066e\u06ea\u0633\u0648\u0627\u0631", + "\u062c\u064f\u0645\u06c1", + "\u0628\u0679\u0648\u0627\u0631" + ], + "SHORTMONTH": [ + "\u062c\u0646\u0624\u0631\u06cc", + "\u0641\u0631\u0624\u0631\u06cc", + "\u0645\u0627\u0631\u0655\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u06cc\u0654", + "\u062c\u0648\u0657\u0646", + "\u062c\u0648\u0657\u0644\u0627\u06cc\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0657\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ks-arab-in", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ks-arab.js b/1.2.30/i18n/angular-locale_ks-arab.js new file mode 100644 index 0000000000..d4182e1f37 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ks-arab.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0627\u064e\u062a\u06be\u0648\u0627\u0631", + "\u0698\u0654\u0646\u065b\u062f\u0631\u0655\u0631\u0648\u0627\u0631", + "\u0628\u0648\u065a\u0645\u0648\u0627\u0631", + "\u0628\u0648\u062f\u0648\u0627\u0631", + "\u0628\u0631\u065b\u066e\u06ea\u0633\u0648\u0627\u0631", + "\u062c\u064f\u0645\u06c1", + "\u0628\u0679\u0648\u0627\u0631" + ], + "MONTH": [ + "\u062c\u0646\u0624\u0631\u06cc", + "\u0641\u0631\u0624\u0631\u06cc", + "\u0645\u0627\u0631\u0655\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u06cc\u0654", + "\u062c\u0648\u0657\u0646", + "\u062c\u0648\u0657\u0644\u0627\u06cc\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0657\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0622\u062a\u06be\u0648\u0627\u0631", + "\u0698\u0654\u0646\u065b\u062f\u0655\u0631\u0648\u0627\u0631", + "\u0628\u0648\u065a\u0645\u0648\u0627\u0631", + "\u0628\u0648\u062f\u0648\u0627\u0631", + "\u0628\u0631\u065b\u066e\u06ea\u0633\u0648\u0627\u0631", + "\u062c\u064f\u0645\u06c1", + "\u0628\u0679\u0648\u0627\u0631" + ], + "SHORTMONTH": [ + "\u062c\u0646\u0624\u0631\u06cc", + "\u0641\u0631\u0624\u0631\u06cc", + "\u0645\u0627\u0631\u0655\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u06cc\u0654", + "\u062c\u0648\u0657\u0646", + "\u062c\u0648\u0657\u0644\u0627\u06cc\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0657\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ks-arab", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ks.js b/1.2.30/i18n/angular-locale_ks.js new file mode 100644 index 0000000000..fa3e3e7ccb --- /dev/null +++ b/1.2.30/i18n/angular-locale_ks.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0627\u064e\u062a\u06be\u0648\u0627\u0631", + "\u0698\u0654\u0646\u065b\u062f\u0631\u0655\u0631\u0648\u0627\u0631", + "\u0628\u0648\u065a\u0645\u0648\u0627\u0631", + "\u0628\u0648\u062f\u0648\u0627\u0631", + "\u0628\u0631\u065b\u066e\u06ea\u0633\u0648\u0627\u0631", + "\u062c\u064f\u0645\u06c1", + "\u0628\u0679\u0648\u0627\u0631" + ], + "MONTH": [ + "\u062c\u0646\u0624\u0631\u06cc", + "\u0641\u0631\u0624\u0631\u06cc", + "\u0645\u0627\u0631\u0655\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u06cc\u0654", + "\u062c\u0648\u0657\u0646", + "\u062c\u0648\u0657\u0644\u0627\u06cc\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0657\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0622\u062a\u06be\u0648\u0627\u0631", + "\u0698\u0654\u0646\u065b\u062f\u0655\u0631\u0648\u0627\u0631", + "\u0628\u0648\u065a\u0645\u0648\u0627\u0631", + "\u0628\u0648\u062f\u0648\u0627\u0631", + "\u0628\u0631\u065b\u066e\u06ea\u0633\u0648\u0627\u0631", + "\u062c\u064f\u0645\u06c1", + "\u0628\u0679\u0648\u0627\u0631" + ], + "SHORTMONTH": [ + "\u062c\u0646\u0624\u0631\u06cc", + "\u0641\u0631\u0624\u0631\u06cc", + "\u0645\u0627\u0631\u0655\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u06cc\u0654", + "\u062c\u0648\u0657\u0646", + "\u062c\u0648\u0657\u0644\u0627\u06cc\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0657\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ks", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ksb-tz.js b/1.2.30/i18n/angular-locale_ksb-tz.js new file mode 100644 index 0000000000..ed21ee1a33 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ksb-tz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "makeo", + "nyiaghuo" + ], + "DAY": [ + "Jumaapii", + "Jumaatatu", + "Jumaane", + "Jumaatano", + "Alhamisi", + "Ijumaa", + "Jumaamosi" + ], + "MONTH": [ + "Januali", + "Febluali", + "Machi", + "Aplili", + "Mei", + "Juni", + "Julai", + "Agosti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Jpi", + "Jtt", + "Jmn", + "Jtn", + "Alh", + "Iju", + "Jmo" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "ksb-tz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ksb.js b/1.2.30/i18n/angular-locale_ksb.js new file mode 100644 index 0000000000..ec3f9ce307 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ksb.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "makeo", + "nyiaghuo" + ], + "DAY": [ + "Jumaapii", + "Jumaatatu", + "Jumaane", + "Jumaatano", + "Alhamisi", + "Ijumaa", + "Jumaamosi" + ], + "MONTH": [ + "Januali", + "Febluali", + "Machi", + "Aplili", + "Mei", + "Juni", + "Julai", + "Agosti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Jpi", + "Jtt", + "Jmn", + "Jtn", + "Alh", + "Iju", + "Jmo" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "ksb", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ksf-cm.js b/1.2.30/i18n/angular-locale_ksf-cm.js new file mode 100644 index 0000000000..5b4ae8edfc --- /dev/null +++ b/1.2.30/i18n/angular-locale_ksf-cm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "s\u00e1r\u00faw\u00e1", + "c\u025b\u025b\u0301nko" + ], + "DAY": [ + "s\u0254\u0301nd\u01dd", + "l\u01ddnd\u00ed", + "maad\u00ed", + "m\u025bkr\u025bd\u00ed", + "j\u01dd\u01ddd\u00ed", + "j\u00famb\u00e1", + "samd\u00ed" + ], + "MONTH": [ + "\u014bw\u00ed\u00ed a nt\u0254\u0301nt\u0254", + "\u014bw\u00ed\u00ed ak\u01dd b\u025b\u0301\u025b", + "\u014bw\u00ed\u00ed ak\u01dd r\u00e1\u00e1", + "\u014bw\u00ed\u00ed ak\u01dd nin", + "\u014bw\u00ed\u00ed ak\u01dd t\u00e1an", + "\u014bw\u00ed\u00ed ak\u01dd t\u00e1af\u0254k", + "\u014bw\u00ed\u00ed ak\u01dd t\u00e1ab\u025b\u025b", + "\u014bw\u00ed\u00ed ak\u01dd t\u00e1araa", + "\u014bw\u00ed\u00ed ak\u01dd t\u00e1anin", + "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk", + "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk di b\u0254\u0301k", + "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk di b\u025b\u0301\u025b" + ], + "SHORTDAY": [ + "s\u0254\u0301n", + "l\u01ddn", + "maa", + "m\u025bk", + "j\u01dd\u01dd", + "j\u00fam", + "sam" + ], + "SHORTMONTH": [ + "\u014b1", + "\u014b2", + "\u014b3", + "\u014b4", + "\u014b5", + "\u014b6", + "\u014b7", + "\u014b8", + "\u014b9", + "\u014b10", + "\u014b11", + "\u014b12" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ksf-cm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ksf.js b/1.2.30/i18n/angular-locale_ksf.js new file mode 100644 index 0000000000..6b50427c33 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ksf.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "s\u00e1r\u00faw\u00e1", + "c\u025b\u025b\u0301nko" + ], + "DAY": [ + "s\u0254\u0301nd\u01dd", + "l\u01ddnd\u00ed", + "maad\u00ed", + "m\u025bkr\u025bd\u00ed", + "j\u01dd\u01ddd\u00ed", + "j\u00famb\u00e1", + "samd\u00ed" + ], + "MONTH": [ + "\u014bw\u00ed\u00ed a nt\u0254\u0301nt\u0254", + "\u014bw\u00ed\u00ed ak\u01dd b\u025b\u0301\u025b", + "\u014bw\u00ed\u00ed ak\u01dd r\u00e1\u00e1", + "\u014bw\u00ed\u00ed ak\u01dd nin", + "\u014bw\u00ed\u00ed ak\u01dd t\u00e1an", + "\u014bw\u00ed\u00ed ak\u01dd t\u00e1af\u0254k", + "\u014bw\u00ed\u00ed ak\u01dd t\u00e1ab\u025b\u025b", + "\u014bw\u00ed\u00ed ak\u01dd t\u00e1araa", + "\u014bw\u00ed\u00ed ak\u01dd t\u00e1anin", + "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk", + "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk di b\u0254\u0301k", + "\u014bw\u00ed\u00ed ak\u01dd nt\u025bk di b\u025b\u0301\u025b" + ], + "SHORTDAY": [ + "s\u0254\u0301n", + "l\u01ddn", + "maa", + "m\u025bk", + "j\u01dd\u01dd", + "j\u00fam", + "sam" + ], + "SHORTMONTH": [ + "\u014b1", + "\u014b2", + "\u014b3", + "\u014b4", + "\u014b5", + "\u014b6", + "\u014b7", + "\u014b8", + "\u014b9", + "\u014b10", + "\u014b11", + "\u014b12" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ksf", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ksh-de.js b/1.2.30/i18n/angular-locale_ksh-de.js new file mode 100644 index 0000000000..f35c589c56 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ksh-de.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Uhr v\u00f6rmiddaachs", + "Uhr nommendaachs" + ], + "DAY": [ + "Sunndaach", + "Moondaach", + "Dinnsdaach", + "Metwoch", + "Dunnersdaach", + "Friidaach", + "Samsdaach" + ], + "MONTH": [ + "Jannewa", + "F\u00e4browa", + "M\u00e4\u00e4z", + "Aprell", + "M\u00e4i", + "Juuni", + "Juuli", + "Oujo\u00df", + "Sept\u00e4mber", + "Oktoober", + "Nov\u00e4mber", + "Dez\u00e4mber" + ], + "SHORTDAY": [ + "Su.", + "Mo.", + "Di.", + "Me.", + "Du.", + "Fr.", + "Sa." + ], + "SHORTMONTH": [ + "Jan", + "F\u00e4b", + "M\u00e4z", + "Apr", + "M\u00e4i", + "Jun", + "Jul", + "Ouj", + "S\u00e4p", + "Okt", + "Nov", + "Dez" + ], + "fullDate": "EEEE, 'd\u00e4' d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d. MMM. y HH:mm:ss", + "mediumDate": "d. MMM. y", + "mediumTime": "HH:mm:ss", + "short": "d. M. y HH:mm", + "shortDate": "d. M. y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ksh-de", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ksh.js b/1.2.30/i18n/angular-locale_ksh.js new file mode 100644 index 0000000000..f1025720f6 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ksh.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Uhr v\u00f6rmiddaachs", + "Uhr nommendaachs" + ], + "DAY": [ + "Sunndaach", + "Moondaach", + "Dinnsdaach", + "Metwoch", + "Dunnersdaach", + "Friidaach", + "Samsdaach" + ], + "MONTH": [ + "Jannewa", + "F\u00e4browa", + "M\u00e4\u00e4z", + "Aprell", + "M\u00e4i", + "Juuni", + "Juuli", + "Oujo\u00df", + "Sept\u00e4mber", + "Oktoober", + "Nov\u00e4mber", + "Dez\u00e4mber" + ], + "SHORTDAY": [ + "Su.", + "Mo.", + "Di.", + "Me.", + "Du.", + "Fr.", + "Sa." + ], + "SHORTMONTH": [ + "Jan", + "F\u00e4b", + "M\u00e4z", + "Apr", + "M\u00e4i", + "Jun", + "Jul", + "Ouj", + "S\u00e4p", + "Okt", + "Nov", + "Dez" + ], + "fullDate": "EEEE, 'd\u00e4' d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d. MMM. y HH:mm:ss", + "mediumDate": "d. MMM. y", + "mediumTime": "HH:mm:ss", + "short": "d. M. y HH:mm", + "shortDate": "d. M. y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ksh", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kw-gb.js b/1.2.30/i18n/angular-locale_kw-gb.js new file mode 100644 index 0000000000..913f204cd2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kw-gb.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "De Sul", + "De Lun", + "De Merth", + "De Merher", + "De Yow", + "De Gwener", + "De Sadorn" + ], + "MONTH": [ + "Mys Genver", + "Mys Whevrel", + "Mys Merth", + "Mys Ebrel", + "Mys Me", + "Mys Efan", + "Mys Gortheren", + "Mye Est", + "Mys Gwyngala", + "Mys Hedra", + "Mys Du", + "Mys Kevardhu" + ], + "SHORTDAY": [ + "Sul", + "Lun", + "Mth", + "Mhr", + "Yow", + "Gwe", + "Sad" + ], + "SHORTMONTH": [ + "Gen", + "Whe", + "Mer", + "Ebr", + "Me", + "Efn", + "Gor", + "Est", + "Gwn", + "Hed", + "Du", + "Kev" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "kw-gb", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_kw.js b/1.2.30/i18n/angular-locale_kw.js new file mode 100644 index 0000000000..1cd21ce517 --- /dev/null +++ b/1.2.30/i18n/angular-locale_kw.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "De Sul", + "De Lun", + "De Merth", + "De Merher", + "De Yow", + "De Gwener", + "De Sadorn" + ], + "MONTH": [ + "Mys Genver", + "Mys Whevrel", + "Mys Merth", + "Mys Ebrel", + "Mys Me", + "Mys Efan", + "Mys Gortheren", + "Mye Est", + "Mys Gwyngala", + "Mys Hedra", + "Mys Du", + "Mys Kevardhu" + ], + "SHORTDAY": [ + "Sul", + "Lun", + "Mth", + "Mhr", + "Yow", + "Gwe", + "Sad" + ], + "SHORTMONTH": [ + "Gen", + "Whe", + "Mer", + "Ebr", + "Me", + "Efn", + "Gor", + "Est", + "Gwn", + "Hed", + "Du", + "Kev" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a3", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "kw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ky-cyrl-kg.js b/1.2.30/i18n/angular-locale_ky-cyrl-kg.js new file mode 100644 index 0000000000..5f4020ed8b --- /dev/null +++ b/1.2.30/i18n/angular-locale_ky-cyrl-kg.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0442\u04af\u0448\u043a\u04e9 \u0447\u0435\u0439\u0438\u043d\u043a\u0438", + "\u0442\u04af\u0448\u0442\u04e9\u043d \u043a\u0438\u0439\u0438\u043d\u043a\u0438" + ], + "DAY": [ + "\u0416\u0435\u043a", + "\u0414\u04af\u0439", + "\u0428\u0435\u0439", + "\u0428\u0430\u0440", + "\u0411\u0435\u0439", + "\u0416\u0443\u043c", + "\u0418\u0448\u043c" + ], + "MONTH": [ + "\u044f\u043d\u0432\u0430\u0440\u044c", + "\u0444\u0435\u0432\u0440\u0430\u043b\u044c", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0435\u043b\u044c", + "\u043c\u0430\u0439", + "\u0438\u044e\u043d\u044c", + "\u0438\u044e\u043b\u044c", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c", + "\u043e\u043a\u0442\u044f\u0431\u0440\u044c", + "\u043d\u043e\u044f\u0431\u0440\u044c", + "\u0434\u0435\u043a\u0430\u0431\u0440\u044c" + ], + "SHORTDAY": [ + "\u0416\u043a", + "\u0414\u0448", + "\u0428\u0435", + "\u0428\u0430", + "\u0411\u0448", + "\u0416\u043c", + "\u0418\u0448" + ], + "SHORTMONTH": [ + "\u044f\u043d\u0432.", + "\u0444\u0435\u0432.", + "\u043c\u0430\u0440.", + "\u0430\u043f\u0440.", + "\u043c\u0430\u0439", + "\u0438\u044e\u043d.", + "\u0438\u044e\u043b.", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043d.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u044f.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, d-MMMM, y-'\u0436'.", + "longDate": "d-MMMM, y-'\u0436'.", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "KGS", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ky-cyrl-kg", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ky-cyrl.js b/1.2.30/i18n/angular-locale_ky-cyrl.js new file mode 100644 index 0000000000..ceb3b1c968 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ky-cyrl.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0442\u04af\u0448\u043a\u04e9 \u0447\u0435\u0439\u0438\u043d\u043a\u0438", + "\u0442\u04af\u0448\u0442\u04e9\u043d \u043a\u0438\u0439\u0438\u043d\u043a\u0438" + ], + "DAY": [ + "\u0416\u0435\u043a", + "\u0414\u04af\u0439", + "\u0428\u0435\u0439", + "\u0428\u0430\u0440", + "\u0411\u0435\u0439", + "\u0416\u0443\u043c", + "\u0418\u0448\u043c" + ], + "MONTH": [ + "\u044f\u043d\u0432\u0430\u0440\u044c", + "\u0444\u0435\u0432\u0440\u0430\u043b\u044c", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0435\u043b\u044c", + "\u043c\u0430\u0439", + "\u0438\u044e\u043d\u044c", + "\u0438\u044e\u043b\u044c", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c", + "\u043e\u043a\u0442\u044f\u0431\u0440\u044c", + "\u043d\u043e\u044f\u0431\u0440\u044c", + "\u0434\u0435\u043a\u0430\u0431\u0440\u044c" + ], + "SHORTDAY": [ + "\u0416\u043a", + "\u0414\u0448", + "\u0428\u0435", + "\u0428\u0430", + "\u0411\u0448", + "\u0416\u043c", + "\u0418\u0448" + ], + "SHORTMONTH": [ + "\u044f\u043d\u0432.", + "\u0444\u0435\u0432.", + "\u043c\u0430\u0440.", + "\u0430\u043f\u0440.", + "\u043c\u0430\u0439", + "\u0438\u044e\u043d.", + "\u0438\u044e\u043b.", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043d.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u044f.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, d-MMMM, y-'\u0436'.", + "longDate": "d-MMMM, y-'\u0436'.", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ky-cyrl", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ky.js b/1.2.30/i18n/angular-locale_ky.js new file mode 100644 index 0000000000..6b387604fd --- /dev/null +++ b/1.2.30/i18n/angular-locale_ky.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0442\u04af\u0448\u043a\u04e9 \u0447\u0435\u0439\u0438\u043d\u043a\u0438", + "\u0442\u04af\u0448\u0442\u04e9\u043d \u043a\u0438\u0439\u0438\u043d\u043a\u0438" + ], + "DAY": [ + "\u0416\u0435\u043a", + "\u0414\u04af\u0439", + "\u0428\u0435\u0439", + "\u0428\u0430\u0440", + "\u0411\u0435\u0439", + "\u0416\u0443\u043c", + "\u0418\u0448\u043c" + ], + "MONTH": [ + "\u044f\u043d\u0432\u0430\u0440\u044c", + "\u0444\u0435\u0432\u0440\u0430\u043b\u044c", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0435\u043b\u044c", + "\u043c\u0430\u0439", + "\u0438\u044e\u043d\u044c", + "\u0438\u044e\u043b\u044c", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c", + "\u043e\u043a\u0442\u044f\u0431\u0440\u044c", + "\u043d\u043e\u044f\u0431\u0440\u044c", + "\u0434\u0435\u043a\u0430\u0431\u0440\u044c" + ], + "SHORTDAY": [ + "\u0416\u043a", + "\u0414\u0448", + "\u0428\u0435", + "\u0428\u0430", + "\u0411\u0448", + "\u0416\u043c", + "\u0418\u0448" + ], + "SHORTMONTH": [ + "\u044f\u043d\u0432.", + "\u0444\u0435\u0432.", + "\u043c\u0430\u0440.", + "\u0430\u043f\u0440.", + "\u043c\u0430\u0439", + "\u0438\u044e\u043d.", + "\u0438\u044e\u043b.", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043d.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u044f.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, d-MMMM, y-'\u0436'.", + "longDate": "d-MMMM, y-'\u0436'.", + "medium": "dd.MM.y HH:mm:ss", + "mediumDate": "dd.MM.y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "KGS", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ky", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_lag-tz.js b/1.2.30/i18n/angular-locale_lag-tz.js new file mode 100644 index 0000000000..7c6148278a --- /dev/null +++ b/1.2.30/i18n/angular-locale_lag-tz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "TOO", + "MUU" + ], + "DAY": [ + "Jumap\u00ediri", + "Jumat\u00e1tu", + "Juma\u00edne", + "Jumat\u00e1ano", + "Alam\u00edisi", + "Ijum\u00e1a", + "Jumam\u00f3osi" + ], + "MONTH": [ + "K\u0289f\u00fangat\u0268", + "K\u0289naan\u0268", + "K\u0289keenda", + "Kwiikumi", + "Kwiinyamb\u00e1la", + "Kwiidwaata", + "K\u0289m\u0289\u0289nch\u0268", + "K\u0289v\u0268\u0268r\u0268", + "K\u0289saat\u0289", + "Kwiinyi", + "K\u0289saano", + "K\u0289sasat\u0289" + ], + "SHORTDAY": [ + "P\u00edili", + "T\u00e1atu", + "\u00cdne", + "T\u00e1ano", + "Alh", + "Ijm", + "M\u00f3osi" + ], + "SHORTMONTH": [ + "F\u00fangat\u0268", + "Naan\u0268", + "Keenda", + "Ik\u00fami", + "Inyambala", + "Idwaata", + "M\u0289\u0289nch\u0268", + "V\u0268\u0268r\u0268", + "Saat\u0289", + "Inyi", + "Saano", + "Sasat\u0289" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "lag-tz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_lag.js b/1.2.30/i18n/angular-locale_lag.js new file mode 100644 index 0000000000..1fd20250c2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_lag.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "TOO", + "MUU" + ], + "DAY": [ + "Jumap\u00ediri", + "Jumat\u00e1tu", + "Juma\u00edne", + "Jumat\u00e1ano", + "Alam\u00edisi", + "Ijum\u00e1a", + "Jumam\u00f3osi" + ], + "MONTH": [ + "K\u0289f\u00fangat\u0268", + "K\u0289naan\u0268", + "K\u0289keenda", + "Kwiikumi", + "Kwiinyamb\u00e1la", + "Kwiidwaata", + "K\u0289m\u0289\u0289nch\u0268", + "K\u0289v\u0268\u0268r\u0268", + "K\u0289saat\u0289", + "Kwiinyi", + "K\u0289saano", + "K\u0289sasat\u0289" + ], + "SHORTDAY": [ + "P\u00edili", + "T\u00e1atu", + "\u00cdne", + "T\u00e1ano", + "Alh", + "Ijm", + "M\u00f3osi" + ], + "SHORTMONTH": [ + "F\u00fangat\u0268", + "Naan\u0268", + "Keenda", + "Ik\u00fami", + "Inyambala", + "Idwaata", + "M\u0289\u0289nch\u0268", + "V\u0268\u0268r\u0268", + "Saat\u0289", + "Inyi", + "Saano", + "Sasat\u0289" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "lag", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_lg-ug.js b/1.2.30/i18n/angular-locale_lg-ug.js new file mode 100644 index 0000000000..8a42674d08 --- /dev/null +++ b/1.2.30/i18n/angular-locale_lg-ug.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sabbiiti", + "Balaza", + "Lwakubiri", + "Lwakusatu", + "Lwakuna", + "Lwakutaano", + "Lwamukaaga" + ], + "MONTH": [ + "Janwaliyo", + "Febwaliyo", + "Marisi", + "Apuli", + "Maayi", + "Juuni", + "Julaayi", + "Agusito", + "Sebuttemba", + "Okitobba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Sab", + "Bal", + "Lw2", + "Lw3", + "Lw4", + "Lw5", + "Lw6" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apu", + "Maa", + "Juu", + "Jul", + "Agu", + "Seb", + "Oki", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "UGX", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "lg-ug", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_lg.js b/1.2.30/i18n/angular-locale_lg.js new file mode 100644 index 0000000000..070d11e615 --- /dev/null +++ b/1.2.30/i18n/angular-locale_lg.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sabbiiti", + "Balaza", + "Lwakubiri", + "Lwakusatu", + "Lwakuna", + "Lwakutaano", + "Lwamukaaga" + ], + "MONTH": [ + "Janwaliyo", + "Febwaliyo", + "Marisi", + "Apuli", + "Maayi", + "Juuni", + "Julaayi", + "Agusito", + "Sebuttemba", + "Okitobba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Sab", + "Bal", + "Lw2", + "Lw3", + "Lw4", + "Lw5", + "Lw6" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apu", + "Maa", + "Juu", + "Jul", + "Agu", + "Seb", + "Oki", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "UGX", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "lg", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_lkt-us.js b/1.2.30/i18n/angular-locale_lkt-us.js new file mode 100644 index 0000000000..175b19711d --- /dev/null +++ b/1.2.30/i18n/angular-locale_lkt-us.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "A\u014bp\u00e9tuwak\u021fa\u014b", + "A\u014bp\u00e9tuwa\u014b\u017ei", + "A\u014bp\u00e9tunu\u014bpa", + "A\u014bp\u00e9tuyamni", + "A\u014bp\u00e9tutopa", + "A\u014bp\u00e9tuzapta\u014b", + "Ow\u00e1\u014bgyu\u017ea\u017eapi" + ], + "MONTH": [ + "Wi\u00f3the\u021fika W\u00ed", + "Thiy\u00f3\u021feyu\u014bka W\u00ed", + "I\u0161t\u00e1wi\u010dhayaza\u014b W\u00ed", + "P\u021fe\u017e\u00edt\u021fo W\u00ed", + "\u010cha\u014bw\u00e1pet\u021fo W\u00ed", + "W\u00edpazuk\u021fa-wa\u0161t\u00e9 W\u00ed", + "\u010cha\u014bp\u021f\u00e1sapa W\u00ed", + "Was\u00fat\u021fu\u014b W\u00ed", + "\u010cha\u014bw\u00e1pe\u01e7i W\u00ed", + "\u010cha\u014bw\u00e1pe-kasn\u00e1 W\u00ed", + "Wan\u00edyetu W\u00ed", + "T\u021fah\u00e9kap\u0161u\u014b W\u00ed" + ], + "SHORTDAY": [ + "A\u014bp\u00e9tuwak\u021fa\u014b", + "A\u014bp\u00e9tuwa\u014b\u017ei", + "A\u014bp\u00e9tunu\u014bpa", + "A\u014bp\u00e9tuyamni", + "A\u014bp\u00e9tutopa", + "A\u014bp\u00e9tuzapta\u014b", + "Ow\u00e1\u014bgyu\u017ea\u017eapi" + ], + "SHORTMONTH": [ + "Wi\u00f3the\u021fika W\u00ed", + "Thiy\u00f3\u021feyu\u014bka W\u00ed", + "I\u0161t\u00e1wi\u010dhayaza\u014b W\u00ed", + "P\u021fe\u017e\u00edt\u021fo W\u00ed", + "\u010cha\u014bw\u00e1pet\u021fo W\u00ed", + "W\u00edpazuk\u021fa-wa\u0161t\u00e9 W\u00ed", + "\u010cha\u014bp\u021f\u00e1sapa W\u00ed", + "Was\u00fat\u021fu\u014b W\u00ed", + "\u010cha\u014bw\u00e1pe\u01e7i W\u00ed", + "\u010cha\u014bw\u00e1pe-kasn\u00e1 W\u00ed", + "Wan\u00edyetu W\u00ed", + "T\u021fah\u00e9kap\u0161u\u014b W\u00ed" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "lkt-us", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_lkt.js b/1.2.30/i18n/angular-locale_lkt.js new file mode 100644 index 0000000000..f29695fa6a --- /dev/null +++ b/1.2.30/i18n/angular-locale_lkt.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "A\u014bp\u00e9tuwak\u021fa\u014b", + "A\u014bp\u00e9tuwa\u014b\u017ei", + "A\u014bp\u00e9tunu\u014bpa", + "A\u014bp\u00e9tuyamni", + "A\u014bp\u00e9tutopa", + "A\u014bp\u00e9tuzapta\u014b", + "Ow\u00e1\u014bgyu\u017ea\u017eapi" + ], + "MONTH": [ + "Wi\u00f3the\u021fika W\u00ed", + "Thiy\u00f3\u021feyu\u014bka W\u00ed", + "I\u0161t\u00e1wi\u010dhayaza\u014b W\u00ed", + "P\u021fe\u017e\u00edt\u021fo W\u00ed", + "\u010cha\u014bw\u00e1pet\u021fo W\u00ed", + "W\u00edpazuk\u021fa-wa\u0161t\u00e9 W\u00ed", + "\u010cha\u014bp\u021f\u00e1sapa W\u00ed", + "Was\u00fat\u021fu\u014b W\u00ed", + "\u010cha\u014bw\u00e1pe\u01e7i W\u00ed", + "\u010cha\u014bw\u00e1pe-kasn\u00e1 W\u00ed", + "Wan\u00edyetu W\u00ed", + "T\u021fah\u00e9kap\u0161u\u014b W\u00ed" + ], + "SHORTDAY": [ + "A\u014bp\u00e9tuwak\u021fa\u014b", + "A\u014bp\u00e9tuwa\u014b\u017ei", + "A\u014bp\u00e9tunu\u014bpa", + "A\u014bp\u00e9tuyamni", + "A\u014bp\u00e9tutopa", + "A\u014bp\u00e9tuzapta\u014b", + "Ow\u00e1\u014bgyu\u017ea\u017eapi" + ], + "SHORTMONTH": [ + "Wi\u00f3the\u021fika W\u00ed", + "Thiy\u00f3\u021feyu\u014bka W\u00ed", + "I\u0161t\u00e1wi\u010dhayaza\u014b W\u00ed", + "P\u021fe\u017e\u00edt\u021fo W\u00ed", + "\u010cha\u014bw\u00e1pet\u021fo W\u00ed", + "W\u00edpazuk\u021fa-wa\u0161t\u00e9 W\u00ed", + "\u010cha\u014bp\u021f\u00e1sapa W\u00ed", + "Was\u00fat\u021fu\u014b W\u00ed", + "\u010cha\u014bw\u00e1pe\u01e7i W\u00ed", + "\u010cha\u014bw\u00e1pe-kasn\u00e1 W\u00ed", + "Wan\u00edyetu W\u00ed", + "T\u021fah\u00e9kap\u0161u\u014b W\u00ed" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "lkt", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ln-ao.js b/1.2.30/i18n/angular-locale_ln-ao.js new file mode 100644 index 0000000000..56f02f60ec --- /dev/null +++ b/1.2.30/i18n/angular-locale_ln-ao.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "nt\u0254\u0301ng\u0254\u0301", + "mp\u00f3kwa" + ], + "DAY": [ + "eyenga", + "mok\u0254l\u0254 mwa yambo", + "mok\u0254l\u0254 mwa m\u00edbal\u00e9", + "mok\u0254l\u0254 mwa m\u00eds\u00e1to", + "mok\u0254l\u0254 ya m\u00edn\u00e9i", + "mok\u0254l\u0254 ya m\u00edt\u00e1no", + "mp\u0254\u0301s\u0254" + ], + "MONTH": [ + "s\u00e1nz\u00e1 ya yambo", + "s\u00e1nz\u00e1 ya m\u00edbal\u00e9", + "s\u00e1nz\u00e1 ya m\u00eds\u00e1to", + "s\u00e1nz\u00e1 ya m\u00ednei", + "s\u00e1nz\u00e1 ya m\u00edt\u00e1no", + "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1", + "s\u00e1nz\u00e1 ya nsambo", + "s\u00e1nz\u00e1 ya mwambe", + "s\u00e1nz\u00e1 ya libwa", + "s\u00e1nz\u00e1 ya z\u00f3mi", + "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301", + "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9" + ], + "SHORTDAY": [ + "eye", + "ybo", + "mbl", + "mst", + "min", + "mtn", + "mps" + ], + "SHORTMONTH": [ + "yan", + "fbl", + "msi", + "apl", + "mai", + "yun", + "yul", + "agt", + "stb", + "\u0254tb", + "nvb", + "dsb" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Kz", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ln-ao", + "pluralCat": function (n, opt_precision) { if (n >= 0 && n <= 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ln-cd.js b/1.2.30/i18n/angular-locale_ln-cd.js new file mode 100644 index 0000000000..85343352e0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ln-cd.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "nt\u0254\u0301ng\u0254\u0301", + "mp\u00f3kwa" + ], + "DAY": [ + "eyenga", + "mok\u0254l\u0254 mwa yambo", + "mok\u0254l\u0254 mwa m\u00edbal\u00e9", + "mok\u0254l\u0254 mwa m\u00eds\u00e1to", + "mok\u0254l\u0254 ya m\u00edn\u00e9i", + "mok\u0254l\u0254 ya m\u00edt\u00e1no", + "mp\u0254\u0301s\u0254" + ], + "MONTH": [ + "s\u00e1nz\u00e1 ya yambo", + "s\u00e1nz\u00e1 ya m\u00edbal\u00e9", + "s\u00e1nz\u00e1 ya m\u00eds\u00e1to", + "s\u00e1nz\u00e1 ya m\u00ednei", + "s\u00e1nz\u00e1 ya m\u00edt\u00e1no", + "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1", + "s\u00e1nz\u00e1 ya nsambo", + "s\u00e1nz\u00e1 ya mwambe", + "s\u00e1nz\u00e1 ya libwa", + "s\u00e1nz\u00e1 ya z\u00f3mi", + "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301", + "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9" + ], + "SHORTDAY": [ + "eye", + "ybo", + "mbl", + "mst", + "min", + "mtn", + "mps" + ], + "SHORTMONTH": [ + "yan", + "fbl", + "msi", + "apl", + "mai", + "yun", + "yul", + "agt", + "stb", + "\u0254tb", + "nvb", + "dsb" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FrCD", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ln-cd", + "pluralCat": function (n, opt_precision) { if (n >= 0 && n <= 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ln-cf.js b/1.2.30/i18n/angular-locale_ln-cf.js new file mode 100644 index 0000000000..62ae7b7b53 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ln-cf.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "nt\u0254\u0301ng\u0254\u0301", + "mp\u00f3kwa" + ], + "DAY": [ + "eyenga", + "mok\u0254l\u0254 mwa yambo", + "mok\u0254l\u0254 mwa m\u00edbal\u00e9", + "mok\u0254l\u0254 mwa m\u00eds\u00e1to", + "mok\u0254l\u0254 ya m\u00edn\u00e9i", + "mok\u0254l\u0254 ya m\u00edt\u00e1no", + "mp\u0254\u0301s\u0254" + ], + "MONTH": [ + "s\u00e1nz\u00e1 ya yambo", + "s\u00e1nz\u00e1 ya m\u00edbal\u00e9", + "s\u00e1nz\u00e1 ya m\u00eds\u00e1to", + "s\u00e1nz\u00e1 ya m\u00ednei", + "s\u00e1nz\u00e1 ya m\u00edt\u00e1no", + "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1", + "s\u00e1nz\u00e1 ya nsambo", + "s\u00e1nz\u00e1 ya mwambe", + "s\u00e1nz\u00e1 ya libwa", + "s\u00e1nz\u00e1 ya z\u00f3mi", + "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301", + "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9" + ], + "SHORTDAY": [ + "eye", + "ybo", + "mbl", + "mst", + "min", + "mtn", + "mps" + ], + "SHORTMONTH": [ + "yan", + "fbl", + "msi", + "apl", + "mai", + "yun", + "yul", + "agt", + "stb", + "\u0254tb", + "nvb", + "dsb" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ln-cf", + "pluralCat": function (n, opt_precision) { if (n >= 0 && n <= 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ln-cg.js b/1.2.30/i18n/angular-locale_ln-cg.js new file mode 100644 index 0000000000..8994010af5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ln-cg.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "nt\u0254\u0301ng\u0254\u0301", + "mp\u00f3kwa" + ], + "DAY": [ + "eyenga", + "mok\u0254l\u0254 mwa yambo", + "mok\u0254l\u0254 mwa m\u00edbal\u00e9", + "mok\u0254l\u0254 mwa m\u00eds\u00e1to", + "mok\u0254l\u0254 ya m\u00edn\u00e9i", + "mok\u0254l\u0254 ya m\u00edt\u00e1no", + "mp\u0254\u0301s\u0254" + ], + "MONTH": [ + "s\u00e1nz\u00e1 ya yambo", + "s\u00e1nz\u00e1 ya m\u00edbal\u00e9", + "s\u00e1nz\u00e1 ya m\u00eds\u00e1to", + "s\u00e1nz\u00e1 ya m\u00ednei", + "s\u00e1nz\u00e1 ya m\u00edt\u00e1no", + "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1", + "s\u00e1nz\u00e1 ya nsambo", + "s\u00e1nz\u00e1 ya mwambe", + "s\u00e1nz\u00e1 ya libwa", + "s\u00e1nz\u00e1 ya z\u00f3mi", + "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301", + "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9" + ], + "SHORTDAY": [ + "eye", + "ybo", + "mbl", + "mst", + "min", + "mtn", + "mps" + ], + "SHORTMONTH": [ + "yan", + "fbl", + "msi", + "apl", + "mai", + "yun", + "yul", + "agt", + "stb", + "\u0254tb", + "nvb", + "dsb" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ln-cg", + "pluralCat": function (n, opt_precision) { if (n >= 0 && n <= 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ln.js b/1.2.30/i18n/angular-locale_ln.js new file mode 100644 index 0000000000..8e67c2935a --- /dev/null +++ b/1.2.30/i18n/angular-locale_ln.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "nt\u0254\u0301ng\u0254\u0301", + "mp\u00f3kwa" + ], + "DAY": [ + "eyenga", + "mok\u0254l\u0254 mwa yambo", + "mok\u0254l\u0254 mwa m\u00edbal\u00e9", + "mok\u0254l\u0254 mwa m\u00eds\u00e1to", + "mok\u0254l\u0254 ya m\u00edn\u00e9i", + "mok\u0254l\u0254 ya m\u00edt\u00e1no", + "mp\u0254\u0301s\u0254" + ], + "MONTH": [ + "s\u00e1nz\u00e1 ya yambo", + "s\u00e1nz\u00e1 ya m\u00edbal\u00e9", + "s\u00e1nz\u00e1 ya m\u00eds\u00e1to", + "s\u00e1nz\u00e1 ya m\u00ednei", + "s\u00e1nz\u00e1 ya m\u00edt\u00e1no", + "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1", + "s\u00e1nz\u00e1 ya nsambo", + "s\u00e1nz\u00e1 ya mwambe", + "s\u00e1nz\u00e1 ya libwa", + "s\u00e1nz\u00e1 ya z\u00f3mi", + "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301", + "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9" + ], + "SHORTDAY": [ + "eye", + "ybo", + "mbl", + "mst", + "min", + "mtn", + "mps" + ], + "SHORTMONTH": [ + "yan", + "fbl", + "msi", + "apl", + "mai", + "yun", + "yul", + "agt", + "stb", + "\u0254tb", + "nvb", + "dsb" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FrCD", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ln", + "pluralCat": function (n, opt_precision) { if (n >= 0 && n <= 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_lo-la.js b/1.2.30/i18n/angular-locale_lo-la.js new file mode 100644 index 0000000000..6c33db091d --- /dev/null +++ b/1.2.30/i18n/angular-locale_lo-la.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0e81\u0ec8\u0ead\u0e99\u0e97\u0ec8\u0ebd\u0e87", + "\u0eab\u0ebc\u0eb1\u0e87\u0e97\u0ec8\u0ebd\u0e87" + ], + "DAY": [ + "\u0ea7\u0eb1\u0e99\u0ead\u0eb2\u0e97\u0eb4\u0e94", + "\u0ea7\u0eb1\u0e99\u0e88\u0eb1\u0e99", + "\u0ea7\u0eb1\u0e99\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99", + "\u0ea7\u0eb1\u0e99\u0e9e\u0eb8\u0e94", + "\u0ea7\u0eb1\u0e99\u0e9e\u0eb0\u0eab\u0eb1\u0e94", + "\u0ea7\u0eb1\u0e99\u0eaa\u0eb8\u0e81", + "\u0ea7\u0eb1\u0e99\u0ec0\u0eaa\u0ebb\u0eb2" + ], + "MONTH": [ + "\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99", + "\u0e81\u0eb8\u0ea1\u0e9e\u0eb2", + "\u0ea1\u0eb5\u0e99\u0eb2", + "\u0ec0\u0ea1\u0eaa\u0eb2", + "\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2", + "\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2", + "\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94", + "\u0eaa\u0eb4\u0e87\u0eab\u0eb2", + "\u0e81\u0eb1\u0e99\u0e8d\u0eb2", + "\u0e95\u0eb8\u0ea5\u0eb2", + "\u0e9e\u0eb0\u0e88\u0eb4\u0e81", + "\u0e97\u0eb1\u0e99\u0ea7\u0eb2" + ], + "SHORTDAY": [ + "\u0ea7\u0eb1\u0e99\u0ead\u0eb2\u0e97\u0eb4\u0e94", + "\u0ea7\u0eb1\u0e99\u0e88\u0eb1\u0e99", + "\u0ea7\u0eb1\u0e99\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99", + "\u0ea7\u0eb1\u0e99\u0e9e\u0eb8\u0e94", + "\u0ea7\u0eb1\u0e99\u0e9e\u0eb0\u0eab\u0eb1\u0e94", + "\u0ea7\u0eb1\u0e99\u0eaa\u0eb8\u0e81", + "\u0ea7\u0eb1\u0e99\u0ec0\u0eaa\u0ebb\u0eb2" + ], + "SHORTMONTH": [ + "\u0ea1.\u0e81.", + "\u0e81.\u0e9e.", + "\u0ea1.\u0e99.", + "\u0ea1.\u0eaa.", + "\u0e9e.\u0e9e.", + "\u0ea1\u0eb4.\u0e96.", + "\u0e81.\u0ea5.", + "\u0eaa.\u0eab.", + "\u0e81.\u0e8d.", + "\u0e95.\u0ea5.", + "\u0e9e.\u0e88.", + "\u0e97.\u0ea7." + ], + "fullDate": "EEEE \u0e97\u0eb5 d MMMM G y", + "longDate": "d MMMM y", + "medium": "d MMM y H:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "H:mm:ss", + "short": "d/M/y H:mm", + "shortDate": "d/M/y", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ad", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "lo-la", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_lo.js b/1.2.30/i18n/angular-locale_lo.js new file mode 100644 index 0000000000..7de939e95d --- /dev/null +++ b/1.2.30/i18n/angular-locale_lo.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0e81\u0ec8\u0ead\u0e99\u0e97\u0ec8\u0ebd\u0e87", + "\u0eab\u0ebc\u0eb1\u0e87\u0e97\u0ec8\u0ebd\u0e87" + ], + "DAY": [ + "\u0ea7\u0eb1\u0e99\u0ead\u0eb2\u0e97\u0eb4\u0e94", + "\u0ea7\u0eb1\u0e99\u0e88\u0eb1\u0e99", + "\u0ea7\u0eb1\u0e99\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99", + "\u0ea7\u0eb1\u0e99\u0e9e\u0eb8\u0e94", + "\u0ea7\u0eb1\u0e99\u0e9e\u0eb0\u0eab\u0eb1\u0e94", + "\u0ea7\u0eb1\u0e99\u0eaa\u0eb8\u0e81", + "\u0ea7\u0eb1\u0e99\u0ec0\u0eaa\u0ebb\u0eb2" + ], + "MONTH": [ + "\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99", + "\u0e81\u0eb8\u0ea1\u0e9e\u0eb2", + "\u0ea1\u0eb5\u0e99\u0eb2", + "\u0ec0\u0ea1\u0eaa\u0eb2", + "\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2", + "\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2", + "\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94", + "\u0eaa\u0eb4\u0e87\u0eab\u0eb2", + "\u0e81\u0eb1\u0e99\u0e8d\u0eb2", + "\u0e95\u0eb8\u0ea5\u0eb2", + "\u0e9e\u0eb0\u0e88\u0eb4\u0e81", + "\u0e97\u0eb1\u0e99\u0ea7\u0eb2" + ], + "SHORTDAY": [ + "\u0ea7\u0eb1\u0e99\u0ead\u0eb2\u0e97\u0eb4\u0e94", + "\u0ea7\u0eb1\u0e99\u0e88\u0eb1\u0e99", + "\u0ea7\u0eb1\u0e99\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99", + "\u0ea7\u0eb1\u0e99\u0e9e\u0eb8\u0e94", + "\u0ea7\u0eb1\u0e99\u0e9e\u0eb0\u0eab\u0eb1\u0e94", + "\u0ea7\u0eb1\u0e99\u0eaa\u0eb8\u0e81", + "\u0ea7\u0eb1\u0e99\u0ec0\u0eaa\u0ebb\u0eb2" + ], + "SHORTMONTH": [ + "\u0ea1.\u0e81.", + "\u0e81.\u0e9e.", + "\u0ea1.\u0e99.", + "\u0ea1.\u0eaa.", + "\u0e9e.\u0e9e.", + "\u0ea1\u0eb4.\u0e96.", + "\u0e81.\u0ea5.", + "\u0eaa.\u0eab.", + "\u0e81.\u0e8d.", + "\u0e95.\u0ea5.", + "\u0e9e.\u0e88.", + "\u0e97.\u0ea7." + ], + "fullDate": "EEEE \u0e97\u0eb5 d MMMM G y", + "longDate": "d MMMM y", + "medium": "d MMM y H:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "H:mm:ss", + "short": "d/M/y H:mm", + "shortDate": "d/M/y", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ad", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "lo", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_lt-lt.js b/1.2.30/i18n/angular-locale_lt-lt.js new file mode 100644 index 0000000000..05573e4640 --- /dev/null +++ b/1.2.30/i18n/angular-locale_lt-lt.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "prie\u0161piet", + "popiet" + ], + "DAY": [ + "sekmadienis", + "pirmadienis", + "antradienis", + "tre\u010diadienis", + "ketvirtadienis", + "penktadienis", + "\u0161e\u0161tadienis" + ], + "MONTH": [ + "sausis", + "vasaris", + "kovas", + "balandis", + "gegu\u017e\u0117", + "bir\u017eelis", + "liepa", + "rugpj\u016btis", + "rugs\u0117jis", + "spalis", + "lapkritis", + "gruodis" + ], + "SHORTDAY": [ + "sk", + "pr", + "an", + "tr", + "kt", + "pn", + "\u0161t" + ], + "SHORTMONTH": [ + "saus.", + "vas.", + "kov.", + "bal.", + "geg.", + "bir\u017e.", + "liep.", + "rugp.", + "rugs.", + "spal.", + "lapkr.", + "gruod." + ], + "fullDate": "y 'm'. MMMM d 'd'., EEEE", + "longDate": "y 'm'. MMMM d 'd'.", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Lt", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "lt-lt", + "pluralCat": function (n, opt_precision) { var vf = getVF(n, opt_precision); if (n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) { return PLURAL_CATEGORY.ONE; } if (n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) { return PLURAL_CATEGORY.FEW; } if (vf.f != 0) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_lt.js b/1.2.30/i18n/angular-locale_lt.js new file mode 100644 index 0000000000..f50231a0f8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_lt.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "prie\u0161piet", + "popiet" + ], + "DAY": [ + "sekmadienis", + "pirmadienis", + "antradienis", + "tre\u010diadienis", + "ketvirtadienis", + "penktadienis", + "\u0161e\u0161tadienis" + ], + "MONTH": [ + "sausis", + "vasaris", + "kovas", + "balandis", + "gegu\u017e\u0117", + "bir\u017eelis", + "liepa", + "rugpj\u016btis", + "rugs\u0117jis", + "spalis", + "lapkritis", + "gruodis" + ], + "SHORTDAY": [ + "sk", + "pr", + "an", + "tr", + "kt", + "pn", + "\u0161t" + ], + "SHORTMONTH": [ + "saus.", + "vas.", + "kov.", + "bal.", + "geg.", + "bir\u017e.", + "liep.", + "rugp.", + "rugs.", + "spal.", + "lapkr.", + "gruod." + ], + "fullDate": "y 'm'. MMMM d 'd'., EEEE", + "longDate": "y 'm'. MMMM d 'd'.", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Lt", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "lt", + "pluralCat": function (n, opt_precision) { var vf = getVF(n, opt_precision); if (n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) { return PLURAL_CATEGORY.ONE; } if (n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) { return PLURAL_CATEGORY.FEW; } if (vf.f != 0) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_lu-cd.js b/1.2.30/i18n/angular-locale_lu-cd.js new file mode 100644 index 0000000000..a4d8018874 --- /dev/null +++ b/1.2.30/i18n/angular-locale_lu-cd.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Dinda", + "Dilolo" + ], + "DAY": [ + "Lumingu", + "Nkodya", + "Nd\u00e0ay\u00e0", + "Ndang\u00f9", + "Nj\u00f2wa", + "Ng\u00f2vya", + "Lubingu" + ], + "MONTH": [ + "Ciongo", + "L\u00f9ishi", + "Lus\u00f2lo", + "M\u00f9uy\u00e0", + "Lum\u00f9ng\u00f9l\u00f9", + "Lufuimi", + "Kab\u00e0l\u00e0sh\u00ecp\u00f9", + "L\u00f9sh\u00eck\u00e0", + "Lutongolo", + "Lung\u00f9di", + "Kasw\u00e8k\u00e8s\u00e8", + "Cisw\u00e0" + ], + "SHORTDAY": [ + "Lum", + "Nko", + "Ndy", + "Ndg", + "Njw", + "Ngv", + "Lub" + ], + "SHORTMONTH": [ + "Cio", + "Lui", + "Lus", + "Muu", + "Lum", + "Luf", + "Kab", + "Lush", + "Lut", + "Lun", + "Kas", + "Cis" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FrCD", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "lu-cd", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_lu.js b/1.2.30/i18n/angular-locale_lu.js new file mode 100644 index 0000000000..e1728060ec --- /dev/null +++ b/1.2.30/i18n/angular-locale_lu.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Dinda", + "Dilolo" + ], + "DAY": [ + "Lumingu", + "Nkodya", + "Nd\u00e0ay\u00e0", + "Ndang\u00f9", + "Nj\u00f2wa", + "Ng\u00f2vya", + "Lubingu" + ], + "MONTH": [ + "Ciongo", + "L\u00f9ishi", + "Lus\u00f2lo", + "M\u00f9uy\u00e0", + "Lum\u00f9ng\u00f9l\u00f9", + "Lufuimi", + "Kab\u00e0l\u00e0sh\u00ecp\u00f9", + "L\u00f9sh\u00eck\u00e0", + "Lutongolo", + "Lung\u00f9di", + "Kasw\u00e8k\u00e8s\u00e8", + "Cisw\u00e0" + ], + "SHORTDAY": [ + "Lum", + "Nko", + "Ndy", + "Ndg", + "Njw", + "Ngv", + "Lub" + ], + "SHORTMONTH": [ + "Cio", + "Lui", + "Lus", + "Muu", + "Lum", + "Luf", + "Kab", + "Lush", + "Lut", + "Lun", + "Kas", + "Cis" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FrCD", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "lu", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_luo-ke.js b/1.2.30/i18n/angular-locale_luo-ke.js new file mode 100644 index 0000000000..7d9dcf595f --- /dev/null +++ b/1.2.30/i18n/angular-locale_luo-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "OD", + "OT" + ], + "DAY": [ + "Jumapil", + "Wuok Tich", + "Tich Ariyo", + "Tich Adek", + "Tich Ang'wen", + "Tich Abich", + "Ngeso" + ], + "MONTH": [ + "Dwe mar Achiel", + "Dwe mar Ariyo", + "Dwe mar Adek", + "Dwe mar Ang'wen", + "Dwe mar Abich", + "Dwe mar Auchiel", + "Dwe mar Abiriyo", + "Dwe mar Aboro", + "Dwe mar Ochiko", + "Dwe mar Apar", + "Dwe mar gi achiel", + "Dwe mar Apar gi ariyo" + ], + "SHORTDAY": [ + "JMP", + "WUT", + "TAR", + "TAD", + "TAN", + "TAB", + "NGS" + ], + "SHORTMONTH": [ + "DAC", + "DAR", + "DAD", + "DAN", + "DAH", + "DAU", + "DAO", + "DAB", + "DOC", + "DAP", + "DGI", + "DAG" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "luo-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_luo.js b/1.2.30/i18n/angular-locale_luo.js new file mode 100644 index 0000000000..a5982ddae6 --- /dev/null +++ b/1.2.30/i18n/angular-locale_luo.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "OD", + "OT" + ], + "DAY": [ + "Jumapil", + "Wuok Tich", + "Tich Ariyo", + "Tich Adek", + "Tich Ang'wen", + "Tich Abich", + "Ngeso" + ], + "MONTH": [ + "Dwe mar Achiel", + "Dwe mar Ariyo", + "Dwe mar Adek", + "Dwe mar Ang'wen", + "Dwe mar Abich", + "Dwe mar Auchiel", + "Dwe mar Abiriyo", + "Dwe mar Aboro", + "Dwe mar Ochiko", + "Dwe mar Apar", + "Dwe mar gi achiel", + "Dwe mar Apar gi ariyo" + ], + "SHORTDAY": [ + "JMP", + "WUT", + "TAR", + "TAD", + "TAN", + "TAB", + "NGS" + ], + "SHORTMONTH": [ + "DAC", + "DAR", + "DAD", + "DAN", + "DAH", + "DAU", + "DAO", + "DAB", + "DOC", + "DAP", + "DGI", + "DAG" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "luo", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_luy-ke.js b/1.2.30/i18n/angular-locale_luy-ke.js new file mode 100644 index 0000000000..0585168fb1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_luy-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "Jumapiri", + "Jumatatu", + "Jumanne", + "Jumatano", + "Murwa wa Kanne", + "Murwa wa Katano", + "Jumamosi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Aprili", + "Mei", + "Juni", + "Julai", + "Agosti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "J2", + "J3", + "J4", + "J5", + "Al", + "Ij", + "J1" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-\u00a0", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "luy-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_luy.js b/1.2.30/i18n/angular-locale_luy.js new file mode 100644 index 0000000000..0531f5ae1e --- /dev/null +++ b/1.2.30/i18n/angular-locale_luy.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "Jumapiri", + "Jumatatu", + "Jumanne", + "Jumatano", + "Murwa wa Kanne", + "Murwa wa Katano", + "Jumamosi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Aprili", + "Mei", + "Juni", + "Julai", + "Agosti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "J2", + "J3", + "J4", + "J5", + "Al", + "Ij", + "J1" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-\u00a0", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "luy", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_lv-lv.js b/1.2.30/i18n/angular-locale_lv-lv.js new file mode 100644 index 0000000000..a79fb87498 --- /dev/null +++ b/1.2.30/i18n/angular-locale_lv-lv.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "priek\u0161pusdien\u0101", + "p\u0113cpusdien\u0101" + ], + "DAY": [ + "sv\u0113tdiena", + "pirmdiena", + "otrdiena", + "tre\u0161diena", + "ceturtdiena", + "piektdiena", + "sestdiena" + ], + "MONTH": [ + "janv\u0101ris", + "febru\u0101ris", + "marts", + "apr\u012blis", + "maijs", + "j\u016bnijs", + "j\u016blijs", + "augusts", + "septembris", + "oktobris", + "novembris", + "decembris" + ], + "SHORTDAY": [ + "Sv", + "Pr", + "Ot", + "Tr", + "Ce", + "Pk", + "Se" + ], + "SHORTMONTH": [ + "janv.", + "febr.", + "marts", + "apr.", + "maijs", + "j\u016bn.", + "j\u016bl.", + "aug.", + "sept.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "EEEE, y. 'gada' d. MMMM", + "longDate": "y. 'gada' d. MMMM", + "medium": "y. 'gada' d. MMM HH:mm:ss", + "mediumDate": "y. 'gada' d. MMM", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "lv-lv", + "pluralCat": function (n, opt_precision) { var vf = getVF(n, opt_precision); if (n % 10 == 0 || n % 100 >= 11 && n % 100 <= 19 || vf.v == 2 && vf.f % 100 >= 11 && vf.f % 100 <= 19) { return PLURAL_CATEGORY.ZERO; } if (n % 10 == 1 && n % 100 != 11 || vf.v == 2 && vf.f % 10 == 1 && vf.f % 100 != 11 || vf.v != 2 && vf.f % 10 == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_lv.js b/1.2.30/i18n/angular-locale_lv.js new file mode 100644 index 0000000000..26968f9c24 --- /dev/null +++ b/1.2.30/i18n/angular-locale_lv.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "priek\u0161pusdien\u0101", + "p\u0113cpusdien\u0101" + ], + "DAY": [ + "sv\u0113tdiena", + "pirmdiena", + "otrdiena", + "tre\u0161diena", + "ceturtdiena", + "piektdiena", + "sestdiena" + ], + "MONTH": [ + "janv\u0101ris", + "febru\u0101ris", + "marts", + "apr\u012blis", + "maijs", + "j\u016bnijs", + "j\u016blijs", + "augusts", + "septembris", + "oktobris", + "novembris", + "decembris" + ], + "SHORTDAY": [ + "Sv", + "Pr", + "Ot", + "Tr", + "Ce", + "Pk", + "Se" + ], + "SHORTMONTH": [ + "janv.", + "febr.", + "marts", + "apr.", + "maijs", + "j\u016bn.", + "j\u016bl.", + "aug.", + "sept.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "EEEE, y. 'gada' d. MMMM", + "longDate": "y. 'gada' d. MMMM", + "medium": "y. 'gada' d. MMM HH:mm:ss", + "mediumDate": "y. 'gada' d. MMM", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "lv", + "pluralCat": function (n, opt_precision) { var vf = getVF(n, opt_precision); if (n % 10 == 0 || n % 100 >= 11 && n % 100 <= 19 || vf.v == 2 && vf.f % 100 >= 11 && vf.f % 100 <= 19) { return PLURAL_CATEGORY.ZERO; } if (n % 10 == 1 && n % 100 != 11 || vf.v == 2 && vf.f % 10 == 1 && vf.f % 100 != 11 || vf.v != 2 && vf.f % 10 == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mas-ke.js b/1.2.30/i18n/angular-locale_mas-ke.js new file mode 100644 index 0000000000..75de99cdb8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mas-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0190nkak\u025bny\u00e1", + "\u0190nd\u00e1m\u00e2" + ], + "DAY": [ + "Jumap\u00edl\u00ed", + "Jumat\u00e1tu", + "Jumane", + "Jumat\u00e1n\u0254", + "Ala\u00e1misi", + "Jum\u00e1a", + "Jumam\u00f3si" + ], + "MONTH": [ + "Oladal\u0289\u0301", + "Ar\u00e1t", + "\u0186\u025bn\u0268\u0301\u0254\u0268\u014b\u0254k", + "Olodoy\u00ed\u00f3r\u00ed\u00ea ink\u00f3k\u00fa\u00e2", + "Oloil\u00e9p\u016bny\u012b\u0113 ink\u00f3k\u00fa\u00e2", + "K\u00faj\u00fa\u0254r\u0254k", + "M\u00f3rus\u00e1sin", + "\u0186l\u0254\u0301\u0268\u0301b\u0254\u0301r\u00e1r\u025b", + "K\u00fash\u00een", + "Olg\u00edsan", + "P\u0289sh\u0289\u0301ka", + "Nt\u0289\u0301\u014b\u0289\u0301s" + ], + "SHORTDAY": [ + "Jpi", + "Jtt", + "Jnn", + "Jtn", + "Alh", + "Iju", + "Jmo" + ], + "SHORTMONTH": [ + "Dal", + "Ar\u00e1", + "\u0186\u025bn", + "Doy", + "L\u00e9p", + "Rok", + "S\u00e1s", + "B\u0254\u0301r", + "K\u00fas", + "G\u00eds", + "Sh\u0289\u0301", + "Nt\u0289\u0301" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "mas-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mas-tz.js b/1.2.30/i18n/angular-locale_mas-tz.js new file mode 100644 index 0000000000..5dcd6b50b8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mas-tz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0190nkak\u025bny\u00e1", + "\u0190nd\u00e1m\u00e2" + ], + "DAY": [ + "Jumap\u00edl\u00ed", + "Jumat\u00e1tu", + "Jumane", + "Jumat\u00e1n\u0254", + "Ala\u00e1misi", + "Jum\u00e1a", + "Jumam\u00f3si" + ], + "MONTH": [ + "Oladal\u0289\u0301", + "Ar\u00e1t", + "\u0186\u025bn\u0268\u0301\u0254\u0268\u014b\u0254k", + "Olodoy\u00ed\u00f3r\u00ed\u00ea ink\u00f3k\u00fa\u00e2", + "Oloil\u00e9p\u016bny\u012b\u0113 ink\u00f3k\u00fa\u00e2", + "K\u00faj\u00fa\u0254r\u0254k", + "M\u00f3rus\u00e1sin", + "\u0186l\u0254\u0301\u0268\u0301b\u0254\u0301r\u00e1r\u025b", + "K\u00fash\u00een", + "Olg\u00edsan", + "P\u0289sh\u0289\u0301ka", + "Nt\u0289\u0301\u014b\u0289\u0301s" + ], + "SHORTDAY": [ + "Jpi", + "Jtt", + "Jnn", + "Jtn", + "Alh", + "Iju", + "Jmo" + ], + "SHORTMONTH": [ + "Dal", + "Ar\u00e1", + "\u0186\u025bn", + "Doy", + "L\u00e9p", + "Rok", + "S\u00e1s", + "B\u0254\u0301r", + "K\u00fas", + "G\u00eds", + "Sh\u0289\u0301", + "Nt\u0289\u0301" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "mas-tz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mas.js b/1.2.30/i18n/angular-locale_mas.js new file mode 100644 index 0000000000..cf98974978 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mas.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0190nkak\u025bny\u00e1", + "\u0190nd\u00e1m\u00e2" + ], + "DAY": [ + "Jumap\u00edl\u00ed", + "Jumat\u00e1tu", + "Jumane", + "Jumat\u00e1n\u0254", + "Ala\u00e1misi", + "Jum\u00e1a", + "Jumam\u00f3si" + ], + "MONTH": [ + "Oladal\u0289\u0301", + "Ar\u00e1t", + "\u0186\u025bn\u0268\u0301\u0254\u0268\u014b\u0254k", + "Olodoy\u00ed\u00f3r\u00ed\u00ea ink\u00f3k\u00fa\u00e2", + "Oloil\u00e9p\u016bny\u012b\u0113 ink\u00f3k\u00fa\u00e2", + "K\u00faj\u00fa\u0254r\u0254k", + "M\u00f3rus\u00e1sin", + "\u0186l\u0254\u0301\u0268\u0301b\u0254\u0301r\u00e1r\u025b", + "K\u00fash\u00een", + "Olg\u00edsan", + "P\u0289sh\u0289\u0301ka", + "Nt\u0289\u0301\u014b\u0289\u0301s" + ], + "SHORTDAY": [ + "Jpi", + "Jtt", + "Jnn", + "Jtn", + "Alh", + "Iju", + "Jmo" + ], + "SHORTMONTH": [ + "Dal", + "Ar\u00e1", + "\u0186\u025bn", + "Doy", + "L\u00e9p", + "Rok", + "S\u00e1s", + "B\u0254\u0301r", + "K\u00fas", + "G\u00eds", + "Sh\u0289\u0301", + "Nt\u0289\u0301" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "mas", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mer-ke.js b/1.2.30/i18n/angular-locale_mer-ke.js new file mode 100644 index 0000000000..0831eaa2fe --- /dev/null +++ b/1.2.30/i18n/angular-locale_mer-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "R\u0168", + "\u0168G" + ], + "DAY": [ + "Kiumia", + "Muramuko", + "Wairi", + "Wethatu", + "Wena", + "Wetano", + "Jumamosi" + ], + "MONTH": [ + "Januar\u0129", + "Feburuar\u0129", + "Machi", + "\u0128pur\u0169", + "M\u0129\u0129", + "Njuni", + "Njura\u0129", + "Agasti", + "Septemba", + "Okt\u0169ba", + "Novemba", + "Dicemba" + ], + "SHORTDAY": [ + "KIU", + "MRA", + "WAI", + "WET", + "WEN", + "WTN", + "JUM" + ], + "SHORTMONTH": [ + "JAN", + "FEB", + "MAC", + "\u0128PU", + "M\u0128\u0128", + "NJU", + "NJR", + "AGA", + "SPT", + "OKT", + "NOV", + "DEC" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "mer-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mer.js b/1.2.30/i18n/angular-locale_mer.js new file mode 100644 index 0000000000..8d47efc570 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mer.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "R\u0168", + "\u0168G" + ], + "DAY": [ + "Kiumia", + "Muramuko", + "Wairi", + "Wethatu", + "Wena", + "Wetano", + "Jumamosi" + ], + "MONTH": [ + "Januar\u0129", + "Feburuar\u0129", + "Machi", + "\u0128pur\u0169", + "M\u0129\u0129", + "Njuni", + "Njura\u0129", + "Agasti", + "Septemba", + "Okt\u0169ba", + "Novemba", + "Dicemba" + ], + "SHORTDAY": [ + "KIU", + "MRA", + "WAI", + "WET", + "WEN", + "WTN", + "JUM" + ], + "SHORTMONTH": [ + "JAN", + "FEB", + "MAC", + "\u0128PU", + "M\u0128\u0128", + "NJU", + "NJR", + "AGA", + "SPT", + "OKT", + "NOV", + "DEC" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "mer", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mfe-mu.js b/1.2.30/i18n/angular-locale_mfe-mu.js new file mode 100644 index 0000000000..c2b6d370c2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mfe-mu.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimans", + "lindi", + "mardi", + "merkredi", + "zedi", + "vandredi", + "samdi" + ], + "MONTH": [ + "zanvie", + "fevriye", + "mars", + "avril", + "me", + "zin", + "zilye", + "out", + "septam", + "oktob", + "novam", + "desam" + ], + "SHORTDAY": [ + "dim", + "lin", + "mar", + "mer", + "ze", + "van", + "sam" + ], + "SHORTMONTH": [ + "zan", + "fev", + "mar", + "avr", + "me", + "zin", + "zil", + "out", + "sep", + "okt", + "nov", + "des" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MURs", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "mfe-mu", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mfe.js b/1.2.30/i18n/angular-locale_mfe.js new file mode 100644 index 0000000000..d125b5afde --- /dev/null +++ b/1.2.30/i18n/angular-locale_mfe.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "dimans", + "lindi", + "mardi", + "merkredi", + "zedi", + "vandredi", + "samdi" + ], + "MONTH": [ + "zanvie", + "fevriye", + "mars", + "avril", + "me", + "zin", + "zilye", + "out", + "septam", + "oktob", + "novam", + "desam" + ], + "SHORTDAY": [ + "dim", + "lin", + "mar", + "mer", + "ze", + "van", + "sam" + ], + "SHORTMONTH": [ + "zan", + "fev", + "mar", + "avr", + "me", + "zin", + "zil", + "out", + "sep", + "okt", + "nov", + "des" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MURs", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "mfe", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mg-mg.js b/1.2.30/i18n/angular-locale_mg-mg.js new file mode 100644 index 0000000000..1a92137eca --- /dev/null +++ b/1.2.30/i18n/angular-locale_mg-mg.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Alahady", + "Alatsinainy", + "Talata", + "Alarobia", + "Alakamisy", + "Zoma", + "Asabotsy" + ], + "MONTH": [ + "Janoary", + "Febroary", + "Martsa", + "Aprily", + "Mey", + "Jona", + "Jolay", + "Aogositra", + "Septambra", + "Oktobra", + "Novambra", + "Desambra" + ], + "SHORTDAY": [ + "Alah", + "Alats", + "Tal", + "Alar", + "Alak", + "Zom", + "Asab" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Mey", + "Jon", + "Jol", + "Aog", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ar", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "mg-mg", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mg.js b/1.2.30/i18n/angular-locale_mg.js new file mode 100644 index 0000000000..07b87bb193 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mg.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Alahady", + "Alatsinainy", + "Talata", + "Alarobia", + "Alakamisy", + "Zoma", + "Asabotsy" + ], + "MONTH": [ + "Janoary", + "Febroary", + "Martsa", + "Aprily", + "Mey", + "Jona", + "Jolay", + "Aogositra", + "Septambra", + "Oktobra", + "Novambra", + "Desambra" + ], + "SHORTDAY": [ + "Alah", + "Alats", + "Tal", + "Alar", + "Alak", + "Zom", + "Asab" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Mey", + "Jon", + "Jol", + "Aog", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ar", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "mg", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mgh-mz.js b/1.2.30/i18n/angular-locale_mgh-mz.js new file mode 100644 index 0000000000..77e35b6640 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mgh-mz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "wichishu", + "mchochil'l" + ], + "DAY": [ + "Sabato", + "Jumatatu", + "Jumanne", + "Jumatano", + "Arahamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Mweri wo kwanza", + "Mweri wo unayeli", + "Mweri wo uneraru", + "Mweri wo unecheshe", + "Mweri wo unethanu", + "Mweri wo thanu na mocha", + "Mweri wo saba", + "Mweri wo nane", + "Mweri wo tisa", + "Mweri wo kumi", + "Mweri wo kumi na moja", + "Mweri wo kumi na yel'li" + ], + "SHORTDAY": [ + "Sab", + "Jtt", + "Jnn", + "Jtn", + "Ara", + "Iju", + "Jmo" + ], + "SHORTMONTH": [ + "Kwa", + "Una", + "Rar", + "Che", + "Tha", + "Moc", + "Sab", + "Nan", + "Tis", + "Kum", + "Moj", + "Yel" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MTn", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "mgh-mz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mgh.js b/1.2.30/i18n/angular-locale_mgh.js new file mode 100644 index 0000000000..bd637858ce --- /dev/null +++ b/1.2.30/i18n/angular-locale_mgh.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "wichishu", + "mchochil'l" + ], + "DAY": [ + "Sabato", + "Jumatatu", + "Jumanne", + "Jumatano", + "Arahamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Mweri wo kwanza", + "Mweri wo unayeli", + "Mweri wo uneraru", + "Mweri wo unecheshe", + "Mweri wo unethanu", + "Mweri wo thanu na mocha", + "Mweri wo saba", + "Mweri wo nane", + "Mweri wo tisa", + "Mweri wo kumi", + "Mweri wo kumi na moja", + "Mweri wo kumi na yel'li" + ], + "SHORTDAY": [ + "Sab", + "Jtt", + "Jnn", + "Jtn", + "Ara", + "Iju", + "Jmo" + ], + "SHORTMONTH": [ + "Kwa", + "Una", + "Rar", + "Che", + "Tha", + "Moc", + "Sab", + "Nan", + "Tis", + "Kum", + "Moj", + "Yel" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MTn", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "mgh", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mgo-cm.js b/1.2.30/i18n/angular-locale_mgo-cm.js new file mode 100644 index 0000000000..6ba976989c --- /dev/null +++ b/1.2.30/i18n/angular-locale_mgo-cm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Aneg 1", + "Aneg 2", + "Aneg 3", + "Aneg 4", + "Aneg 5", + "Aneg 6", + "Aneg 7" + ], + "MONTH": [ + "im\u0259g mbegtug", + "imeg \u00e0b\u00f9b\u00ec", + "imeg mb\u0259\u014bchubi", + "im\u0259g ngw\u0259\u0300t", + "im\u0259g fog", + "im\u0259g ichiib\u0254d", + "im\u0259g \u00e0d\u00f9mb\u0259\u0300\u014b", + "im\u0259g ichika", + "im\u0259g kud", + "im\u0259g t\u00e8si\u02bce", + "im\u0259g z\u00f2", + "im\u0259g krizmed" + ], + "SHORTDAY": [ + "Aneg 1", + "Aneg 2", + "Aneg 3", + "Aneg 4", + "Aneg 5", + "Aneg 6", + "Aneg 7" + ], + "SHORTMONTH": [ + "mbegtug", + "imeg \u00e0b\u00f9b\u00ec", + "imeg mb\u0259\u014bchubi", + "im\u0259g ngw\u0259\u0300t", + "im\u0259g fog", + "im\u0259g ichiib\u0254d", + "im\u0259g \u00e0d\u00f9mb\u0259\u0300\u014b", + "im\u0259g ichika", + "im\u0259g kud", + "im\u0259g t\u00e8si\u02bce", + "im\u0259g z\u00f2", + "im\u0259g krizmed" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "mgo-cm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mgo.js b/1.2.30/i18n/angular-locale_mgo.js new file mode 100644 index 0000000000..8678d1cda8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mgo.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Aneg 1", + "Aneg 2", + "Aneg 3", + "Aneg 4", + "Aneg 5", + "Aneg 6", + "Aneg 7" + ], + "MONTH": [ + "im\u0259g mbegtug", + "imeg \u00e0b\u00f9b\u00ec", + "imeg mb\u0259\u014bchubi", + "im\u0259g ngw\u0259\u0300t", + "im\u0259g fog", + "im\u0259g ichiib\u0254d", + "im\u0259g \u00e0d\u00f9mb\u0259\u0300\u014b", + "im\u0259g ichika", + "im\u0259g kud", + "im\u0259g t\u00e8si\u02bce", + "im\u0259g z\u00f2", + "im\u0259g krizmed" + ], + "SHORTDAY": [ + "Aneg 1", + "Aneg 2", + "Aneg 3", + "Aneg 4", + "Aneg 5", + "Aneg 6", + "Aneg 7" + ], + "SHORTMONTH": [ + "mbegtug", + "imeg \u00e0b\u00f9b\u00ec", + "imeg mb\u0259\u014bchubi", + "im\u0259g ngw\u0259\u0300t", + "im\u0259g fog", + "im\u0259g ichiib\u0254d", + "im\u0259g \u00e0d\u00f9mb\u0259\u0300\u014b", + "im\u0259g ichika", + "im\u0259g kud", + "im\u0259g t\u00e8si\u02bce", + "im\u0259g z\u00f2", + "im\u0259g krizmed" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "mgo", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mk-mk.js b/1.2.30/i18n/angular-locale_mk-mk.js new file mode 100644 index 0000000000..c8b9915403 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mk-mk.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u043f\u0440\u0435\u0442\u043f\u043b\u0430\u0434\u043d\u0435", + "\u043f\u043e\u043f\u043b\u0430\u0434\u043d\u0435" + ], + "DAY": [ + "\u043d\u0435\u0434\u0435\u043b\u0430", + "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a", + "\u0432\u0442\u043e\u0440\u043d\u0438\u043a", + "\u0441\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a", + "\u043f\u0435\u0442\u043e\u043a", + "\u0441\u0430\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0458\u0430\u043d\u0443\u0430\u0440\u0438", + "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0438\u043b", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d\u0438", + "\u0458\u0443\u043b\u0438", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438", + "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438", + "\u043d\u043e\u0435\u043c\u0432\u0440\u0438", + "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438" + ], + "SHORTDAY": [ + "\u043d\u0435\u0434.", + "\u043f\u043e\u043d.", + "\u0432\u0442.", + "\u0441\u0440\u0435.", + "\u0447\u0435\u0442.", + "\u043f\u0435\u0442.", + "\u0441\u0430\u0431." + ], + "SHORTMONTH": [ + "\u0458\u0430\u043d.", + "\u0444\u0435\u0432.", + "\u043c\u0430\u0440.", + "\u0430\u043f\u0440.", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d.", + "\u0458\u0443\u043b.", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043f\u0442.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u0435\u043c.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, dd MMMM y '\u0433'.", + "longDate": "dd MMMM y '\u0433'.", + "medium": "dd.M.y HH:mm:ss", + "mediumDate": "dd.M.y", + "mediumTime": "HH:mm:ss", + "short": "dd.M.yy HH:mm", + "shortDate": "dd.M.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "mk-mk", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 || vf.f % 10 == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mk.js b/1.2.30/i18n/angular-locale_mk.js new file mode 100644 index 0000000000..cff0b655cf --- /dev/null +++ b/1.2.30/i18n/angular-locale_mk.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u043f\u0440\u0435\u0442\u043f\u043b\u0430\u0434\u043d\u0435", + "\u043f\u043e\u043f\u043b\u0430\u0434\u043d\u0435" + ], + "DAY": [ + "\u043d\u0435\u0434\u0435\u043b\u0430", + "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a", + "\u0432\u0442\u043e\u0440\u043d\u0438\u043a", + "\u0441\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a", + "\u043f\u0435\u0442\u043e\u043a", + "\u0441\u0430\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0458\u0430\u043d\u0443\u0430\u0440\u0438", + "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0438\u043b", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d\u0438", + "\u0458\u0443\u043b\u0438", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438", + "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438", + "\u043d\u043e\u0435\u043c\u0432\u0440\u0438", + "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438" + ], + "SHORTDAY": [ + "\u043d\u0435\u0434.", + "\u043f\u043e\u043d.", + "\u0432\u0442.", + "\u0441\u0440\u0435.", + "\u0447\u0435\u0442.", + "\u043f\u0435\u0442.", + "\u0441\u0430\u0431." + ], + "SHORTMONTH": [ + "\u0458\u0430\u043d.", + "\u0444\u0435\u0432.", + "\u043c\u0430\u0440.", + "\u0430\u043f\u0440.", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d.", + "\u0458\u0443\u043b.", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043f\u0442.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u0435\u043c.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, dd MMMM y '\u0433'.", + "longDate": "dd MMMM y '\u0433'.", + "medium": "dd.M.y HH:mm:ss", + "mediumDate": "dd.M.y", + "mediumTime": "HH:mm:ss", + "short": "dd.M.yy HH:mm", + "shortDate": "dd.M.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "mk", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 || vf.f % 10 == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ml-in.js b/1.2.30/i18n/angular-locale_ml-in.js new file mode 100644 index 0000000000..ccbfc2af76 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ml-in.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u200c\u0d1a", + "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u200c\u0d1a", + "\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a", + "\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u200c\u0d1a", + "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u200c\u0d1a", + "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u200c\u0d1a", + "\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u200c\u0d1a" + ], + "MONTH": [ + "\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f", + "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f", + "\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d", + "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d", + "\u0d2e\u0d47\u0d2f\u0d4d", + "\u0d1c\u0d42\u0d7a", + "\u0d1c\u0d42\u0d32\u0d48", + "\u0d06\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d", + "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c", + "\u0d12\u0d15\u0d4d\u200c\u0d1f\u0d4b\u0d2c\u0d7c", + "\u0d28\u0d35\u0d02\u0d2c\u0d7c", + "\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c" + ], + "SHORTDAY": [ + "\u0d1e\u0d3e\u0d2f\u0d7c", + "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e", + "\u0d1a\u0d4a\u0d35\u0d4d\u0d35", + "\u0d2c\u0d41\u0d27\u0d7b", + "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02", + "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f", + "\u0d36\u0d28\u0d3f" + ], + "SHORTMONTH": [ + "\u0d1c\u0d28\u0d41", + "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41", + "\u0d2e\u0d3e\u0d7c", + "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f", + "\u0d2e\u0d47\u0d2f\u0d4d", + "\u0d1c\u0d42\u0d7a", + "\u0d1c\u0d42\u0d32\u0d48", + "\u0d13\u0d17", + "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02", + "\u0d12\u0d15\u0d4d\u0d1f\u0d4b", + "\u0d28\u0d35\u0d02", + "\u0d21\u0d3f\u0d38\u0d02" + ], + "fullDate": "y, MMMM d, EEEE", + "longDate": "y, MMMM d", + "medium": "y, MMM d h:mm:ss a", + "mediumDate": "y, MMM d", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "ml-in", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ml.js b/1.2.30/i18n/angular-locale_ml.js new file mode 100644 index 0000000000..5af4c966ae --- /dev/null +++ b/1.2.30/i18n/angular-locale_ml.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u200c\u0d1a", + "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u200c\u0d1a", + "\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a", + "\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u200c\u0d1a", + "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u200c\u0d1a", + "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u200c\u0d1a", + "\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u200c\u0d1a" + ], + "MONTH": [ + "\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f", + "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f", + "\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d", + "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d", + "\u0d2e\u0d47\u0d2f\u0d4d", + "\u0d1c\u0d42\u0d7a", + "\u0d1c\u0d42\u0d32\u0d48", + "\u0d06\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d", + "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c", + "\u0d12\u0d15\u0d4d\u200c\u0d1f\u0d4b\u0d2c\u0d7c", + "\u0d28\u0d35\u0d02\u0d2c\u0d7c", + "\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c" + ], + "SHORTDAY": [ + "\u0d1e\u0d3e\u0d2f\u0d7c", + "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e", + "\u0d1a\u0d4a\u0d35\u0d4d\u0d35", + "\u0d2c\u0d41\u0d27\u0d7b", + "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02", + "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f", + "\u0d36\u0d28\u0d3f" + ], + "SHORTMONTH": [ + "\u0d1c\u0d28\u0d41", + "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41", + "\u0d2e\u0d3e\u0d7c", + "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f", + "\u0d2e\u0d47\u0d2f\u0d4d", + "\u0d1c\u0d42\u0d7a", + "\u0d1c\u0d42\u0d32\u0d48", + "\u0d13\u0d17", + "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02", + "\u0d12\u0d15\u0d4d\u0d1f\u0d4b", + "\u0d28\u0d35\u0d02", + "\u0d21\u0d3f\u0d38\u0d02" + ], + "fullDate": "y, MMMM d, EEEE", + "longDate": "y, MMMM d", + "medium": "y, MMM d h:mm:ss a", + "mediumDate": "y, MMM d", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "ml", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mn-cyrl-mn.js b/1.2.30/i18n/angular-locale_mn-cyrl-mn.js new file mode 100644 index 0000000000..c883f1e856 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mn-cyrl-mn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u04ae\u04e8", + "\u04ae\u0425" + ], + "DAY": [ + "\u043d\u044f\u043c", + "\u0434\u0430\u0432\u0430\u0430", + "\u043c\u044f\u0433\u043c\u0430\u0440", + "\u043b\u0445\u0430\u0433\u0432\u0430", + "\u043f\u04af\u0440\u044d\u0432", + "\u0431\u0430\u0430\u0441\u0430\u043d", + "\u0431\u044f\u043c\u0431\u0430" + ], + "MONTH": [ + "\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440", + "\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440", + "\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440", + "\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440", + "\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440" + ], + "SHORTDAY": [ + "\u041d\u044f", + "\u0414\u0430", + "\u041c\u044f", + "\u041b\u0445", + "\u041f\u04af", + "\u0411\u0430", + "\u0411\u044f" + ], + "SHORTMONTH": [ + "1-\u0440 \u0441\u0430\u0440", + "2-\u0440 \u0441\u0430\u0440", + "3-\u0440 \u0441\u0430\u0440", + "4-\u0440 \u0441\u0430\u0440", + "5-\u0440 \u0441\u0430\u0440", + "6-\u0440 \u0441\u0430\u0440", + "7-\u0440 \u0441\u0430\u0440", + "8-\u0440 \u0441\u0430\u0440", + "9-\u0440 \u0441\u0430\u0440", + "10-\u0440 \u0441\u0430\u0440", + "11-\u0440 \u0441\u0430\u0440", + "12-\u0440 \u0441\u0430\u0440" + ], + "fullDate": "EEEE, y '\u043e\u043d\u044b' MMMM '\u0441\u0430\u0440\u044b\u043d' dd", + "longDate": "y '\u043e\u043d\u044b' MMMM '\u0441\u0430\u0440\u044b\u043d' d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ae", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "mn-cyrl-mn", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mn-cyrl.js b/1.2.30/i18n/angular-locale_mn-cyrl.js new file mode 100644 index 0000000000..f43776b909 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mn-cyrl.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u04ae\u04e8", + "\u04ae\u0425" + ], + "DAY": [ + "\u043d\u044f\u043c", + "\u0434\u0430\u0432\u0430\u0430", + "\u043c\u044f\u0433\u043c\u0430\u0440", + "\u043b\u0445\u0430\u0433\u0432\u0430", + "\u043f\u04af\u0440\u044d\u0432", + "\u0431\u0430\u0430\u0441\u0430\u043d", + "\u0431\u044f\u043c\u0431\u0430" + ], + "MONTH": [ + "\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440", + "\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440", + "\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440", + "\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440", + "\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440" + ], + "SHORTDAY": [ + "\u041d\u044f", + "\u0414\u0430", + "\u041c\u044f", + "\u041b\u0445", + "\u041f\u04af", + "\u0411\u0430", + "\u0411\u044f" + ], + "SHORTMONTH": [ + "1-\u0440 \u0441\u0430\u0440", + "2-\u0440 \u0441\u0430\u0440", + "3-\u0440 \u0441\u0430\u0440", + "4-\u0440 \u0441\u0430\u0440", + "5-\u0440 \u0441\u0430\u0440", + "6-\u0440 \u0441\u0430\u0440", + "7-\u0440 \u0441\u0430\u0440", + "8-\u0440 \u0441\u0430\u0440", + "9-\u0440 \u0441\u0430\u0440", + "10-\u0440 \u0441\u0430\u0440", + "11-\u0440 \u0441\u0430\u0440", + "12-\u0440 \u0441\u0430\u0440" + ], + "fullDate": "EEEE, y '\u043e\u043d\u044b' MMMM '\u0441\u0430\u0440\u044b\u043d' dd", + "longDate": "y '\u043e\u043d\u044b' MMMM '\u0441\u0430\u0440\u044b\u043d' d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "mn-cyrl", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mn.js b/1.2.30/i18n/angular-locale_mn.js new file mode 100644 index 0000000000..b6f988c8b5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u04ae\u04e8", + "\u04ae\u0425" + ], + "DAY": [ + "\u043d\u044f\u043c", + "\u0434\u0430\u0432\u0430\u0430", + "\u043c\u044f\u0433\u043c\u0430\u0440", + "\u043b\u0445\u0430\u0433\u0432\u0430", + "\u043f\u04af\u0440\u044d\u0432", + "\u0431\u0430\u0430\u0441\u0430\u043d", + "\u0431\u044f\u043c\u0431\u0430" + ], + "MONTH": [ + "\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440", + "\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440", + "\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440", + "\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440", + "\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440", + "\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440" + ], + "SHORTDAY": [ + "\u041d\u044f", + "\u0414\u0430", + "\u041c\u044f", + "\u041b\u0445", + "\u041f\u04af", + "\u0411\u0430", + "\u0411\u044f" + ], + "SHORTMONTH": [ + "1-\u0440 \u0441\u0430\u0440", + "2-\u0440 \u0441\u0430\u0440", + "3-\u0440 \u0441\u0430\u0440", + "4-\u0440 \u0441\u0430\u0440", + "5-\u0440 \u0441\u0430\u0440", + "6-\u0440 \u0441\u0430\u0440", + "7-\u0440 \u0441\u0430\u0440", + "8-\u0440 \u0441\u0430\u0440", + "9-\u0440 \u0441\u0430\u0440", + "10-\u0440 \u0441\u0430\u0440", + "11-\u0440 \u0441\u0430\u0440", + "12-\u0440 \u0441\u0430\u0440" + ], + "fullDate": "EEEE, y '\u043e\u043d\u044b' MMMM '\u0441\u0430\u0440\u044b\u043d' dd", + "longDate": "y '\u043e\u043d\u044b' MMMM '\u0441\u0430\u0440\u044b\u043d' d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ae", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "mn", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mr-in.js b/1.2.30/i18n/angular-locale_mr-in.js new file mode 100644 index 0000000000..2bd8c402d1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mr-in.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "[AM]", + "[PM]" + ], + "DAY": [ + "\u0930\u0935\u093f\u0935\u093e\u0930", + "\u0938\u094b\u092e\u0935\u093e\u0930", + "\u092e\u0902\u0917\u0933\u0935\u093e\u0930", + "\u092c\u0941\u0927\u0935\u093e\u0930", + "\u0917\u0941\u0930\u0941\u0935\u093e\u0930", + "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930", + "\u0936\u0928\u093f\u0935\u093e\u0930" + ], + "MONTH": [ + "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940", + "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940", + "\u092e\u093e\u0930\u094d\u091a", + "\u090f\u092a\u094d\u0930\u093f\u0932", + "\u092e\u0947", + "\u091c\u0942\u0928", + "\u091c\u0941\u0932\u0948", + "\u0911\u0917\u0938\u094d\u091f", + "\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930", + "\u0911\u0915\u094d\u091f\u094b\u092c\u0930", + "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930", + "\u0921\u093f\u0938\u0947\u0902\u092c\u0930" + ], + "SHORTDAY": [ + "\u0930\u0935\u093f", + "\u0938\u094b\u092e", + "\u092e\u0902\u0917\u0933", + "\u092c\u0941\u0927", + "\u0917\u0941\u0930\u0941", + "\u0936\u0941\u0915\u094d\u0930", + "\u0936\u0928\u093f" + ], + "SHORTMONTH": [ + "\u091c\u093e\u0928\u0947", + "\u092b\u0947\u092c\u094d\u0930\u0941", + "\u092e\u093e\u0930\u094d\u091a", + "\u090f\u092a\u094d\u0930\u093f", + "\u092e\u0947", + "\u091c\u0942\u0928", + "\u091c\u0941\u0932\u0948", + "\u0911\u0917", + "\u0938\u092a\u094d\u091f\u0947\u0902", + "\u0911\u0915\u094d\u091f\u094b", + "\u0928\u094b\u0935\u094d\u0939\u0947\u0902", + "\u0921\u093f\u0938\u0947\u0902" + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y h:mm:ss a", + "mediumDate": "d MMM, y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "mr-in", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mr.js b/1.2.30/i18n/angular-locale_mr.js new file mode 100644 index 0000000000..9962b64bb2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mr.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "[AM]", + "[PM]" + ], + "DAY": [ + "\u0930\u0935\u093f\u0935\u093e\u0930", + "\u0938\u094b\u092e\u0935\u093e\u0930", + "\u092e\u0902\u0917\u0933\u0935\u093e\u0930", + "\u092c\u0941\u0927\u0935\u093e\u0930", + "\u0917\u0941\u0930\u0941\u0935\u093e\u0930", + "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930", + "\u0936\u0928\u093f\u0935\u093e\u0930" + ], + "MONTH": [ + "\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940", + "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940", + "\u092e\u093e\u0930\u094d\u091a", + "\u090f\u092a\u094d\u0930\u093f\u0932", + "\u092e\u0947", + "\u091c\u0942\u0928", + "\u091c\u0941\u0932\u0948", + "\u0911\u0917\u0938\u094d\u091f", + "\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930", + "\u0911\u0915\u094d\u091f\u094b\u092c\u0930", + "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930", + "\u0921\u093f\u0938\u0947\u0902\u092c\u0930" + ], + "SHORTDAY": [ + "\u0930\u0935\u093f", + "\u0938\u094b\u092e", + "\u092e\u0902\u0917\u0933", + "\u092c\u0941\u0927", + "\u0917\u0941\u0930\u0941", + "\u0936\u0941\u0915\u094d\u0930", + "\u0936\u0928\u093f" + ], + "SHORTMONTH": [ + "\u091c\u093e\u0928\u0947", + "\u092b\u0947\u092c\u094d\u0930\u0941", + "\u092e\u093e\u0930\u094d\u091a", + "\u090f\u092a\u094d\u0930\u093f", + "\u092e\u0947", + "\u091c\u0942\u0928", + "\u091c\u0941\u0932\u0948", + "\u0911\u0917", + "\u0938\u092a\u094d\u091f\u0947\u0902", + "\u0911\u0915\u094d\u091f\u094b", + "\u0928\u094b\u0935\u094d\u0939\u0947\u0902", + "\u0921\u093f\u0938\u0947\u0902" + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y h:mm:ss a", + "mediumDate": "d MMM, y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "mr", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ms-bn.js b/1.2.30/i18n/angular-locale_ms-bn.js new file mode 100644 index 0000000000..cd32b5607a --- /dev/null +++ b/1.2.30/i18n/angular-locale_ms-bn.js @@ -0,0 +1,99 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "PG", + "PTG" + ], + "DAY": [ + "Ahad", + "Isnin", + "Selasa", + "Rabu", + "Khamis", + "Jumaat", + "Sabtu" + ], + "MONTH": [ + "Januari", + "Februari", + "Mac", + "April", + "Mei", + "Jun", + "Julai", + "Ogos", + "September", + "Oktober", + "November", + "Disember" + ], + "SHORTDAY": [ + "Ahd", + "Isn", + "Sel", + "Rab", + "Kha", + "Jum", + "Sab" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ogos", + "Sep", + "Okt", + "Nov", + "Dis" + ], + "fullDate": "dd MMMM y", + "longDate": "d MMMM y", + "medium": "dd/MM/yyyy h:mm:ss a", + "mediumDate": "dd/MM/yyyy", + "mediumTime": "h:mm:ss a", + "short": "d/MM/yy h:mm a", + "shortDate": "d/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "RM", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "macFrac": 0, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "macFrac": 0, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "(\u00a4", + "negSuf": ")", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ms-bn", + "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ms-latn-bn.js b/1.2.30/i18n/angular-locale_ms-latn-bn.js new file mode 100644 index 0000000000..faf99490d8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ms-latn-bn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "PG", + "PTG" + ], + "DAY": [ + "Ahad", + "Isnin", + "Selasa", + "Rabu", + "Khamis", + "Jumaat", + "Sabtu" + ], + "MONTH": [ + "Januari", + "Februari", + "Mac", + "April", + "Mei", + "Jun", + "Julai", + "Ogos", + "September", + "Oktober", + "November", + "Disember" + ], + "SHORTDAY": [ + "Ahd", + "Isn", + "Sel", + "Rab", + "Kha", + "Jum", + "Sab" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ogo", + "Sep", + "Okt", + "Nov", + "Dis" + ], + "fullDate": "dd MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/MM/yy h:mm a", + "shortDate": "d/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ms-latn-bn", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ms-latn-my.js b/1.2.30/i18n/angular-locale_ms-latn-my.js new file mode 100644 index 0000000000..8a784bcf1b --- /dev/null +++ b/1.2.30/i18n/angular-locale_ms-latn-my.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "PG", + "PTG" + ], + "DAY": [ + "Ahad", + "Isnin", + "Selasa", + "Rabu", + "Khamis", + "Jumaat", + "Sabtu" + ], + "MONTH": [ + "Januari", + "Februari", + "Mac", + "April", + "Mei", + "Jun", + "Julai", + "Ogos", + "September", + "Oktober", + "November", + "Disember" + ], + "SHORTDAY": [ + "Ahd", + "Isn", + "Sel", + "Rab", + "Kha", + "Jum", + "Sab" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ogo", + "Sep", + "Okt", + "Nov", + "Dis" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/MM/yy h:mm a", + "shortDate": "d/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "RM", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ms-latn-my", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ms-latn-sg.js b/1.2.30/i18n/angular-locale_ms-latn-sg.js new file mode 100644 index 0000000000..1667051e4d --- /dev/null +++ b/1.2.30/i18n/angular-locale_ms-latn-sg.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "PG", + "PTG" + ], + "DAY": [ + "Ahad", + "Isnin", + "Selasa", + "Rabu", + "Khamis", + "Jumaat", + "Sabtu" + ], + "MONTH": [ + "Januari", + "Februari", + "Mac", + "April", + "Mei", + "Jun", + "Julai", + "Ogos", + "September", + "Oktober", + "November", + "Disember" + ], + "SHORTDAY": [ + "Ahd", + "Isn", + "Sel", + "Rab", + "Kha", + "Jum", + "Sab" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ogo", + "Sep", + "Okt", + "Nov", + "Dis" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/MM/yy h:mm a", + "shortDate": "d/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ms-latn-sg", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ms-latn.js b/1.2.30/i18n/angular-locale_ms-latn.js new file mode 100644 index 0000000000..45107c20cd --- /dev/null +++ b/1.2.30/i18n/angular-locale_ms-latn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "PG", + "PTG" + ], + "DAY": [ + "Ahad", + "Isnin", + "Selasa", + "Rabu", + "Khamis", + "Jumaat", + "Sabtu" + ], + "MONTH": [ + "Januari", + "Februari", + "Mac", + "April", + "Mei", + "Jun", + "Julai", + "Ogos", + "September", + "Oktober", + "November", + "Disember" + ], + "SHORTDAY": [ + "Ahd", + "Isn", + "Sel", + "Rab", + "Kha", + "Jum", + "Sab" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ogo", + "Sep", + "Okt", + "Nov", + "Dis" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/MM/yy h:mm a", + "shortDate": "d/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ms-latn", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ms-my.js b/1.2.30/i18n/angular-locale_ms-my.js new file mode 100644 index 0000000000..6f91161ee2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ms-my.js @@ -0,0 +1,99 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "PG", + "PTG" + ], + "DAY": [ + "Ahad", + "Isnin", + "Selasa", + "Rabu", + "Khamis", + "Jumaat", + "Sabtu" + ], + "MONTH": [ + "Januari", + "Februari", + "Mac", + "April", + "Mei", + "Jun", + "Julai", + "Ogos", + "September", + "Oktober", + "November", + "Disember" + ], + "SHORTDAY": [ + "Ahd", + "Isn", + "Sel", + "Rab", + "Kha", + "Jum", + "Sab" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ogos", + "Sep", + "Okt", + "Nov", + "Dis" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "dd/MM/yyyy h:mm:ss a", + "mediumDate": "dd/MM/yyyy", + "mediumTime": "h:mm:ss a", + "short": "d/MM/yy h:mm a", + "shortDate": "d/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "RM", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "macFrac": 0, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "macFrac": 0, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "(\u00a4", + "negSuf": ")", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ms-my", + "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ms.js b/1.2.30/i18n/angular-locale_ms.js new file mode 100644 index 0000000000..499e39d02d --- /dev/null +++ b/1.2.30/i18n/angular-locale_ms.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "PG", + "PTG" + ], + "DAY": [ + "Ahad", + "Isnin", + "Selasa", + "Rabu", + "Khamis", + "Jumaat", + "Sabtu" + ], + "MONTH": [ + "Januari", + "Februari", + "Mac", + "April", + "Mei", + "Jun", + "Julai", + "Ogos", + "September", + "Oktober", + "November", + "Disember" + ], + "SHORTDAY": [ + "Ahd", + "Isn", + "Sel", + "Rab", + "Kha", + "Jum", + "Sab" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ogo", + "Sep", + "Okt", + "Nov", + "Dis" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/MM/yy h:mm a", + "shortDate": "d/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "RM", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ms", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mt-mt.js b/1.2.30/i18n/angular-locale_mt-mt.js new file mode 100644 index 0000000000..7192e38983 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mt-mt.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "QN", + "WN" + ], + "DAY": [ + "Il-\u0126add", + "It-Tnejn", + "It-Tlieta", + "L-Erbg\u0127a", + "Il-\u0126amis", + "Il-\u0120img\u0127a", + "Is-Sibt" + ], + "MONTH": [ + "Jannar", + "Frar", + "Marzu", + "April", + "Mejju", + "\u0120unju", + "Lulju", + "Awwissu", + "Settembru", + "Ottubru", + "Novembru", + "Di\u010bembru" + ], + "SHORTDAY": [ + "\u0126ad", + "Tne", + "Tli", + "Erb", + "\u0126am", + "\u0120im", + "Sib" + ], + "SHORTMONTH": [ + "Jan", + "Fra", + "Mar", + "Apr", + "Mej", + "\u0120un", + "Lul", + "Aww", + "Set", + "Ott", + "Nov", + "Di\u010b" + ], + "fullDate": "EEEE, d 'ta'\u2019 MMMM y", + "longDate": "d 'ta'\u2019 MMMM y", + "medium": "dd MMM y HH:mm:ss", + "mediumDate": "dd MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "mt-mt", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 0 || n % 100 >= 2 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 19) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mt.js b/1.2.30/i18n/angular-locale_mt.js new file mode 100644 index 0000000000..8e753dcc02 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mt.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "QN", + "WN" + ], + "DAY": [ + "Il-\u0126add", + "It-Tnejn", + "It-Tlieta", + "L-Erbg\u0127a", + "Il-\u0126amis", + "Il-\u0120img\u0127a", + "Is-Sibt" + ], + "MONTH": [ + "Jannar", + "Frar", + "Marzu", + "April", + "Mejju", + "\u0120unju", + "Lulju", + "Awwissu", + "Settembru", + "Ottubru", + "Novembru", + "Di\u010bembru" + ], + "SHORTDAY": [ + "\u0126ad", + "Tne", + "Tli", + "Erb", + "\u0126am", + "\u0120im", + "Sib" + ], + "SHORTMONTH": [ + "Jan", + "Fra", + "Mar", + "Apr", + "Mej", + "\u0120un", + "Lul", + "Aww", + "Set", + "Ott", + "Nov", + "Di\u010b" + ], + "fullDate": "EEEE, d 'ta'\u2019 MMMM y", + "longDate": "d 'ta'\u2019 MMMM y", + "medium": "dd MMM y HH:mm:ss", + "mediumDate": "dd MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "mt", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 0 || n % 100 >= 2 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n % 100 >= 11 && n % 100 <= 19) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mua-cm.js b/1.2.30/i18n/angular-locale_mua-cm.js new file mode 100644 index 0000000000..9db1b3ac15 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mua-cm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "comme", + "lilli" + ], + "DAY": [ + "Com'yakke", + "Comlaa\u0257ii", + "Comzyii\u0257ii", + "Comkolle", + "Comkald\u01dd\u0253lii", + "Comgaisuu", + "Comzye\u0253suu" + ], + "MONTH": [ + "F\u0129i Loo", + "Cokcwakla\u014bne", + "Cokcwaklii", + "F\u0129i Marfoo", + "Mad\u01dd\u01dduut\u01ddbija\u014b", + "Mam\u01dd\u014bgw\u00e3afahbii", + "Mam\u01dd\u014bgw\u00e3alii", + "Mad\u01ddmbii", + "F\u0129i D\u01dd\u0253lii", + "F\u0129i Munda\u014b", + "F\u0129i Gwahlle", + "F\u0129i Yuru" + ], + "SHORTDAY": [ + "Cya", + "Cla", + "Czi", + "Cko", + "Cka", + "Cga", + "Cze" + ], + "SHORTMONTH": [ + "FLO", + "CLA", + "CKI", + "FMF", + "MAD", + "MBI", + "MLI", + "MAM", + "FDE", + "FMU", + "FGW", + "FYU" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "mua-cm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_mua.js b/1.2.30/i18n/angular-locale_mua.js new file mode 100644 index 0000000000..c13b836894 --- /dev/null +++ b/1.2.30/i18n/angular-locale_mua.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "comme", + "lilli" + ], + "DAY": [ + "Com'yakke", + "Comlaa\u0257ii", + "Comzyii\u0257ii", + "Comkolle", + "Comkald\u01dd\u0253lii", + "Comgaisuu", + "Comzye\u0253suu" + ], + "MONTH": [ + "F\u0129i Loo", + "Cokcwakla\u014bne", + "Cokcwaklii", + "F\u0129i Marfoo", + "Mad\u01dd\u01dduut\u01ddbija\u014b", + "Mam\u01dd\u014bgw\u00e3afahbii", + "Mam\u01dd\u014bgw\u00e3alii", + "Mad\u01ddmbii", + "F\u0129i D\u01dd\u0253lii", + "F\u0129i Munda\u014b", + "F\u0129i Gwahlle", + "F\u0129i Yuru" + ], + "SHORTDAY": [ + "Cya", + "Cla", + "Czi", + "Cko", + "Cka", + "Cga", + "Cze" + ], + "SHORTMONTH": [ + "FLO", + "CLA", + "CKI", + "FMF", + "MAD", + "MBI", + "MLI", + "MAM", + "FDE", + "FMU", + "FGW", + "FYU" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "mua", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_my-mm.js b/1.2.30/i18n/angular-locale_my-mm.js new file mode 100644 index 0000000000..e70271ae4d --- /dev/null +++ b/1.2.30/i18n/angular-locale_my-mm.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u1014\u1036\u1014\u1000\u103a", + "\u100a\u1014\u1031" + ], + "DAY": [ + "\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031", + "\u1010\u1014\u1004\u103a\u1039\u101c\u102c", + "\u1021\u1004\u103a\u1039\u1002\u102b", + "\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038", + "\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038", + "\u101e\u1031\u102c\u1000\u103c\u102c", + "\u1005\u1014\u1031" + ], + "MONTH": [ + "\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e", + "\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e", + "\u1019\u1010\u103a", + "\u1027\u1015\u103c\u102e", + "\u1019\u1031", + "\u1007\u103d\u1014\u103a", + "\u1007\u1030\u101c\u102d\u102f\u1004\u103a", + "\u1029\u1002\u102f\u1010\u103a", + "\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c", + "\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c", + "\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c", + "\u1012\u102e\u1007\u1004\u103a\u1018\u102c" + ], + "SHORTDAY": [ + "\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031", + "\u1010\u1014\u1004\u103a\u1039\u101c\u102c", + "\u1021\u1004\u103a\u1039\u1002\u102b", + "\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038", + "\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038", + "\u101e\u1031\u102c\u1000\u103c\u102c", + "\u1005\u1014\u1031" + ], + "SHORTMONTH": [ + "\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e", + "\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e", + "\u1019\u1010\u103a", + "\u1027\u1015\u103c\u102e", + "\u1019\u1031", + "\u1007\u103d\u1014\u103a", + "\u1007\u1030\u101c\u102d\u102f\u1004\u103a", + "\u1029\u1002\u102f\u1010\u103a", + "\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c", + "\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c", + "\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c", + "\u1012\u102e\u1007\u1004\u103a\u1018\u102c" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "K", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "my-mm", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_my.js b/1.2.30/i18n/angular-locale_my.js new file mode 100644 index 0000000000..91edcee513 --- /dev/null +++ b/1.2.30/i18n/angular-locale_my.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u1014\u1036\u1014\u1000\u103a", + "\u100a\u1014\u1031" + ], + "DAY": [ + "\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031", + "\u1010\u1014\u1004\u103a\u1039\u101c\u102c", + "\u1021\u1004\u103a\u1039\u1002\u102b", + "\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038", + "\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038", + "\u101e\u1031\u102c\u1000\u103c\u102c", + "\u1005\u1014\u1031" + ], + "MONTH": [ + "\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e", + "\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e", + "\u1019\u1010\u103a", + "\u1027\u1015\u103c\u102e", + "\u1019\u1031", + "\u1007\u103d\u1014\u103a", + "\u1007\u1030\u101c\u102d\u102f\u1004\u103a", + "\u1029\u1002\u102f\u1010\u103a", + "\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c", + "\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c", + "\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c", + "\u1012\u102e\u1007\u1004\u103a\u1018\u102c" + ], + "SHORTDAY": [ + "\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031", + "\u1010\u1014\u1004\u103a\u1039\u101c\u102c", + "\u1021\u1004\u103a\u1039\u1002\u102b", + "\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038", + "\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038", + "\u101e\u1031\u102c\u1000\u103c\u102c", + "\u1005\u1014\u1031" + ], + "SHORTMONTH": [ + "\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e", + "\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e", + "\u1019\u1010\u103a", + "\u1027\u1015\u103c\u102e", + "\u1019\u1031", + "\u1007\u103d\u1014\u103a", + "\u1007\u1030\u101c\u102d\u102f\u1004\u103a", + "\u1029\u1002\u102f\u1010\u103a", + "\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c", + "\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c", + "\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c", + "\u1012\u102e\u1007\u1004\u103a\u1018\u102c" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "K", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "my", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_naq-na.js b/1.2.30/i18n/angular-locale_naq-na.js new file mode 100644 index 0000000000..1bedcfbd41 --- /dev/null +++ b/1.2.30/i18n/angular-locale_naq-na.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u01c1goagas", + "\u01c3uias" + ], + "DAY": [ + "Sontaxtsees", + "Mantaxtsees", + "Denstaxtsees", + "Wunstaxtsees", + "Dondertaxtsees", + "Fraitaxtsees", + "Satertaxtsees" + ], + "MONTH": [ + "\u01c3Khanni", + "\u01c3Khan\u01c0g\u00f4ab", + "\u01c0Khuu\u01c1kh\u00e2b", + "\u01c3H\u00f4a\u01c2khaib", + "\u01c3Khaits\u00e2b", + "Gama\u01c0aeb", + "\u01c2Khoesaob", + "Ao\u01c1khuum\u00fb\u01c1kh\u00e2b", + "Tara\u01c0khuum\u00fb\u01c1kh\u00e2b", + "\u01c2N\u00fb\u01c1n\u00e2iseb", + "\u01c0Hoo\u01c2gaeb", + "H\u00f4asore\u01c1kh\u00e2b" + ], + "SHORTDAY": [ + "Son", + "Ma", + "De", + "Wu", + "Do", + "Fr", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "naq-na", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_naq.js b/1.2.30/i18n/angular-locale_naq.js new file mode 100644 index 0000000000..ae6b4f1013 --- /dev/null +++ b/1.2.30/i18n/angular-locale_naq.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u01c1goagas", + "\u01c3uias" + ], + "DAY": [ + "Sontaxtsees", + "Mantaxtsees", + "Denstaxtsees", + "Wunstaxtsees", + "Dondertaxtsees", + "Fraitaxtsees", + "Satertaxtsees" + ], + "MONTH": [ + "\u01c3Khanni", + "\u01c3Khan\u01c0g\u00f4ab", + "\u01c0Khuu\u01c1kh\u00e2b", + "\u01c3H\u00f4a\u01c2khaib", + "\u01c3Khaits\u00e2b", + "Gama\u01c0aeb", + "\u01c2Khoesaob", + "Ao\u01c1khuum\u00fb\u01c1kh\u00e2b", + "Tara\u01c0khuum\u00fb\u01c1kh\u00e2b", + "\u01c2N\u00fb\u01c1n\u00e2iseb", + "\u01c0Hoo\u01c2gaeb", + "H\u00f4asore\u01c1kh\u00e2b" + ], + "SHORTDAY": [ + "Son", + "Ma", + "De", + "Wu", + "Do", + "Fr", + "Sat" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "naq", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nb-no.js b/1.2.30/i18n/angular-locale_nb-no.js new file mode 100644 index 0000000000..e92c0d5591 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nb-no.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "s\u00f8ndag", + "mandag", + "tirsdag", + "onsdag", + "torsdag", + "fredag", + "l\u00f8rdag" + ], + "MONTH": [ + "januar", + "februar", + "mars", + "april", + "mai", + "juni", + "juli", + "august", + "september", + "oktober", + "november", + "desember" + ], + "SHORTDAY": [ + "s\u00f8n.", + "man.", + "tir.", + "ons.", + "tor.", + "fre.", + "l\u00f8r." + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mar.", + "apr.", + "mai", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "des." + ], + "fullDate": "EEEE d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d. MMM y HH.mm.ss", + "mediumDate": "d. MMM y", + "mediumTime": "HH.mm.ss", + "short": "dd.MM.yy HH.mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "nb-no", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nb-sj.js b/1.2.30/i18n/angular-locale_nb-sj.js new file mode 100644 index 0000000000..cbf967b30a --- /dev/null +++ b/1.2.30/i18n/angular-locale_nb-sj.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "s\u00f8ndag", + "mandag", + "tirsdag", + "onsdag", + "torsdag", + "fredag", + "l\u00f8rdag" + ], + "MONTH": [ + "januar", + "februar", + "mars", + "april", + "mai", + "juni", + "juli", + "august", + "september", + "oktober", + "november", + "desember" + ], + "SHORTDAY": [ + "s\u00f8n.", + "man.", + "tir.", + "ons.", + "tor.", + "fre.", + "l\u00f8r." + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mar.", + "apr.", + "mai", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "des." + ], + "fullDate": "EEEE d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d. MMM y HH.mm.ss", + "mediumDate": "d. MMM y", + "mediumTime": "HH.mm.ss", + "short": "dd.MM.yy HH.mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "nb-sj", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nb.js b/1.2.30/i18n/angular-locale_nb.js new file mode 100644 index 0000000000..8bbc42c3df --- /dev/null +++ b/1.2.30/i18n/angular-locale_nb.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "s\u00f8ndag", + "mandag", + "tirsdag", + "onsdag", + "torsdag", + "fredag", + "l\u00f8rdag" + ], + "MONTH": [ + "januar", + "februar", + "mars", + "april", + "mai", + "juni", + "juli", + "august", + "september", + "oktober", + "november", + "desember" + ], + "SHORTDAY": [ + "s\u00f8n.", + "man.", + "tir.", + "ons.", + "tor.", + "fre.", + "l\u00f8r." + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mar.", + "apr.", + "mai", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "des." + ], + "fullDate": "EEEE d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d. MMM y HH.mm.ss", + "mediumDate": "d. MMM y", + "mediumTime": "HH.mm.ss", + "short": "dd.MM.yy HH.mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "nb", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nd-zw.js b/1.2.30/i18n/angular-locale_nd-zw.js new file mode 100644 index 0000000000..493a850402 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nd-zw.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sonto", + "Mvulo", + "Sibili", + "Sithathu", + "Sine", + "Sihlanu", + "Mgqibelo" + ], + "MONTH": [ + "Zibandlela", + "Nhlolanja", + "Mbimbitho", + "Mabasa", + "Nkwenkwezi", + "Nhlangula", + "Ntulikazi", + "Ncwabakazi", + "Mpandula", + "Mfumfu", + "Lwezi", + "Mpalakazi" + ], + "SHORTDAY": [ + "Son", + "Mvu", + "Sib", + "Sit", + "Sin", + "Sih", + "Mgq" + ], + "SHORTMONTH": [ + "Zib", + "Nhlo", + "Mbi", + "Mab", + "Nkw", + "Nhla", + "Ntu", + "Ncw", + "Mpan", + "Mfu", + "Lwe", + "Mpal" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "nd-zw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nd.js b/1.2.30/i18n/angular-locale_nd.js new file mode 100644 index 0000000000..a5139b3449 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nd.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sonto", + "Mvulo", + "Sibili", + "Sithathu", + "Sine", + "Sihlanu", + "Mgqibelo" + ], + "MONTH": [ + "Zibandlela", + "Nhlolanja", + "Mbimbitho", + "Mabasa", + "Nkwenkwezi", + "Nhlangula", + "Ntulikazi", + "Ncwabakazi", + "Mpandula", + "Mfumfu", + "Lwezi", + "Mpalakazi" + ], + "SHORTDAY": [ + "Son", + "Mvu", + "Sib", + "Sit", + "Sin", + "Sih", + "Mgq" + ], + "SHORTMONTH": [ + "Zib", + "Nhlo", + "Mbi", + "Mab", + "Nkw", + "Nhla", + "Ntu", + "Ncw", + "Mpan", + "Mfu", + "Lwe", + "Mpal" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "nd", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ne-in.js b/1.2.30/i18n/angular-locale_ne-in.js new file mode 100644 index 0000000000..179192c6cd --- /dev/null +++ b/1.2.30/i18n/angular-locale_ne-in.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u092a\u0942\u0930\u094d\u0935\u093e\u0939\u094d\u0928", + "\u0905\u092a\u0930\u093e\u0939\u094d\u0928" + ], + "DAY": [ + "\u0906\u0907\u0924\u0935\u093e\u0930", + "\u0938\u094b\u092e\u0935\u093e\u0930", + "\u092e\u0919\u094d\u0917\u0932\u0935\u093e\u0930", + "\u092c\u0941\u0927\u0935\u093e\u0930", + "\u092c\u093f\u0939\u0940\u0935\u093e\u0930", + "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930", + "\u0936\u0928\u093f\u0935\u093e\u0930" + ], + "MONTH": [ + "\u091c\u0928\u0935\u0930\u0940", + "\u092b\u0930\u0935\u0930\u0940", + "\u092e\u093e\u0930\u094d\u091a", + "\u0905\u092a\u094d\u0930\u0947\u0932", + "\u092e\u0908", + "\u091c\u0941\u0928", + "\u091c\u0941\u0932\u093e\u0908", + "\u0905\u0917\u0938\u094d\u0924", + "\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930", + "\u0905\u0915\u094d\u091f\u094b\u092c\u0930", + "\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930", + "\u0926\u093f\u0938\u092e\u094d\u092c\u0930" + ], + "SHORTDAY": [ + "\u0906\u0907\u0924", + "\u0938\u094b\u092e", + "\u092e\u0919\u094d\u0917\u0932", + "\u092c\u0941\u0927", + "\u092c\u093f\u0939\u0940", + "\u0936\u0941\u0915\u094d\u0930", + "\u0936\u0928\u093f" + ], + "SHORTMONTH": [ + "\u091c\u0928\u0935\u0930\u0940", + "\u092b\u0947\u092c\u094d\u0930\u0941\u0905\u0930\u0940", + "\u092e\u093e\u0930\u094d\u091a", + "\u0905\u092a\u094d\u0930\u093f\u0932", + "\u092e\u0947", + "\u091c\u0941\u0928", + "\u091c\u0941\u0932\u093e\u0908", + "\u0905\u0917\u0938\u094d\u091f", + "\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930", + "\u0905\u0915\u094d\u091f\u094b\u092c\u0930", + "\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930", + "\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ne-in", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ne-np.js b/1.2.30/i18n/angular-locale_ne-np.js new file mode 100644 index 0000000000..8469fcb33c --- /dev/null +++ b/1.2.30/i18n/angular-locale_ne-np.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u092a\u0942\u0930\u094d\u0935 \u092e\u0927\u094d\u092f\u093e\u0928\u094d\u0939", + "\u0909\u0924\u094d\u0924\u0930 \u092e\u0927\u094d\u092f\u093e\u0928\u094d\u0939" + ], + "DAY": [ + "\u0906\u0907\u0924\u092c\u093e\u0930", + "\u0938\u094b\u092e\u092c\u093e\u0930", + "\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930", + "\u092c\u0941\u0927\u092c\u093e\u0930", + "\u092c\u093f\u0939\u0940\u092c\u093e\u0930", + "\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930", + "\u0936\u0928\u093f\u092c\u093e\u0930" + ], + "MONTH": [ + "\u091c\u0928\u0935\u0930\u0940", + "\u092b\u0947\u092c\u094d\u0930\u0941\u0905\u0930\u0940", + "\u092e\u093e\u0930\u094d\u091a", + "\u0905\u092a\u094d\u0930\u093f\u0932", + "\u092e\u0947", + "\u091c\u0941\u0928", + "\u091c\u0941\u0932\u093e\u0908", + "\u0905\u0917\u0938\u094d\u091f", + "\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930", + "\u0905\u0915\u094d\u091f\u094b\u092c\u0930", + "\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930", + "\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930" + ], + "SHORTDAY": [ + "\u0906\u0907\u0924", + "\u0938\u094b\u092e", + "\u092e\u0919\u094d\u0917\u0932", + "\u092c\u0941\u0927", + "\u092c\u093f\u0939\u0940", + "\u0936\u0941\u0915\u094d\u0930", + "\u0936\u0928\u093f" + ], + "SHORTMONTH": [ + "\u091c\u0928\u0935\u0930\u0940", + "\u092b\u0947\u092c\u094d\u0930\u0941\u0905\u0930\u0940", + "\u092e\u093e\u0930\u094d\u091a", + "\u0905\u092a\u094d\u0930\u093f\u0932", + "\u092e\u0947", + "\u091c\u0941\u0928", + "\u091c\u0941\u0932\u093e\u0908", + "\u0905\u0917\u0938\u094d\u091f", + "\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930", + "\u0905\u0915\u094d\u091f\u094b\u092c\u0930", + "\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930", + "\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rs", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ne-np", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ne.js b/1.2.30/i18n/angular-locale_ne.js new file mode 100644 index 0000000000..941cd3ddeb --- /dev/null +++ b/1.2.30/i18n/angular-locale_ne.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u092a\u0942\u0930\u094d\u0935 \u092e\u0927\u094d\u092f\u093e\u0928\u094d\u0939", + "\u0909\u0924\u094d\u0924\u0930 \u092e\u0927\u094d\u092f\u093e\u0928\u094d\u0939" + ], + "DAY": [ + "\u0906\u0907\u0924\u092c\u093e\u0930", + "\u0938\u094b\u092e\u092c\u093e\u0930", + "\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930", + "\u092c\u0941\u0927\u092c\u093e\u0930", + "\u092c\u093f\u0939\u0940\u092c\u093e\u0930", + "\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930", + "\u0936\u0928\u093f\u092c\u093e\u0930" + ], + "MONTH": [ + "\u091c\u0928\u0935\u0930\u0940", + "\u092b\u0947\u092c\u094d\u0930\u0941\u0905\u0930\u0940", + "\u092e\u093e\u0930\u094d\u091a", + "\u0905\u092a\u094d\u0930\u093f\u0932", + "\u092e\u0947", + "\u091c\u0941\u0928", + "\u091c\u0941\u0932\u093e\u0908", + "\u0905\u0917\u0938\u094d\u091f", + "\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930", + "\u0905\u0915\u094d\u091f\u094b\u092c\u0930", + "\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930", + "\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930" + ], + "SHORTDAY": [ + "\u0906\u0907\u0924", + "\u0938\u094b\u092e", + "\u092e\u0919\u094d\u0917\u0932", + "\u092c\u0941\u0927", + "\u092c\u093f\u0939\u0940", + "\u0936\u0941\u0915\u094d\u0930", + "\u0936\u0928\u093f" + ], + "SHORTMONTH": [ + "\u091c\u0928\u0935\u0930\u0940", + "\u092b\u0947\u092c\u094d\u0930\u0941\u0905\u0930\u0940", + "\u092e\u093e\u0930\u094d\u091a", + "\u0905\u092a\u094d\u0930\u093f\u0932", + "\u092e\u0947", + "\u091c\u0941\u0928", + "\u091c\u0941\u0932\u093e\u0908", + "\u0905\u0917\u0938\u094d\u091f", + "\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930", + "\u0905\u0915\u094d\u091f\u094b\u092c\u0930", + "\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930", + "\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rs", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ne", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nl-aw.js b/1.2.30/i18n/angular-locale_nl-aw.js new file mode 100644 index 0000000000..fc10dba744 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nl-aw.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "zondag", + "maandag", + "dinsdag", + "woensdag", + "donderdag", + "vrijdag", + "zaterdag" + ], + "MONTH": [ + "januari", + "februari", + "maart", + "april", + "mei", + "juni", + "juli", + "augustus", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "zo", + "ma", + "di", + "wo", + "do", + "vr", + "za" + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mrt.", + "apr.", + "mei", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd-MM-yy HH:mm", + "shortDate": "dd-MM-yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Afl.", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0", + "negSuf": "-", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "nl-aw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nl-be.js b/1.2.30/i18n/angular-locale_nl-be.js new file mode 100644 index 0000000000..45de9c6751 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nl-be.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "zondag", + "maandag", + "dinsdag", + "woensdag", + "donderdag", + "vrijdag", + "zaterdag" + ], + "MONTH": [ + "januari", + "februari", + "maart", + "april", + "mei", + "juni", + "juli", + "augustus", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "zo", + "ma", + "di", + "wo", + "do", + "vr", + "za" + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mrt.", + "apr.", + "mei", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d-MMM-y HH:mm:ss", + "mediumDate": "d-MMM-y", + "mediumTime": "HH:mm:ss", + "short": "d/MM/yy HH:mm", + "shortDate": "d/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "nl-be", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nl-bq.js b/1.2.30/i18n/angular-locale_nl-bq.js new file mode 100644 index 0000000000..754fdbabf8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nl-bq.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "zondag", + "maandag", + "dinsdag", + "woensdag", + "donderdag", + "vrijdag", + "zaterdag" + ], + "MONTH": [ + "januari", + "februari", + "maart", + "april", + "mei", + "juni", + "juli", + "augustus", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "zo", + "ma", + "di", + "wo", + "do", + "vr", + "za" + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mrt.", + "apr.", + "mei", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd-MM-yy HH:mm", + "shortDate": "dd-MM-yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0", + "negSuf": "-", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "nl-bq", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nl-cw.js b/1.2.30/i18n/angular-locale_nl-cw.js new file mode 100644 index 0000000000..41a530cc39 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nl-cw.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "zondag", + "maandag", + "dinsdag", + "woensdag", + "donderdag", + "vrijdag", + "zaterdag" + ], + "MONTH": [ + "januari", + "februari", + "maart", + "april", + "mei", + "juni", + "juli", + "augustus", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "zo", + "ma", + "di", + "wo", + "do", + "vr", + "za" + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mrt.", + "apr.", + "mei", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd-MM-yy HH:mm", + "shortDate": "dd-MM-yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "ANG", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0", + "negSuf": "-", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "nl-cw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nl-nl.js b/1.2.30/i18n/angular-locale_nl-nl.js new file mode 100644 index 0000000000..3ab4ba70ce --- /dev/null +++ b/1.2.30/i18n/angular-locale_nl-nl.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "zondag", + "maandag", + "dinsdag", + "woensdag", + "donderdag", + "vrijdag", + "zaterdag" + ], + "MONTH": [ + "januari", + "februari", + "maart", + "april", + "mei", + "juni", + "juli", + "augustus", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "zo", + "ma", + "di", + "wo", + "do", + "vr", + "za" + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mrt.", + "apr.", + "mei", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd-MM-yy HH:mm", + "shortDate": "dd-MM-yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0", + "negSuf": "-", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "nl-nl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nl-sr.js b/1.2.30/i18n/angular-locale_nl-sr.js new file mode 100644 index 0000000000..77bc4a1f2b --- /dev/null +++ b/1.2.30/i18n/angular-locale_nl-sr.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "zondag", + "maandag", + "dinsdag", + "woensdag", + "donderdag", + "vrijdag", + "zaterdag" + ], + "MONTH": [ + "januari", + "februari", + "maart", + "april", + "mei", + "juni", + "juli", + "augustus", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "zo", + "ma", + "di", + "wo", + "do", + "vr", + "za" + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mrt.", + "apr.", + "mei", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd-MM-yy HH:mm", + "shortDate": "dd-MM-yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0", + "negSuf": "-", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "nl-sr", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nl-sx.js b/1.2.30/i18n/angular-locale_nl-sx.js new file mode 100644 index 0000000000..1f1fbf9db5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nl-sx.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "zondag", + "maandag", + "dinsdag", + "woensdag", + "donderdag", + "vrijdag", + "zaterdag" + ], + "MONTH": [ + "januari", + "februari", + "maart", + "april", + "mei", + "juni", + "juli", + "augustus", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "zo", + "ma", + "di", + "wo", + "do", + "vr", + "za" + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mrt.", + "apr.", + "mei", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd-MM-yy HH:mm", + "shortDate": "dd-MM-yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "ANG", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0", + "negSuf": "-", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "nl-sx", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nl.js b/1.2.30/i18n/angular-locale_nl.js new file mode 100644 index 0000000000..2e727961f3 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nl.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "zondag", + "maandag", + "dinsdag", + "woensdag", + "donderdag", + "vrijdag", + "zaterdag" + ], + "MONTH": [ + "januari", + "februari", + "maart", + "april", + "mei", + "juni", + "juli", + "augustus", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "zo", + "ma", + "di", + "wo", + "do", + "vr", + "za" + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mrt.", + "apr.", + "mei", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd-MM-yy HH:mm", + "shortDate": "dd-MM-yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0", + "negSuf": "-", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "nl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nmg-cm.js b/1.2.30/i18n/angular-locale_nmg-cm.js new file mode 100644 index 0000000000..31c9c49320 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nmg-cm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "man\u00e1", + "kug\u00fa" + ], + "DAY": [ + "s\u0254\u0301nd\u0254", + "m\u0254\u0301nd\u0254", + "s\u0254\u0301nd\u0254 maf\u00fa m\u00e1ba", + "s\u0254\u0301nd\u0254 maf\u00fa m\u00e1lal", + "s\u0254\u0301nd\u0254 maf\u00fa m\u00e1na", + "mab\u00e1g\u00e1 m\u00e1 sukul", + "s\u00e1sadi" + ], + "MONTH": [ + "ngw\u025bn mat\u00e1hra", + "ngw\u025bn \u0144mba", + "ngw\u025bn \u0144lal", + "ngw\u025bn \u0144na", + "ngw\u025bn \u0144tan", + "ngw\u025bn \u0144tu\u00f3", + "ngw\u025bn h\u025bmbu\u025br\u00ed", + "ngw\u025bn l\u0254mbi", + "ngw\u025bn r\u025bbvu\u00e2", + "ngw\u025bn wum", + "ngw\u025bn wum nav\u01d4r", + "kr\u00edsimin" + ], + "SHORTDAY": [ + "s\u0254\u0301n", + "m\u0254\u0301n", + "smb", + "sml", + "smn", + "mbs", + "sas" + ], + "SHORTMONTH": [ + "ng1", + "ng2", + "ng3", + "ng4", + "ng5", + "ng6", + "ng7", + "ng8", + "ng9", + "ng10", + "ng11", + "kris" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "nmg-cm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nmg.js b/1.2.30/i18n/angular-locale_nmg.js new file mode 100644 index 0000000000..3efc3df993 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nmg.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "man\u00e1", + "kug\u00fa" + ], + "DAY": [ + "s\u0254\u0301nd\u0254", + "m\u0254\u0301nd\u0254", + "s\u0254\u0301nd\u0254 maf\u00fa m\u00e1ba", + "s\u0254\u0301nd\u0254 maf\u00fa m\u00e1lal", + "s\u0254\u0301nd\u0254 maf\u00fa m\u00e1na", + "mab\u00e1g\u00e1 m\u00e1 sukul", + "s\u00e1sadi" + ], + "MONTH": [ + "ngw\u025bn mat\u00e1hra", + "ngw\u025bn \u0144mba", + "ngw\u025bn \u0144lal", + "ngw\u025bn \u0144na", + "ngw\u025bn \u0144tan", + "ngw\u025bn \u0144tu\u00f3", + "ngw\u025bn h\u025bmbu\u025br\u00ed", + "ngw\u025bn l\u0254mbi", + "ngw\u025bn r\u025bbvu\u00e2", + "ngw\u025bn wum", + "ngw\u025bn wum nav\u01d4r", + "kr\u00edsimin" + ], + "SHORTDAY": [ + "s\u0254\u0301n", + "m\u0254\u0301n", + "smb", + "sml", + "smn", + "mbs", + "sas" + ], + "SHORTMONTH": [ + "ng1", + "ng2", + "ng3", + "ng4", + "ng5", + "ng6", + "ng7", + "ng8", + "ng9", + "ng10", + "ng11", + "kris" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "nmg", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nn-no.js b/1.2.30/i18n/angular-locale_nn-no.js new file mode 100644 index 0000000000..ebabf75801 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nn-no.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "formiddag", + "ettermiddag" + ], + "DAY": [ + "s\u00f8ndag", + "m\u00e5ndag", + "tysdag", + "onsdag", + "torsdag", + "fredag", + "laurdag" + ], + "MONTH": [ + "januar", + "februar", + "mars", + "april", + "mai", + "juni", + "juli", + "august", + "september", + "oktober", + "november", + "desember" + ], + "SHORTDAY": [ + "s\u00f8.", + "m\u00e5.", + "ty.", + "on.", + "to.", + "fr.", + "la." + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mars", + "apr.", + "mai", + "juni", + "juli", + "aug.", + "sep.", + "okt.", + "nov.", + "des." + ], + "fullDate": "EEEE d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d. MMM y HH:mm:ss", + "mediumDate": "d. MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "nn-no", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nn.js b/1.2.30/i18n/angular-locale_nn.js new file mode 100644 index 0000000000..c7483fbb54 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "formiddag", + "ettermiddag" + ], + "DAY": [ + "s\u00f8ndag", + "m\u00e5ndag", + "tysdag", + "onsdag", + "torsdag", + "fredag", + "laurdag" + ], + "MONTH": [ + "januar", + "februar", + "mars", + "april", + "mai", + "juni", + "juli", + "august", + "september", + "oktober", + "november", + "desember" + ], + "SHORTDAY": [ + "s\u00f8.", + "m\u00e5.", + "ty.", + "on.", + "to.", + "fr.", + "la." + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mars", + "apr.", + "mai", + "juni", + "juli", + "aug.", + "sep.", + "okt.", + "nov.", + "des." + ], + "fullDate": "EEEE d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d. MMM y HH:mm:ss", + "mediumDate": "d. MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "nn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nnh-cm.js b/1.2.30/i18n/angular-locale_nnh-cm.js new file mode 100644 index 0000000000..0bfe401c4a --- /dev/null +++ b/1.2.30/i18n/angular-locale_nnh-cm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "mba\u02bc\u00e1mba\u02bc", + "ncw\u00f2nz\u00e9m" + ], + "DAY": [ + "ly\u025b\u02bc\u025b\u0301 s\u1e85\u00ed\u014bt\u00e8", + "mvf\u00f2 ly\u025b\u030c\u02bc", + "mb\u0254\u0301\u0254nt\u00e8 mvf\u00f2 ly\u025b\u030c\u02bc", + "ts\u00e8ts\u025b\u0300\u025b ly\u025b\u030c\u02bc", + "mb\u0254\u0301\u0254nt\u00e8 tsets\u025b\u0300\u025b ly\u025b\u030c\u02bc", + "mvf\u00f2 m\u00e0ga ly\u025b\u030c\u02bc", + "m\u00e0ga ly\u025b\u030c\u02bc" + ], + "MONTH": [ + "sa\u014b tsets\u025b\u0300\u025b l\u00f9m", + "sa\u014b k\u00e0g ngw\u00f3\u014b", + "sa\u014b lepy\u00e8 sh\u00fam", + "sa\u014b c\u00ff\u00f3", + "sa\u014b ts\u025b\u0300\u025b c\u00ff\u00f3", + "sa\u014b nj\u00ffol\u00e1\u02bc", + "sa\u014b ty\u025b\u0300b ty\u025b\u0300b mb\u0289\u0300", + "sa\u014b mb\u0289\u0300\u014b", + "sa\u014b ngw\u0254\u0300\u02bc mb\u00ff\u025b", + "sa\u014b t\u00e0\u014ba tsets\u00e1\u02bc", + "sa\u014b mejwo\u014b\u00f3", + "sa\u014b l\u00f9m" + ], + "SHORTDAY": [ + "ly\u025b\u02bc\u025b\u0301 s\u1e85\u00ed\u014bt\u00e8", + "mvf\u00f2 ly\u025b\u030c\u02bc", + "mb\u0254\u0301\u0254nt\u00e8 mvf\u00f2 ly\u025b\u030c\u02bc", + "ts\u00e8ts\u025b\u0300\u025b ly\u025b\u030c\u02bc", + "mb\u0254\u0301\u0254nt\u00e8 tsets\u025b\u0300\u025b ly\u025b\u030c\u02bc", + "mvf\u00f2 m\u00e0ga ly\u025b\u030c\u02bc", + "m\u00e0ga ly\u025b\u030c\u02bc" + ], + "SHORTMONTH": [ + "sa\u014b tsets\u025b\u0300\u025b l\u00f9m", + "sa\u014b k\u00e0g ngw\u00f3\u014b", + "sa\u014b lepy\u00e8 sh\u00fam", + "sa\u014b c\u00ff\u00f3", + "sa\u014b ts\u025b\u0300\u025b c\u00ff\u00f3", + "sa\u014b nj\u00ffol\u00e1\u02bc", + "sa\u014b ty\u025b\u0300b ty\u025b\u0300b mb\u0289\u0300", + "sa\u014b mb\u0289\u0300\u014b", + "sa\u014b ngw\u0254\u0300\u02bc mb\u00ff\u025b", + "sa\u014b t\u00e0\u014ba tsets\u00e1\u02bc", + "sa\u014b mejwo\u014b\u00f3", + "sa\u014b l\u00f9m" + ], + "fullDate": "EEEE , 'ly\u025b'\u030c\u02bc d 'na' MMMM, y", + "longDate": "'ly\u025b'\u030c\u02bc d 'na' MMMM, y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "nnh-cm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nnh.js b/1.2.30/i18n/angular-locale_nnh.js new file mode 100644 index 0000000000..7074c8b907 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nnh.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "mba\u02bc\u00e1mba\u02bc", + "ncw\u00f2nz\u00e9m" + ], + "DAY": [ + "ly\u025b\u02bc\u025b\u0301 s\u1e85\u00ed\u014bt\u00e8", + "mvf\u00f2 ly\u025b\u030c\u02bc", + "mb\u0254\u0301\u0254nt\u00e8 mvf\u00f2 ly\u025b\u030c\u02bc", + "ts\u00e8ts\u025b\u0300\u025b ly\u025b\u030c\u02bc", + "mb\u0254\u0301\u0254nt\u00e8 tsets\u025b\u0300\u025b ly\u025b\u030c\u02bc", + "mvf\u00f2 m\u00e0ga ly\u025b\u030c\u02bc", + "m\u00e0ga ly\u025b\u030c\u02bc" + ], + "MONTH": [ + "sa\u014b tsets\u025b\u0300\u025b l\u00f9m", + "sa\u014b k\u00e0g ngw\u00f3\u014b", + "sa\u014b lepy\u00e8 sh\u00fam", + "sa\u014b c\u00ff\u00f3", + "sa\u014b ts\u025b\u0300\u025b c\u00ff\u00f3", + "sa\u014b nj\u00ffol\u00e1\u02bc", + "sa\u014b ty\u025b\u0300b ty\u025b\u0300b mb\u0289\u0300", + "sa\u014b mb\u0289\u0300\u014b", + "sa\u014b ngw\u0254\u0300\u02bc mb\u00ff\u025b", + "sa\u014b t\u00e0\u014ba tsets\u00e1\u02bc", + "sa\u014b mejwo\u014b\u00f3", + "sa\u014b l\u00f9m" + ], + "SHORTDAY": [ + "ly\u025b\u02bc\u025b\u0301 s\u1e85\u00ed\u014bt\u00e8", + "mvf\u00f2 ly\u025b\u030c\u02bc", + "mb\u0254\u0301\u0254nt\u00e8 mvf\u00f2 ly\u025b\u030c\u02bc", + "ts\u00e8ts\u025b\u0300\u025b ly\u025b\u030c\u02bc", + "mb\u0254\u0301\u0254nt\u00e8 tsets\u025b\u0300\u025b ly\u025b\u030c\u02bc", + "mvf\u00f2 m\u00e0ga ly\u025b\u030c\u02bc", + "m\u00e0ga ly\u025b\u030c\u02bc" + ], + "SHORTMONTH": [ + "sa\u014b tsets\u025b\u0300\u025b l\u00f9m", + "sa\u014b k\u00e0g ngw\u00f3\u014b", + "sa\u014b lepy\u00e8 sh\u00fam", + "sa\u014b c\u00ff\u00f3", + "sa\u014b ts\u025b\u0300\u025b c\u00ff\u00f3", + "sa\u014b nj\u00ffol\u00e1\u02bc", + "sa\u014b ty\u025b\u0300b ty\u025b\u0300b mb\u0289\u0300", + "sa\u014b mb\u0289\u0300\u014b", + "sa\u014b ngw\u0254\u0300\u02bc mb\u00ff\u025b", + "sa\u014b t\u00e0\u014ba tsets\u00e1\u02bc", + "sa\u014b mejwo\u014b\u00f3", + "sa\u014b l\u00f9m" + ], + "fullDate": "EEEE , 'ly\u025b'\u030c\u02bc d 'na' MMMM, y", + "longDate": "'ly\u025b'\u030c\u02bc d 'na' MMMM, y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "nnh", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_no-no.js b/1.2.30/i18n/angular-locale_no-no.js new file mode 100644 index 0000000000..ce13b0e7bc --- /dev/null +++ b/1.2.30/i18n/angular-locale_no-no.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "s\u00f8ndag", + "mandag", + "tirsdag", + "onsdag", + "torsdag", + "fredag", + "l\u00f8rdag" + ], + "MONTH": [ + "januar", + "februar", + "mars", + "april", + "mai", + "juni", + "juli", + "august", + "september", + "oktober", + "november", + "desember" + ], + "SHORTDAY": [ + "s\u00f8n.", + "man.", + "tir.", + "ons.", + "tor.", + "fre.", + "l\u00f8r." + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mar.", + "apr.", + "mai", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "des." + ], + "fullDate": "EEEE d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d. MMM y HH.mm.ss", + "mediumDate": "d. MMM y", + "mediumTime": "HH.mm.ss", + "short": "dd.MM.yy HH.mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "no-no", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_no.js b/1.2.30/i18n/angular-locale_no.js new file mode 100644 index 0000000000..27623baa40 --- /dev/null +++ b/1.2.30/i18n/angular-locale_no.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "s\u00f8ndag", + "mandag", + "tirsdag", + "onsdag", + "torsdag", + "fredag", + "l\u00f8rdag" + ], + "MONTH": [ + "januar", + "februar", + "mars", + "april", + "mai", + "juni", + "juli", + "august", + "september", + "oktober", + "november", + "desember" + ], + "SHORTDAY": [ + "s\u00f8n.", + "man.", + "tir.", + "ons.", + "tor.", + "fre.", + "l\u00f8r." + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mar.", + "apr.", + "mai", + "jun.", + "jul.", + "aug.", + "sep.", + "okt.", + "nov.", + "des." + ], + "fullDate": "EEEE d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d. MMM y HH.mm.ss", + "mediumDate": "d. MMM y", + "mediumTime": "HH.mm.ss", + "short": "dd.MM.yy HH.mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "no", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nr-za.js b/1.2.30/i18n/angular-locale_nr-za.js new file mode 100644 index 0000000000..b677ec9385 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nr-za.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "uSonto", + "uMvulo", + "uLesibili", + "Lesithathu", + "uLesine", + "ngoLesihlanu", + "umGqibelo" + ], + "MONTH": [ + "Janabari", + "uFeberbari", + "uMatjhi", + "u-Apreli", + "Meyi", + "Juni", + "Julayi", + "Arhostosi", + "Septemba", + "Oktoba", + "Usinyikhaba", + "Disemba" + ], + "SHORTDAY": [ + "Son", + "Mvu", + "Bil", + "Tha", + "Ne", + "Hla", + "Gqi" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mat", + "Apr", + "Mey", + "Jun", + "Jul", + "Arh", + "Sep", + "Okt", + "Usi", + "Dis" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "nr-za", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nr.js b/1.2.30/i18n/angular-locale_nr.js new file mode 100644 index 0000000000..ddec3b325d --- /dev/null +++ b/1.2.30/i18n/angular-locale_nr.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "uSonto", + "uMvulo", + "uLesibili", + "Lesithathu", + "uLesine", + "ngoLesihlanu", + "umGqibelo" + ], + "MONTH": [ + "Janabari", + "uFeberbari", + "uMatjhi", + "u-Apreli", + "Meyi", + "Juni", + "Julayi", + "Arhostosi", + "Septemba", + "Oktoba", + "Usinyikhaba", + "Disemba" + ], + "SHORTDAY": [ + "Son", + "Mvu", + "Bil", + "Tha", + "Ne", + "Hla", + "Gqi" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mat", + "Apr", + "Mey", + "Jun", + "Jul", + "Arh", + "Sep", + "Okt", + "Usi", + "Dis" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "nr", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nso-za.js b/1.2.30/i18n/angular-locale_nso-za.js new file mode 100644 index 0000000000..06f927e212 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nso-za.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sontaga", + "Mosupalogo", + "Labobedi", + "Laboraro", + "Labone", + "Labohlano", + "Mokibelo" + ], + "MONTH": [ + "Janaware", + "Feberware", + "Mat\u0161he", + "Aporele", + "Mei", + "June", + "Julae", + "Agostose", + "Setemere", + "Oktobore", + "Nofemere", + "Disemere" + ], + "SHORTDAY": [ + "Son", + "Mos", + "Bed", + "Rar", + "Ne", + "Hla", + "Mok" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mat", + "Apo", + "Mei", + "Jun", + "Jul", + "Ago", + "Set", + "Okt", + "Nof", + "Dis" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "nso-za", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nso.js b/1.2.30/i18n/angular-locale_nso.js new file mode 100644 index 0000000000..c238f1e124 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nso.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sontaga", + "Mosupalogo", + "Labobedi", + "Laboraro", + "Labone", + "Labohlano", + "Mokibelo" + ], + "MONTH": [ + "Janaware", + "Feberware", + "Mat\u0161he", + "Aporele", + "Mei", + "June", + "Julae", + "Agostose", + "Setemere", + "Oktobore", + "Nofemere", + "Disemere" + ], + "SHORTDAY": [ + "Son", + "Mos", + "Bed", + "Rar", + "Ne", + "Hla", + "Mok" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mat", + "Apo", + "Mei", + "Jun", + "Jul", + "Ago", + "Set", + "Okt", + "Nof", + "Dis" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "nso", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nus-sd.js b/1.2.30/i18n/angular-locale_nus-sd.js new file mode 100644 index 0000000000..21a90857e8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nus-sd.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "RW", + "T\u014a" + ], + "DAY": [ + "C\u00e4\u014b ku\u0254th", + "Jiec la\u0331t", + "R\u025bw l\u00e4tni", + "Di\u0254\u0331k l\u00e4tni", + "\u014auaan l\u00e4tni", + "Dhieec l\u00e4tni", + "B\u00e4k\u025bl l\u00e4tni" + ], + "MONTH": [ + "Tiop thar p\u025bt", + "P\u025bt", + "Du\u0254\u0331\u0254\u0331\u014b", + "Guak", + "Du\u00e4t", + "Kornyoot", + "Pay yie\u0331tni", + "Tho\u0331o\u0331r", + "T\u025b\u025br", + "Laath", + "Kur", + "Tio\u0331p in di\u0331i\u0331t" + ], + "SHORTDAY": [ + "C\u00e4\u014b", + "Jiec", + "R\u025bw", + "Di\u0254\u0331k", + "\u014auaan", + "Dhieec", + "B\u00e4k\u025bl" + ], + "SHORTMONTH": [ + "Tiop", + "P\u025bt", + "Du\u0254\u0331\u0254\u0331", + "Guak", + "Du\u00e4", + "Kor", + "Pay", + "Thoo", + "T\u025b\u025b", + "Laa", + "Kur", + "Tid" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/MM/y h:mm a", + "shortDate": "d/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "SDG", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "nus-sd", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nus.js b/1.2.30/i18n/angular-locale_nus.js new file mode 100644 index 0000000000..f3ae4219e6 --- /dev/null +++ b/1.2.30/i18n/angular-locale_nus.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "RW", + "T\u014a" + ], + "DAY": [ + "C\u00e4\u014b ku\u0254th", + "Jiec la\u0331t", + "R\u025bw l\u00e4tni", + "Di\u0254\u0331k l\u00e4tni", + "\u014auaan l\u00e4tni", + "Dhieec l\u00e4tni", + "B\u00e4k\u025bl l\u00e4tni" + ], + "MONTH": [ + "Tiop thar p\u025bt", + "P\u025bt", + "Du\u0254\u0331\u0254\u0331\u014b", + "Guak", + "Du\u00e4t", + "Kornyoot", + "Pay yie\u0331tni", + "Tho\u0331o\u0331r", + "T\u025b\u025br", + "Laath", + "Kur", + "Tio\u0331p in di\u0331i\u0331t" + ], + "SHORTDAY": [ + "C\u00e4\u014b", + "Jiec", + "R\u025bw", + "Di\u0254\u0331k", + "\u014auaan", + "Dhieec", + "B\u00e4k\u025bl" + ], + "SHORTMONTH": [ + "Tiop", + "P\u025bt", + "Du\u0254\u0331\u0254\u0331", + "Guak", + "Du\u00e4", + "Kor", + "Pay", + "Thoo", + "T\u025b\u025b", + "Laa", + "Kur", + "Tid" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/MM/y h:mm a", + "shortDate": "d/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "SDG", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "nus", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nyn-ug.js b/1.2.30/i18n/angular-locale_nyn-ug.js new file mode 100644 index 0000000000..956956fd6d --- /dev/null +++ b/1.2.30/i18n/angular-locale_nyn-ug.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sande", + "Orwokubanza", + "Orwakabiri", + "Orwakashatu", + "Orwakana", + "Orwakataano", + "Orwamukaaga" + ], + "MONTH": [ + "Okwokubanza", + "Okwakabiri", + "Okwakashatu", + "Okwakana", + "Okwakataana", + "Okwamukaaga", + "Okwamushanju", + "Okwamunaana", + "Okwamwenda", + "Okwaikumi", + "Okwaikumi na kumwe", + "Okwaikumi na ibiri" + ], + "SHORTDAY": [ + "SAN", + "ORK", + "OKB", + "OKS", + "OKN", + "OKT", + "OMK" + ], + "SHORTMONTH": [ + "KBZ", + "KBR", + "KST", + "KKN", + "KTN", + "KMK", + "KMS", + "KMN", + "KMW", + "KKM", + "KNK", + "KNB" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "UGX", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "nyn-ug", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_nyn.js b/1.2.30/i18n/angular-locale_nyn.js new file mode 100644 index 0000000000..6426e28b0f --- /dev/null +++ b/1.2.30/i18n/angular-locale_nyn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sande", + "Orwokubanza", + "Orwakabiri", + "Orwakashatu", + "Orwakana", + "Orwakataano", + "Orwamukaaga" + ], + "MONTH": [ + "Okwokubanza", + "Okwakabiri", + "Okwakashatu", + "Okwakana", + "Okwakataana", + "Okwamukaaga", + "Okwamushanju", + "Okwamunaana", + "Okwamwenda", + "Okwaikumi", + "Okwaikumi na kumwe", + "Okwaikumi na ibiri" + ], + "SHORTDAY": [ + "SAN", + "ORK", + "OKB", + "OKS", + "OKN", + "OKT", + "OMK" + ], + "SHORTMONTH": [ + "KBZ", + "KBR", + "KST", + "KKN", + "KTN", + "KMK", + "KMS", + "KMN", + "KMW", + "KKM", + "KNK", + "KNB" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "UGX", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "nyn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_om-et.js b/1.2.30/i18n/angular-locale_om-et.js new file mode 100644 index 0000000000..62457647ad --- /dev/null +++ b/1.2.30/i18n/angular-locale_om-et.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "WD", + "WB" + ], + "DAY": [ + "Dilbata", + "Wiixata", + "Qibxata", + "Roobii", + "Kamiisa", + "Jimaata", + "Sanbata" + ], + "MONTH": [ + "Amajjii", + "Guraandhala", + "Bitooteessa", + "Elba", + "Caamsa", + "Waxabajjii", + "Adooleessa", + "Hagayya", + "Fuulbana", + "Onkololeessa", + "Sadaasa", + "Muddee" + ], + "SHORTDAY": [ + "Dil", + "Wix", + "Qib", + "Rob", + "Kam", + "Jim", + "San" + ], + "SHORTMONTH": [ + "Ama", + "Gur", + "Bit", + "Elb", + "Cam", + "Wax", + "Ado", + "Hag", + "Ful", + "Onk", + "Sad", + "Mud" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Birr", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "om-et", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_om-ke.js b/1.2.30/i18n/angular-locale_om-ke.js new file mode 100644 index 0000000000..969748b2e2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_om-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "WD", + "WB" + ], + "DAY": [ + "Dilbata", + "Wiixata", + "Qibxata", + "Roobii", + "Kamiisa", + "Jimaata", + "Sanbata" + ], + "MONTH": [ + "Amajjii", + "Guraandhala", + "Bitooteessa", + "Elba", + "Caamsa", + "Waxabajjii", + "Adooleessa", + "Hagayya", + "Fuulbana", + "Onkololeessa", + "Sadaasa", + "Muddee" + ], + "SHORTDAY": [ + "Dil", + "Wix", + "Qib", + "Rob", + "Kam", + "Jim", + "San" + ], + "SHORTMONTH": [ + "Ama", + "Gur", + "Bit", + "Elb", + "Cam", + "Wax", + "Ado", + "Hag", + "Ful", + "Onk", + "Sad", + "Mud" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "om-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_om.js b/1.2.30/i18n/angular-locale_om.js new file mode 100644 index 0000000000..97483c93a7 --- /dev/null +++ b/1.2.30/i18n/angular-locale_om.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "WD", + "WB" + ], + "DAY": [ + "Dilbata", + "Wiixata", + "Qibxata", + "Roobii", + "Kamiisa", + "Jimaata", + "Sanbata" + ], + "MONTH": [ + "Amajjii", + "Guraandhala", + "Bitooteessa", + "Elba", + "Caamsa", + "Waxabajjii", + "Adooleessa", + "Hagayya", + "Fuulbana", + "Onkololeessa", + "Sadaasa", + "Muddee" + ], + "SHORTDAY": [ + "Dil", + "Wix", + "Qib", + "Rob", + "Kam", + "Jim", + "San" + ], + "SHORTMONTH": [ + "Ama", + "Gur", + "Bit", + "Elb", + "Cam", + "Wax", + "Ado", + "Hag", + "Ful", + "Onk", + "Sad", + "Mud" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Birr", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "om", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_or-in.js b/1.2.30/i18n/angular-locale_or-in.js new file mode 100644 index 0000000000..2464c1f226 --- /dev/null +++ b/1.2.30/i18n/angular-locale_or-in.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "am", + "pm" + ], + "DAY": [ + "\u0b30\u0b2c\u0b3f\u0b2c\u0b3e\u0b30", + "\u0b38\u0b4b\u0b2e\u0b2c\u0b3e\u0b30", + "\u0b2e\u0b19\u0b4d\u0b17\u0b33\u0b2c\u0b3e\u0b30", + "\u0b2c\u0b41\u0b27\u0b2c\u0b3e\u0b30", + "\u0b17\u0b41\u0b30\u0b41\u0b2c\u0b3e\u0b30", + "\u0b36\u0b41\u0b15\u0b4d\u0b30\u0b2c\u0b3e\u0b30", + "\u0b36\u0b28\u0b3f\u0b2c\u0b3e\u0b30" + ], + "MONTH": [ + "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40", + "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40", + "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a", + "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32", + "\u0b2e\u0b47", + "\u0b1c\u0b41\u0b28", + "\u0b1c\u0b41\u0b32\u0b3e\u0b07", + "\u0b05\u0b17\u0b37\u0b4d\u0b1f", + "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30", + "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30", + "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30", + "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30" + ], + "SHORTDAY": [ + "\u0b30\u0b2c\u0b3f", + "\u0b38\u0b4b\u0b2e", + "\u0b2e\u0b19\u0b4d\u0b17\u0b33", + "\u0b2c\u0b41\u0b27", + "\u0b17\u0b41\u0b30\u0b41", + "\u0b36\u0b41\u0b15\u0b4d\u0b30", + "\u0b36\u0b28\u0b3f" + ], + "SHORTMONTH": [ + "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40", + "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40", + "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a", + "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32", + "\u0b2e\u0b47", + "\u0b1c\u0b41\u0b28", + "\u0b1c\u0b41\u0b32\u0b3e\u0b07", + "\u0b05\u0b17\u0b37\u0b4d\u0b1f", + "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30", + "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30", + "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30", + "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d-M-yy h:mm a", + "shortDate": "d-M-yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "or-in", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_or.js b/1.2.30/i18n/angular-locale_or.js new file mode 100644 index 0000000000..65dba06b93 --- /dev/null +++ b/1.2.30/i18n/angular-locale_or.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "am", + "pm" + ], + "DAY": [ + "\u0b30\u0b2c\u0b3f\u0b2c\u0b3e\u0b30", + "\u0b38\u0b4b\u0b2e\u0b2c\u0b3e\u0b30", + "\u0b2e\u0b19\u0b4d\u0b17\u0b33\u0b2c\u0b3e\u0b30", + "\u0b2c\u0b41\u0b27\u0b2c\u0b3e\u0b30", + "\u0b17\u0b41\u0b30\u0b41\u0b2c\u0b3e\u0b30", + "\u0b36\u0b41\u0b15\u0b4d\u0b30\u0b2c\u0b3e\u0b30", + "\u0b36\u0b28\u0b3f\u0b2c\u0b3e\u0b30" + ], + "MONTH": [ + "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40", + "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40", + "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a", + "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32", + "\u0b2e\u0b47", + "\u0b1c\u0b41\u0b28", + "\u0b1c\u0b41\u0b32\u0b3e\u0b07", + "\u0b05\u0b17\u0b37\u0b4d\u0b1f", + "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30", + "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30", + "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30", + "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30" + ], + "SHORTDAY": [ + "\u0b30\u0b2c\u0b3f", + "\u0b38\u0b4b\u0b2e", + "\u0b2e\u0b19\u0b4d\u0b17\u0b33", + "\u0b2c\u0b41\u0b27", + "\u0b17\u0b41\u0b30\u0b41", + "\u0b36\u0b41\u0b15\u0b4d\u0b30", + "\u0b36\u0b28\u0b3f" + ], + "SHORTMONTH": [ + "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40", + "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40", + "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a", + "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32", + "\u0b2e\u0b47", + "\u0b1c\u0b41\u0b28", + "\u0b1c\u0b41\u0b32\u0b3e\u0b07", + "\u0b05\u0b17\u0b37\u0b4d\u0b1f", + "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30", + "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30", + "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30", + "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d-M-yy h:mm a", + "shortDate": "d-M-yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "or", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_os-ge.js b/1.2.30/i18n/angular-locale_os-ge.js new file mode 100644 index 0000000000..292bf85fd2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_os-ge.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u04d5\u043c\u0431\u0438\u0441\u0431\u043e\u043d\u044b \u0440\u0430\u0437\u043c\u04d5", + "\u04d5\u043c\u0431\u0438\u0441\u0431\u043e\u043d\u044b \u0444\u04d5\u0441\u0442\u04d5" + ], + "DAY": [ + "\u0445\u0443\u044b\u0446\u0430\u0443\u0431\u043e\u043d", + "\u043a\u044a\u0443\u044b\u0440\u0438\u0441\u04d5\u0440", + "\u0434\u044b\u0446\u0446\u04d5\u0433", + "\u04d5\u0440\u0442\u044b\u0446\u0446\u04d5\u0433", + "\u0446\u044b\u043f\u043f\u04d5\u0440\u04d5\u043c", + "\u043c\u0430\u0439\u0440\u04d5\u043c\u0431\u043e\u043d", + "\u0441\u0430\u0431\u0430\u0442" + ], + "MONTH": [ + "\u044f\u043d\u0432\u0430\u0440\u044b", + "\u0444\u0435\u0432\u0440\u0430\u043b\u044b", + "\u043c\u0430\u0440\u0442\u044a\u0438\u0439\u044b", + "\u0430\u043f\u0440\u0435\u043b\u044b", + "\u043c\u0430\u0439\u044b", + "\u0438\u044e\u043d\u044b", + "\u0438\u044e\u043b\u044b", + "\u0430\u0432\u0433\u0443\u0441\u0442\u044b", + "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044b", + "\u043e\u043a\u0442\u044f\u0431\u0440\u044b", + "\u043d\u043e\u044f\u0431\u0440\u044b", + "\u0434\u0435\u043a\u0430\u0431\u0440\u044b" + ], + "SHORTDAY": [ + "\u0445\u0446\u0431", + "\u043a\u0440\u0441", + "\u0434\u0446\u0433", + "\u04d5\u0440\u0442", + "\u0446\u043f\u0440", + "\u043c\u0440\u0431", + "\u0441\u0431\u0442" + ], + "SHORTMONTH": [ + "\u044f\u043d\u0432.", + "\u0444\u0435\u0432.", + "\u043c\u0430\u0440.", + "\u0430\u043f\u0440.", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044b", + "\u0438\u044e\u043b\u044b", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043d.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u044f.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, d MMMM, y '\u0430\u0437'", + "longDate": "d MMMM, y '\u0430\u0437'", + "medium": "dd MMM y '\u0430\u0437' HH:mm:ss", + "mediumDate": "dd MMM y '\u0430\u0437'", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "GEL", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "os-ge", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_os-ru.js b/1.2.30/i18n/angular-locale_os-ru.js new file mode 100644 index 0000000000..ba16dc4186 --- /dev/null +++ b/1.2.30/i18n/angular-locale_os-ru.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u04d5\u043c\u0431\u0438\u0441\u0431\u043e\u043d\u044b \u0440\u0430\u0437\u043c\u04d5", + "\u04d5\u043c\u0431\u0438\u0441\u0431\u043e\u043d\u044b \u0444\u04d5\u0441\u0442\u04d5" + ], + "DAY": [ + "\u0445\u0443\u044b\u0446\u0430\u0443\u0431\u043e\u043d", + "\u043a\u044a\u0443\u044b\u0440\u0438\u0441\u04d5\u0440", + "\u0434\u044b\u0446\u0446\u04d5\u0433", + "\u04d5\u0440\u0442\u044b\u0446\u0446\u04d5\u0433", + "\u0446\u044b\u043f\u043f\u04d5\u0440\u04d5\u043c", + "\u043c\u0430\u0439\u0440\u04d5\u043c\u0431\u043e\u043d", + "\u0441\u0430\u0431\u0430\u0442" + ], + "MONTH": [ + "\u044f\u043d\u0432\u0430\u0440\u044b", + "\u0444\u0435\u0432\u0440\u0430\u043b\u044b", + "\u043c\u0430\u0440\u0442\u044a\u0438\u0439\u044b", + "\u0430\u043f\u0440\u0435\u043b\u044b", + "\u043c\u0430\u0439\u044b", + "\u0438\u044e\u043d\u044b", + "\u0438\u044e\u043b\u044b", + "\u0430\u0432\u0433\u0443\u0441\u0442\u044b", + "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044b", + "\u043e\u043a\u0442\u044f\u0431\u0440\u044b", + "\u043d\u043e\u044f\u0431\u0440\u044b", + "\u0434\u0435\u043a\u0430\u0431\u0440\u044b" + ], + "SHORTDAY": [ + "\u0445\u0446\u0431", + "\u043a\u0440\u0441", + "\u0434\u0446\u0433", + "\u04d5\u0440\u0442", + "\u0446\u043f\u0440", + "\u043c\u0440\u0431", + "\u0441\u0431\u0442" + ], + "SHORTMONTH": [ + "\u044f\u043d\u0432.", + "\u0444\u0435\u0432.", + "\u043c\u0430\u0440.", + "\u0430\u043f\u0440.", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044b", + "\u0438\u044e\u043b\u044b", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043d.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u044f.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, d MMMM, y '\u0430\u0437'", + "longDate": "d MMMM, y '\u0430\u0437'", + "medium": "dd MMM y '\u0430\u0437' HH:mm:ss", + "mediumDate": "dd MMM y '\u0430\u0437'", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u0440\u0443\u0431.", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "os-ru", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_os.js b/1.2.30/i18n/angular-locale_os.js new file mode 100644 index 0000000000..09ec8cc48d --- /dev/null +++ b/1.2.30/i18n/angular-locale_os.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u04d5\u043c\u0431\u0438\u0441\u0431\u043e\u043d\u044b \u0440\u0430\u0437\u043c\u04d5", + "\u04d5\u043c\u0431\u0438\u0441\u0431\u043e\u043d\u044b \u0444\u04d5\u0441\u0442\u04d5" + ], + "DAY": [ + "\u0445\u0443\u044b\u0446\u0430\u0443\u0431\u043e\u043d", + "\u043a\u044a\u0443\u044b\u0440\u0438\u0441\u04d5\u0440", + "\u0434\u044b\u0446\u0446\u04d5\u0433", + "\u04d5\u0440\u0442\u044b\u0446\u0446\u04d5\u0433", + "\u0446\u044b\u043f\u043f\u04d5\u0440\u04d5\u043c", + "\u043c\u0430\u0439\u0440\u04d5\u043c\u0431\u043e\u043d", + "\u0441\u0430\u0431\u0430\u0442" + ], + "MONTH": [ + "\u044f\u043d\u0432\u0430\u0440\u044b", + "\u0444\u0435\u0432\u0440\u0430\u043b\u044b", + "\u043c\u0430\u0440\u0442\u044a\u0438\u0439\u044b", + "\u0430\u043f\u0440\u0435\u043b\u044b", + "\u043c\u0430\u0439\u044b", + "\u0438\u044e\u043d\u044b", + "\u0438\u044e\u043b\u044b", + "\u0430\u0432\u0433\u0443\u0441\u0442\u044b", + "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044b", + "\u043e\u043a\u0442\u044f\u0431\u0440\u044b", + "\u043d\u043e\u044f\u0431\u0440\u044b", + "\u0434\u0435\u043a\u0430\u0431\u0440\u044b" + ], + "SHORTDAY": [ + "\u0445\u0446\u0431", + "\u043a\u0440\u0441", + "\u0434\u0446\u0433", + "\u04d5\u0440\u0442", + "\u0446\u043f\u0440", + "\u043c\u0440\u0431", + "\u0441\u0431\u0442" + ], + "SHORTMONTH": [ + "\u044f\u043d\u0432.", + "\u0444\u0435\u0432.", + "\u043c\u0430\u0440.", + "\u0430\u043f\u0440.", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044b", + "\u0438\u044e\u043b\u044b", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043d.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u044f.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, d MMMM, y '\u0430\u0437'", + "longDate": "d MMMM, y '\u0430\u0437'", + "medium": "dd MMM y '\u0430\u0437' HH:mm:ss", + "mediumDate": "dd MMM y '\u0430\u0437'", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "GEL", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "os", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pa-arab-pk.js b/1.2.30/i18n/angular-locale_pa-arab-pk.js new file mode 100644 index 0000000000..c0c93525f2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_pa-arab-pk.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0627\u062a\u0648\u0627\u0631", + "\u067e\u06cc\u0631", + "\u0645\u0646\u06af\u0644", + "\u0628\u064f\u062f\u06be", + "\u062c\u0645\u0639\u0631\u0627\u062a", + "\u062c\u0645\u0639\u06c1", + "\u06c1\u0641\u062a\u06c1" + ], + "MONTH": [ + "\u062c\u0646\u0648\u0631\u06cc", + "\u0641\u0631\u0648\u0631\u06cc", + "\u0645\u0627\u0631\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u0626", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644\u0627\u0626\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0a10\u0a24.", + "\u0a38\u0a4b\u0a2e.", + "\u0a2e\u0a70\u0a17\u0a32.", + "\u0a2c\u0a41\u0a27.", + "\u0a35\u0a40\u0a30.", + "\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30.", + "\u0a38\u0a3c\u0a28\u0a40." + ], + "SHORTMONTH": [ + "\u0a1c\u0a28\u0a35\u0a30\u0a40", + "\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40", + "\u0a2e\u0a3e\u0a30\u0a1a", + "\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32", + "\u0a2e\u0a08", + "\u0a1c\u0a42\u0a28", + "\u0a1c\u0a41\u0a32\u0a3e\u0a08", + "\u0a05\u0a17\u0a38\u0a24", + "\u0a38\u0a24\u0a70\u0a2c\u0a30", + "\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30", + "\u0a28\u0a35\u0a70\u0a2c\u0a30", + "\u0a26\u0a38\u0a70\u0a2c\u0a30" + ], + "fullDate": "EEEE, dd MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rs", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "pa-arab-pk", + "pluralCat": function (n, opt_precision) { if (n >= 0 && n <= 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pa-arab.js b/1.2.30/i18n/angular-locale_pa-arab.js new file mode 100644 index 0000000000..149bd0faf0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_pa-arab.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0627\u062a\u0648\u0627\u0631", + "\u067e\u06cc\u0631", + "\u0645\u0646\u06af\u0644", + "\u0628\u064f\u062f\u06be", + "\u062c\u0645\u0639\u0631\u0627\u062a", + "\u062c\u0645\u0639\u06c1", + "\u06c1\u0641\u062a\u06c1" + ], + "MONTH": [ + "\u062c\u0646\u0648\u0631\u06cc", + "\u0641\u0631\u0648\u0631\u06cc", + "\u0645\u0627\u0631\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u0626", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644\u0627\u0626\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0a10\u0a24.", + "\u0a38\u0a4b\u0a2e.", + "\u0a2e\u0a70\u0a17\u0a32.", + "\u0a2c\u0a41\u0a27.", + "\u0a35\u0a40\u0a30.", + "\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30.", + "\u0a38\u0a3c\u0a28\u0a40." + ], + "SHORTMONTH": [ + "\u0a1c\u0a28\u0a35\u0a30\u0a40", + "\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40", + "\u0a2e\u0a3e\u0a30\u0a1a", + "\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32", + "\u0a2e\u0a08", + "\u0a1c\u0a42\u0a28", + "\u0a1c\u0a41\u0a32\u0a3e\u0a08", + "\u0a05\u0a17\u0a38\u0a24", + "\u0a38\u0a24\u0a70\u0a2c\u0a30", + "\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30", + "\u0a28\u0a35\u0a70\u0a2c\u0a30", + "\u0a26\u0a38\u0a70\u0a2c\u0a30" + ], + "fullDate": "EEEE, dd MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rs", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "pa-arab", + "pluralCat": function (n, opt_precision) { if (n >= 0 && n <= 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pa-guru-in.js b/1.2.30/i18n/angular-locale_pa-guru-in.js new file mode 100644 index 0000000000..62d1f9dd01 --- /dev/null +++ b/1.2.30/i18n/angular-locale_pa-guru-in.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0a10\u0a24\u0a35\u0a3e\u0a30", + "\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30", + "\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30", + "\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30", + "\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30", + "\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30", + "\u0a38\u0a3c\u0a28\u0a40\u0a35\u0a3e\u0a30" + ], + "MONTH": [ + "\u0a1c\u0a28\u0a35\u0a30\u0a40", + "\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40", + "\u0a2e\u0a3e\u0a30\u0a1a", + "\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32", + "\u0a2e\u0a08", + "\u0a1c\u0a42\u0a28", + "\u0a1c\u0a41\u0a32\u0a3e\u0a08", + "\u0a05\u0a17\u0a38\u0a24", + "\u0a38\u0a24\u0a70\u0a2c\u0a30", + "\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30", + "\u0a28\u0a35\u0a70\u0a2c\u0a30", + "\u0a26\u0a38\u0a70\u0a2c\u0a30" + ], + "SHORTDAY": [ + "\u0a10\u0a24.", + "\u0a38\u0a4b\u0a2e.", + "\u0a2e\u0a70\u0a17\u0a32.", + "\u0a2c\u0a41\u0a27.", + "\u0a35\u0a40\u0a30.", + "\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30.", + "\u0a38\u0a3c\u0a28\u0a40." + ], + "SHORTMONTH": [ + "\u0a1c\u0a28\u0a35\u0a30\u0a40", + "\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40", + "\u0a2e\u0a3e\u0a30\u0a1a", + "\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32", + "\u0a2e\u0a08", + "\u0a1c\u0a42\u0a28", + "\u0a1c\u0a41\u0a32\u0a3e\u0a08", + "\u0a05\u0a17\u0a38\u0a24", + "\u0a38\u0a24\u0a70\u0a2c\u0a30", + "\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30", + "\u0a28\u0a35\u0a70\u0a2c\u0a30", + "\u0a26\u0a38\u0a70\u0a2c\u0a30" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "pa-guru-in", + "pluralCat": function (n, opt_precision) { if (n >= 0 && n <= 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pa-guru.js b/1.2.30/i18n/angular-locale_pa-guru.js new file mode 100644 index 0000000000..f2d9909fe5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_pa-guru.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0a10\u0a24\u0a35\u0a3e\u0a30", + "\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30", + "\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30", + "\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30", + "\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30", + "\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30", + "\u0a38\u0a3c\u0a28\u0a40\u0a35\u0a3e\u0a30" + ], + "MONTH": [ + "\u0a1c\u0a28\u0a35\u0a30\u0a40", + "\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40", + "\u0a2e\u0a3e\u0a30\u0a1a", + "\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32", + "\u0a2e\u0a08", + "\u0a1c\u0a42\u0a28", + "\u0a1c\u0a41\u0a32\u0a3e\u0a08", + "\u0a05\u0a17\u0a38\u0a24", + "\u0a38\u0a24\u0a70\u0a2c\u0a30", + "\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30", + "\u0a28\u0a35\u0a70\u0a2c\u0a30", + "\u0a26\u0a38\u0a70\u0a2c\u0a30" + ], + "SHORTDAY": [ + "\u0a10\u0a24.", + "\u0a38\u0a4b\u0a2e.", + "\u0a2e\u0a70\u0a17\u0a32.", + "\u0a2c\u0a41\u0a27.", + "\u0a35\u0a40\u0a30.", + "\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30.", + "\u0a38\u0a3c\u0a28\u0a40." + ], + "SHORTMONTH": [ + "\u0a1c\u0a28\u0a35\u0a30\u0a40", + "\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40", + "\u0a2e\u0a3e\u0a30\u0a1a", + "\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32", + "\u0a2e\u0a08", + "\u0a1c\u0a42\u0a28", + "\u0a1c\u0a41\u0a32\u0a3e\u0a08", + "\u0a05\u0a17\u0a38\u0a24", + "\u0a38\u0a24\u0a70\u0a2c\u0a30", + "\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30", + "\u0a28\u0a35\u0a70\u0a2c\u0a30", + "\u0a26\u0a38\u0a70\u0a2c\u0a30" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "pa-guru", + "pluralCat": function (n, opt_precision) { if (n >= 0 && n <= 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pa.js b/1.2.30/i18n/angular-locale_pa.js new file mode 100644 index 0000000000..a73def0d45 --- /dev/null +++ b/1.2.30/i18n/angular-locale_pa.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0a10\u0a24\u0a35\u0a3e\u0a30", + "\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30", + "\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30", + "\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30", + "\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30", + "\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30", + "\u0a38\u0a3c\u0a28\u0a40\u0a35\u0a3e\u0a30" + ], + "MONTH": [ + "\u0a1c\u0a28\u0a35\u0a30\u0a40", + "\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40", + "\u0a2e\u0a3e\u0a30\u0a1a", + "\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32", + "\u0a2e\u0a08", + "\u0a1c\u0a42\u0a28", + "\u0a1c\u0a41\u0a32\u0a3e\u0a08", + "\u0a05\u0a17\u0a38\u0a24", + "\u0a38\u0a24\u0a70\u0a2c\u0a30", + "\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30", + "\u0a28\u0a35\u0a70\u0a2c\u0a30", + "\u0a26\u0a38\u0a70\u0a2c\u0a30" + ], + "SHORTDAY": [ + "\u0a10\u0a24.", + "\u0a38\u0a4b\u0a2e.", + "\u0a2e\u0a70\u0a17\u0a32.", + "\u0a2c\u0a41\u0a27.", + "\u0a35\u0a40\u0a30.", + "\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30.", + "\u0a38\u0a3c\u0a28\u0a40." + ], + "SHORTMONTH": [ + "\u0a1c\u0a28\u0a35\u0a30\u0a40", + "\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40", + "\u0a2e\u0a3e\u0a30\u0a1a", + "\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32", + "\u0a2e\u0a08", + "\u0a1c\u0a42\u0a28", + "\u0a1c\u0a41\u0a32\u0a3e\u0a08", + "\u0a05\u0a17\u0a38\u0a24", + "\u0a38\u0a24\u0a70\u0a2c\u0a30", + "\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30", + "\u0a28\u0a35\u0a70\u0a2c\u0a30", + "\u0a26\u0a38\u0a70\u0a2c\u0a30" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "pa", + "pluralCat": function (n, opt_precision) { if (n >= 0 && n <= 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pl-pl.js b/1.2.30/i18n/angular-locale_pl-pl.js new file mode 100644 index 0000000000..528a01415c --- /dev/null +++ b/1.2.30/i18n/angular-locale_pl-pl.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "niedziela", + "poniedzia\u0142ek", + "wtorek", + "\u015broda", + "czwartek", + "pi\u0105tek", + "sobota" + ], + "MONTH": [ + "stycznia", + "lutego", + "marca", + "kwietnia", + "maja", + "czerwca", + "lipca", + "sierpnia", + "wrze\u015bnia", + "pa\u017adziernika", + "listopada", + "grudnia" + ], + "SHORTDAY": [ + "niedz.", + "pon.", + "wt.", + "\u015br.", + "czw.", + "pt.", + "sob." + ], + "SHORTMONTH": [ + "sty", + "lut", + "mar", + "kwi", + "maj", + "cze", + "lip", + "sie", + "wrz", + "pa\u017a", + "lis", + "gru" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.y HH:mm", + "shortDate": "dd.MM.y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "z\u0142", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "pl-pl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (vf.v == 0 && i != 1 && i % 10 >= 0 && i % 10 <= 1 || vf.v == 0 && i % 10 >= 5 && i % 10 <= 9 || vf.v == 0 && i % 100 >= 12 && i % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pl.js b/1.2.30/i18n/angular-locale_pl.js new file mode 100644 index 0000000000..7adf6c1598 --- /dev/null +++ b/1.2.30/i18n/angular-locale_pl.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "niedziela", + "poniedzia\u0142ek", + "wtorek", + "\u015broda", + "czwartek", + "pi\u0105tek", + "sobota" + ], + "MONTH": [ + "stycznia", + "lutego", + "marca", + "kwietnia", + "maja", + "czerwca", + "lipca", + "sierpnia", + "wrze\u015bnia", + "pa\u017adziernika", + "listopada", + "grudnia" + ], + "SHORTDAY": [ + "niedz.", + "pon.", + "wt.", + "\u015br.", + "czw.", + "pt.", + "sob." + ], + "SHORTMONTH": [ + "sty", + "lut", + "mar", + "kwi", + "maj", + "cze", + "lip", + "sie", + "wrz", + "pa\u017a", + "lis", + "gru" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.y HH:mm", + "shortDate": "dd.MM.y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "z\u0142", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "pl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (vf.v == 0 && i != 1 && i % 10 >= 0 && i % 10 <= 1 || vf.v == 0 && i % 10 >= 5 && i % 10 <= 9 || vf.v == 0 && i % 100 >= 12 && i % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ps-af.js b/1.2.30/i18n/angular-locale_ps-af.js new file mode 100644 index 0000000000..1b6a6a9441 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ps-af.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u063a.\u0645.", + "\u063a.\u0648." + ], + "DAY": [ + "\u06cc\u06a9\u0634\u0646\u0628\u0647", + "\u062f\u0648\u0634\u0646\u0628\u0647", + "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", + "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", + "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", + "\u062c\u0645\u0639\u0647", + "\u0634\u0646\u0628\u0647" + ], + "MONTH": [ + "\u062c\u0646\u0648\u0631\u064a", + "\u0641\u0628\u0631\u0648\u0631\u064a", + "\u0645\u0627\u0631\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u06cc", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644\u0627\u06cc", + "\u0627\u06ab\u0633\u062a", + "\u0633\u067e\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u06cc\u06a9\u0634\u0646\u0628\u0647", + "\u062f\u0648\u0634\u0646\u0628\u0647", + "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", + "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", + "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", + "\u062c\u0645\u0639\u0647", + "\u0634\u0646\u0628\u0647" + ], + "SHORTMONTH": [ + "\u062c\u0646\u0648\u0631\u064a", + "\u0641\u0628\u0631\u0648\u0631\u064a", + "\u0645\u0627\u0631\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u06cc", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644\u0627\u06cc", + "\u0627\u06ab\u0633\u062a", + "\u0633\u067e\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE \u062f y \u062f MMMM d", + "longDate": "\u062f y \u062f MMMM d", + "medium": "d MMM y H:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "H:mm:ss", + "short": "y/M/d H:mm", + "shortDate": "y/M/d", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Af.", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ps-af", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ps.js b/1.2.30/i18n/angular-locale_ps.js new file mode 100644 index 0000000000..b233af9df1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ps.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u063a.\u0645.", + "\u063a.\u0648." + ], + "DAY": [ + "\u06cc\u06a9\u0634\u0646\u0628\u0647", + "\u062f\u0648\u0634\u0646\u0628\u0647", + "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", + "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", + "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", + "\u062c\u0645\u0639\u0647", + "\u0634\u0646\u0628\u0647" + ], + "MONTH": [ + "\u062c\u0646\u0648\u0631\u064a", + "\u0641\u0628\u0631\u0648\u0631\u064a", + "\u0645\u0627\u0631\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u06cc", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644\u0627\u06cc", + "\u0627\u06ab\u0633\u062a", + "\u0633\u067e\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u06cc\u06a9\u0634\u0646\u0628\u0647", + "\u062f\u0648\u0634\u0646\u0628\u0647", + "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", + "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", + "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", + "\u062c\u0645\u0639\u0647", + "\u0634\u0646\u0628\u0647" + ], + "SHORTMONTH": [ + "\u062c\u0646\u0648\u0631\u064a", + "\u0641\u0628\u0631\u0648\u0631\u064a", + "\u0645\u0627\u0631\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u06cc", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644\u0627\u06cc", + "\u0627\u06ab\u0633\u062a", + "\u0633\u067e\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE \u062f y \u062f MMMM d", + "longDate": "\u062f y \u062f MMMM d", + "medium": "d MMM y H:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "H:mm:ss", + "short": "y/M/d H:mm", + "shortDate": "y/M/d", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Af.", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ps", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pt-ao.js b/1.2.30/i18n/angular-locale_pt-ao.js new file mode 100644 index 0000000000..78aeb4d2c3 --- /dev/null +++ b/1.2.30/i18n/angular-locale_pt-ao.js @@ -0,0 +1,128 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +function getWT(v, f) { + if (f === 0) { + return {w: 0, t: 0}; + } + + while ((f % 10) === 0) { + f /= 10; + v--; + } + + return {w: v, t: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domingo", + "segunda-feira", + "ter\u00e7a-feira", + "quarta-feira", + "quinta-feira", + "sexta-feira", + "s\u00e1bado" + ], + "MONTH": [ + "janeiro", + "fevereiro", + "mar\u00e7o", + "abril", + "maio", + "junho", + "julho", + "agosto", + "setembro", + "outubro", + "novembro", + "dezembro" + ], + "SHORTDAY": [ + "dom", + "seg", + "ter", + "qua", + "qui", + "sex", + "s\u00e1b" + ], + "SHORTMONTH": [ + "jan", + "fev", + "mar", + "abr", + "mai", + "jun", + "jul", + "ago", + "set", + "out", + "nov", + "dez" + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Kz", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "pt-ao", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); var wt = getWT(vf.v, vf.f); if (i == 1 && vf.v == 0 || i == 0 && wt.t == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pt-br.js b/1.2.30/i18n/angular-locale_pt-br.js new file mode 100644 index 0000000000..5a63341bbb --- /dev/null +++ b/1.2.30/i18n/angular-locale_pt-br.js @@ -0,0 +1,128 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +function getWT(v, f) { + if (f === 0) { + return {w: 0, t: 0}; + } + + while ((f % 10) === 0) { + f /= 10; + v--; + } + + return {w: v, t: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domingo", + "segunda-feira", + "ter\u00e7a-feira", + "quarta-feira", + "quinta-feira", + "sexta-feira", + "s\u00e1bado" + ], + "MONTH": [ + "janeiro", + "fevereiro", + "mar\u00e7o", + "abril", + "maio", + "junho", + "julho", + "agosto", + "setembro", + "outubro", + "novembro", + "dezembro" + ], + "SHORTDAY": [ + "dom", + "seg", + "ter", + "qua", + "qui", + "sex", + "s\u00e1b" + ], + "SHORTMONTH": [ + "jan", + "fev", + "mar", + "abr", + "mai", + "jun", + "jul", + "ago", + "set", + "out", + "nov", + "dez" + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "pt-br", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); var wt = getWT(vf.v, vf.f); if (i == 1 && vf.v == 0 || i == 0 && wt.t == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pt-cv.js b/1.2.30/i18n/angular-locale_pt-cv.js new file mode 100644 index 0000000000..204490483d --- /dev/null +++ b/1.2.30/i18n/angular-locale_pt-cv.js @@ -0,0 +1,128 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +function getWT(v, f) { + if (f === 0) { + return {w: 0, t: 0}; + } + + while ((f % 10) === 0) { + f /= 10; + v--; + } + + return {w: v, t: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domingo", + "segunda-feira", + "ter\u00e7a-feira", + "quarta-feira", + "quinta-feira", + "sexta-feira", + "s\u00e1bado" + ], + "MONTH": [ + "janeiro", + "fevereiro", + "mar\u00e7o", + "abril", + "maio", + "junho", + "julho", + "agosto", + "setembro", + "outubro", + "novembro", + "dezembro" + ], + "SHORTDAY": [ + "dom", + "seg", + "ter", + "qua", + "qui", + "sex", + "s\u00e1b" + ], + "SHORTMONTH": [ + "jan", + "fev", + "mar", + "abr", + "mai", + "jun", + "jul", + "ago", + "set", + "out", + "nov", + "dez" + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CVE", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "pt-cv", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); var wt = getWT(vf.v, vf.f); if (i == 1 && vf.v == 0 || i == 0 && wt.t == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pt-gw.js b/1.2.30/i18n/angular-locale_pt-gw.js new file mode 100644 index 0000000000..34dc33fe59 --- /dev/null +++ b/1.2.30/i18n/angular-locale_pt-gw.js @@ -0,0 +1,128 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +function getWT(v, f) { + if (f === 0) { + return {w: 0, t: 0}; + } + + while ((f % 10) === 0) { + f /= 10; + v--; + } + + return {w: v, t: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domingo", + "segunda-feira", + "ter\u00e7a-feira", + "quarta-feira", + "quinta-feira", + "sexta-feira", + "s\u00e1bado" + ], + "MONTH": [ + "janeiro", + "fevereiro", + "mar\u00e7o", + "abril", + "maio", + "junho", + "julho", + "agosto", + "setembro", + "outubro", + "novembro", + "dezembro" + ], + "SHORTDAY": [ + "dom", + "seg", + "ter", + "qua", + "qui", + "sex", + "s\u00e1b" + ], + "SHORTMONTH": [ + "jan", + "fev", + "mar", + "abr", + "mai", + "jun", + "jul", + "ago", + "set", + "out", + "nov", + "dez" + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "pt-gw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); var wt = getWT(vf.v, vf.f); if (i == 1 && vf.v == 0 || i == 0 && wt.t == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pt-mo.js b/1.2.30/i18n/angular-locale_pt-mo.js new file mode 100644 index 0000000000..acf408d4b7 --- /dev/null +++ b/1.2.30/i18n/angular-locale_pt-mo.js @@ -0,0 +1,128 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +function getWT(v, f) { + if (f === 0) { + return {w: 0, t: 0}; + } + + while ((f % 10) === 0) { + f /= 10; + v--; + } + + return {w: v, t: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domingo", + "segunda-feira", + "ter\u00e7a-feira", + "quarta-feira", + "quinta-feira", + "sexta-feira", + "s\u00e1bado" + ], + "MONTH": [ + "janeiro", + "fevereiro", + "mar\u00e7o", + "abril", + "maio", + "junho", + "julho", + "agosto", + "setembro", + "outubro", + "novembro", + "dezembro" + ], + "SHORTDAY": [ + "dom", + "seg", + "ter", + "qua", + "qui", + "sex", + "s\u00e1b" + ], + "SHORTMONTH": [ + "jan", + "fev", + "mar", + "abr", + "mai", + "jun", + "jul", + "ago", + "set", + "out", + "nov", + "dez" + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MOP", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "pt-mo", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); var wt = getWT(vf.v, vf.f); if (i == 1 && vf.v == 0 || i == 0 && wt.t == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pt-mz.js b/1.2.30/i18n/angular-locale_pt-mz.js new file mode 100644 index 0000000000..2b8f6eccc4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_pt-mz.js @@ -0,0 +1,128 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +function getWT(v, f) { + if (f === 0) { + return {w: 0, t: 0}; + } + + while ((f % 10) === 0) { + f /= 10; + v--; + } + + return {w: v, t: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domingo", + "segunda-feira", + "ter\u00e7a-feira", + "quarta-feira", + "quinta-feira", + "sexta-feira", + "s\u00e1bado" + ], + "MONTH": [ + "janeiro", + "fevereiro", + "mar\u00e7o", + "abril", + "maio", + "junho", + "julho", + "agosto", + "setembro", + "outubro", + "novembro", + "dezembro" + ], + "SHORTDAY": [ + "dom", + "seg", + "ter", + "qua", + "qui", + "sex", + "s\u00e1b" + ], + "SHORTMONTH": [ + "jan", + "fev", + "mar", + "abr", + "mai", + "jun", + "jul", + "ago", + "set", + "out", + "nov", + "dez" + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MTn", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "pt-mz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); var wt = getWT(vf.v, vf.f); if (i == 1 && vf.v == 0 || i == 0 && wt.t == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pt-pt.js b/1.2.30/i18n/angular-locale_pt-pt.js new file mode 100644 index 0000000000..f43229bf42 --- /dev/null +++ b/1.2.30/i18n/angular-locale_pt-pt.js @@ -0,0 +1,128 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +function getWT(v, f) { + if (f === 0) { + return {w: 0, t: 0}; + } + + while ((f % 10) === 0) { + f /= 10; + v--; + } + + return {w: v, t: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "da manh\u00e3", + "da tarde" + ], + "DAY": [ + "domingo", + "segunda-feira", + "ter\u00e7a-feira", + "quarta-feira", + "quinta-feira", + "sexta-feira", + "s\u00e1bado" + ], + "MONTH": [ + "Janeiro", + "Fevereiro", + "Mar\u00e7o", + "Abril", + "Maio", + "Junho", + "Julho", + "Agosto", + "Setembro", + "Outubro", + "Novembro", + "Dezembro" + ], + "SHORTDAY": [ + "dom", + "seg", + "ter", + "qua", + "qui", + "sex", + "s\u00e1b" + ], + "SHORTMONTH": [ + "Jan", + "Fev", + "Mar", + "Abr", + "Mai", + "Jun", + "Jul", + "Ago", + "Set", + "Out", + "Nov", + "Dez" + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "pt-pt", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); var wt = getWT(vf.v, vf.f); if (i == 1 && vf.v == 0 || i == 0 && wt.t == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pt-st.js b/1.2.30/i18n/angular-locale_pt-st.js new file mode 100644 index 0000000000..11f104fd10 --- /dev/null +++ b/1.2.30/i18n/angular-locale_pt-st.js @@ -0,0 +1,128 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +function getWT(v, f) { + if (f === 0) { + return {w: 0, t: 0}; + } + + while ((f % 10) === 0) { + f /= 10; + v--; + } + + return {w: v, t: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domingo", + "segunda-feira", + "ter\u00e7a-feira", + "quarta-feira", + "quinta-feira", + "sexta-feira", + "s\u00e1bado" + ], + "MONTH": [ + "janeiro", + "fevereiro", + "mar\u00e7o", + "abril", + "maio", + "junho", + "julho", + "agosto", + "setembro", + "outubro", + "novembro", + "dezembro" + ], + "SHORTDAY": [ + "dom", + "seg", + "ter", + "qua", + "qui", + "sex", + "s\u00e1b" + ], + "SHORTMONTH": [ + "jan", + "fev", + "mar", + "abr", + "mai", + "jun", + "jul", + "ago", + "set", + "out", + "nov", + "dez" + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Db", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "pt-st", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); var wt = getWT(vf.v, vf.f); if (i == 1 && vf.v == 0 || i == 0 && wt.t == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pt-tl.js b/1.2.30/i18n/angular-locale_pt-tl.js new file mode 100644 index 0000000000..10d7dfa0ad --- /dev/null +++ b/1.2.30/i18n/angular-locale_pt-tl.js @@ -0,0 +1,128 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +function getWT(v, f) { + if (f === 0) { + return {w: 0, t: 0}; + } + + while ((f % 10) === 0) { + f /= 10; + v--; + } + + return {w: v, t: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domingo", + "segunda-feira", + "ter\u00e7a-feira", + "quarta-feira", + "quinta-feira", + "sexta-feira", + "s\u00e1bado" + ], + "MONTH": [ + "janeiro", + "fevereiro", + "mar\u00e7o", + "abril", + "maio", + "junho", + "julho", + "agosto", + "setembro", + "outubro", + "novembro", + "dezembro" + ], + "SHORTDAY": [ + "dom", + "seg", + "ter", + "qua", + "qui", + "sex", + "s\u00e1b" + ], + "SHORTMONTH": [ + "jan", + "fev", + "mar", + "abr", + "mai", + "jun", + "jul", + "ago", + "set", + "out", + "nov", + "dez" + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "pt-tl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); var wt = getWT(vf.v, vf.f); if (i == 1 && vf.v == 0 || i == 0 && wt.t == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_pt.js b/1.2.30/i18n/angular-locale_pt.js new file mode 100644 index 0000000000..77e05bd57d --- /dev/null +++ b/1.2.30/i18n/angular-locale_pt.js @@ -0,0 +1,128 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +function getWT(v, f) { + if (f === 0) { + return {w: 0, t: 0}; + } + + while ((f % 10) === 0) { + f /= 10; + v--; + } + + return {w: v, t: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "domingo", + "segunda-feira", + "ter\u00e7a-feira", + "quarta-feira", + "quinta-feira", + "sexta-feira", + "s\u00e1bado" + ], + "MONTH": [ + "janeiro", + "fevereiro", + "mar\u00e7o", + "abril", + "maio", + "junho", + "julho", + "agosto", + "setembro", + "outubro", + "novembro", + "dezembro" + ], + "SHORTDAY": [ + "dom", + "seg", + "ter", + "qua", + "qui", + "sex", + "s\u00e1b" + ], + "SHORTMONTH": [ + "jan", + "fev", + "mar", + "abr", + "mai", + "jun", + "jul", + "ago", + "set", + "out", + "nov", + "dez" + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R$", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "pt", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); var wt = getWT(vf.v, vf.f); if (i == 1 && vf.v == 0 || i == 0 && wt.t == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_rm-ch.js b/1.2.30/i18n/angular-locale_rm-ch.js new file mode 100644 index 0000000000..3d0967a2bf --- /dev/null +++ b/1.2.30/i18n/angular-locale_rm-ch.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "am", + "sm" + ], + "DAY": [ + "dumengia", + "glindesdi", + "mardi", + "mesemna", + "gievgia", + "venderdi", + "sonda" + ], + "MONTH": [ + "schaner", + "favrer", + "mars", + "avrigl", + "matg", + "zercladur", + "fanadur", + "avust", + "settember", + "october", + "november", + "december" + ], + "SHORTDAY": [ + "du", + "gli", + "ma", + "me", + "gie", + "ve", + "so" + ], + "SHORTMONTH": [ + "schan.", + "favr.", + "mars", + "avr.", + "matg", + "zercl.", + "fan.", + "avust", + "sett.", + "oct.", + "nov.", + "dec." + ], + "fullDate": "EEEE, 'ils' d 'da' MMMM y", + "longDate": "d 'da' MMMM y", + "medium": "dd-MM-y HH:mm:ss", + "mediumDate": "dd-MM-y", + "mediumTime": "HH:mm:ss", + "short": "dd-MM-yy HH:mm", + "shortDate": "dd-MM-yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CHF", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u2019", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "rm-ch", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_rm.js b/1.2.30/i18n/angular-locale_rm.js new file mode 100644 index 0000000000..4c3cc9c7e6 --- /dev/null +++ b/1.2.30/i18n/angular-locale_rm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "am", + "sm" + ], + "DAY": [ + "dumengia", + "glindesdi", + "mardi", + "mesemna", + "gievgia", + "venderdi", + "sonda" + ], + "MONTH": [ + "schaner", + "favrer", + "mars", + "avrigl", + "matg", + "zercladur", + "fanadur", + "avust", + "settember", + "october", + "november", + "december" + ], + "SHORTDAY": [ + "du", + "gli", + "ma", + "me", + "gie", + "ve", + "so" + ], + "SHORTMONTH": [ + "schan.", + "favr.", + "mars", + "avr.", + "matg", + "zercl.", + "fan.", + "avust", + "sett.", + "oct.", + "nov.", + "dec." + ], + "fullDate": "EEEE, 'ils' d 'da' MMMM y", + "longDate": "d 'da' MMMM y", + "medium": "dd-MM-y HH:mm:ss", + "mediumDate": "dd-MM-y", + "mediumTime": "HH:mm:ss", + "short": "dd-MM-yy HH:mm", + "shortDate": "dd-MM-yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CHF", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u2019", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "rm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_rn-bi.js b/1.2.30/i18n/angular-locale_rn-bi.js new file mode 100644 index 0000000000..4933056359 --- /dev/null +++ b/1.2.30/i18n/angular-locale_rn-bi.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Z.MU.", + "Z.MW." + ], + "DAY": [ + "Ku w'indwi", + "Ku wa mbere", + "Ku wa kabiri", + "Ku wa gatatu", + "Ku wa kane", + "Ku wa gatanu", + "Ku wa gatandatu" + ], + "MONTH": [ + "Nzero", + "Ruhuhuma", + "Ntwarante", + "Ndamukiza", + "Rusama", + "Ruheshi", + "Mukakaro", + "Nyandagaro", + "Nyakanga", + "Gitugutu", + "Munyonyo", + "Kigarama" + ], + "SHORTDAY": [ + "cu.", + "mbe.", + "kab.", + "gtu.", + "kan.", + "gnu.", + "gnd." + ], + "SHORTMONTH": [ + "Mut.", + "Gas.", + "Wer.", + "Mat.", + "Gic.", + "Kam.", + "Nya.", + "Kan.", + "Nze.", + "Ukw.", + "Ugu.", + "Uku." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FBu", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "rn-bi", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_rn.js b/1.2.30/i18n/angular-locale_rn.js new file mode 100644 index 0000000000..4d9ba58741 --- /dev/null +++ b/1.2.30/i18n/angular-locale_rn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Z.MU.", + "Z.MW." + ], + "DAY": [ + "Ku w'indwi", + "Ku wa mbere", + "Ku wa kabiri", + "Ku wa gatatu", + "Ku wa kane", + "Ku wa gatanu", + "Ku wa gatandatu" + ], + "MONTH": [ + "Nzero", + "Ruhuhuma", + "Ntwarante", + "Ndamukiza", + "Rusama", + "Ruheshi", + "Mukakaro", + "Nyandagaro", + "Nyakanga", + "Gitugutu", + "Munyonyo", + "Kigarama" + ], + "SHORTDAY": [ + "cu.", + "mbe.", + "kab.", + "gtu.", + "kan.", + "gnu.", + "gnd." + ], + "SHORTMONTH": [ + "Mut.", + "Gas.", + "Wer.", + "Mat.", + "Gic.", + "Kam.", + "Nya.", + "Kan.", + "Nze.", + "Ukw.", + "Ugu.", + "Uku." + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FBu", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "rn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ro-md.js b/1.2.30/i18n/angular-locale_ro-md.js new file mode 100644 index 0000000000..d88f3a7bab --- /dev/null +++ b/1.2.30/i18n/angular-locale_ro-md.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "duminic\u0103", + "luni", + "mar\u021bi", + "miercuri", + "joi", + "vineri", + "s\u00e2mb\u0103t\u0103" + ], + "MONTH": [ + "ianuarie", + "februarie", + "martie", + "aprilie", + "mai", + "iunie", + "iulie", + "august", + "septembrie", + "octombrie", + "noiembrie", + "decembrie" + ], + "SHORTDAY": [ + "Dum", + "Lun", + "Mar", + "Mie", + "Joi", + "Vin", + "S\u00e2m" + ], + "SHORTMONTH": [ + "ian.", + "feb.", + "mar.", + "apr.", + "mai", + "iun.", + "iul.", + "aug.", + "sept.", + "oct.", + "nov.", + "dec." + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.y HH:mm", + "shortDate": "dd.MM.y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MDL", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ro-md", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } if (vf.v != 0 || n == 0 || n != 1 && n % 100 >= 1 && n % 100 <= 19) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ro-ro.js b/1.2.30/i18n/angular-locale_ro-ro.js new file mode 100644 index 0000000000..2f500788fd --- /dev/null +++ b/1.2.30/i18n/angular-locale_ro-ro.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "duminic\u0103", + "luni", + "mar\u021bi", + "miercuri", + "joi", + "vineri", + "s\u00e2mb\u0103t\u0103" + ], + "MONTH": [ + "ianuarie", + "februarie", + "martie", + "aprilie", + "mai", + "iunie", + "iulie", + "august", + "septembrie", + "octombrie", + "noiembrie", + "decembrie" + ], + "SHORTDAY": [ + "Dum", + "Lun", + "Mar", + "Mie", + "Joi", + "Vin", + "S\u00e2m" + ], + "SHORTMONTH": [ + "ian.", + "feb.", + "mar.", + "apr.", + "mai", + "iun.", + "iul.", + "aug.", + "sept.", + "oct.", + "nov.", + "dec." + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.y HH:mm", + "shortDate": "dd.MM.y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "RON", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ro-ro", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } if (vf.v != 0 || n == 0 || n != 1 && n % 100 >= 1 && n % 100 <= 19) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ro.js b/1.2.30/i18n/angular-locale_ro.js new file mode 100644 index 0000000000..e1f87622ae --- /dev/null +++ b/1.2.30/i18n/angular-locale_ro.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "a.m.", + "p.m." + ], + "DAY": [ + "duminic\u0103", + "luni", + "mar\u021bi", + "miercuri", + "joi", + "vineri", + "s\u00e2mb\u0103t\u0103" + ], + "MONTH": [ + "ianuarie", + "februarie", + "martie", + "aprilie", + "mai", + "iunie", + "iulie", + "august", + "septembrie", + "octombrie", + "noiembrie", + "decembrie" + ], + "SHORTDAY": [ + "Dum", + "Lun", + "Mar", + "Mie", + "Joi", + "Vin", + "S\u00e2m" + ], + "SHORTMONTH": [ + "ian.", + "feb.", + "mar.", + "apr.", + "mai", + "iun.", + "iul.", + "aug.", + "sept.", + "oct.", + "nov.", + "dec." + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.y HH:mm", + "shortDate": "dd.MM.y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "RON", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ro", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } if (vf.v != 0 || n == 0 || n != 1 && n % 100 >= 1 && n % 100 <= 19) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_rof-tz.js b/1.2.30/i18n/angular-locale_rof-tz.js new file mode 100644 index 0000000000..6dc75c5188 --- /dev/null +++ b/1.2.30/i18n/angular-locale_rof-tz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "kang'ama", + "kingoto" + ], + "DAY": [ + "Ijumapili", + "Ijumatatu", + "Ijumanne", + "Ijumatano", + "Alhamisi", + "Ijumaa", + "Ijumamosi" + ], + "MONTH": [ + "Mweri wa kwanza", + "Mweri wa kaili", + "Mweri wa katatu", + "Mweri wa kaana", + "Mweri wa tanu", + "Mweri wa sita", + "Mweri wa saba", + "Mweri wa nane", + "Mweri wa tisa", + "Mweri wa ikumi", + "Mweri wa ikumi na moja", + "Mweri wa ikumi na mbili" + ], + "SHORTDAY": [ + "Ijp", + "Ijt", + "Ijn", + "Ijtn", + "Alh", + "Iju", + "Ijm" + ], + "SHORTMONTH": [ + "M1", + "M2", + "M3", + "M4", + "M5", + "M6", + "M7", + "M8", + "M9", + "M10", + "M11", + "M12" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "rof-tz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_rof.js b/1.2.30/i18n/angular-locale_rof.js new file mode 100644 index 0000000000..55ecbb6e3d --- /dev/null +++ b/1.2.30/i18n/angular-locale_rof.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "kang'ama", + "kingoto" + ], + "DAY": [ + "Ijumapili", + "Ijumatatu", + "Ijumanne", + "Ijumatano", + "Alhamisi", + "Ijumaa", + "Ijumamosi" + ], + "MONTH": [ + "Mweri wa kwanza", + "Mweri wa kaili", + "Mweri wa katatu", + "Mweri wa kaana", + "Mweri wa tanu", + "Mweri wa sita", + "Mweri wa saba", + "Mweri wa nane", + "Mweri wa tisa", + "Mweri wa ikumi", + "Mweri wa ikumi na moja", + "Mweri wa ikumi na mbili" + ], + "SHORTDAY": [ + "Ijp", + "Ijt", + "Ijn", + "Ijtn", + "Alh", + "Iju", + "Ijm" + ], + "SHORTMONTH": [ + "M1", + "M2", + "M3", + "M4", + "M5", + "M6", + "M7", + "M8", + "M9", + "M10", + "M11", + "M12" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "rof", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ru-by.js b/1.2.30/i18n/angular-locale_ru-by.js new file mode 100644 index 0000000000..6b4dfb0611 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ru-by.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435", + "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a", + "\u0432\u0442\u043e\u0440\u043d\u0438\u043a", + "\u0441\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0435\u0440\u0433", + "\u043f\u044f\u0442\u043d\u0438\u0446\u0430", + "\u0441\u0443\u0431\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u044f\u043d\u0432\u0430\u0440\u044f", + "\u0444\u0435\u0432\u0440\u0430\u043b\u044f", + "\u043c\u0430\u0440\u0442\u0430", + "\u0430\u043f\u0440\u0435\u043b\u044f", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044f", + "\u0438\u044e\u043b\u044f", + "\u0430\u0432\u0433\u0443\u0441\u0442\u0430", + "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f", + "\u043e\u043a\u0442\u044f\u0431\u0440\u044f", + "\u043d\u043e\u044f\u0431\u0440\u044f", + "\u0434\u0435\u043a\u0430\u0431\u0440\u044f" + ], + "SHORTDAY": [ + "\u0432\u0441", + "\u043f\u043d", + "\u0432\u0442", + "\u0441\u0440", + "\u0447\u0442", + "\u043f\u0442", + "\u0441\u0431" + ], + "SHORTMONTH": [ + "\u044f\u043d\u0432.", + "\u0444\u0435\u0432\u0440.", + "\u043c\u0430\u0440\u0442\u0430", + "\u0430\u043f\u0440.", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044f", + "\u0438\u044e\u043b\u044f", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043d\u0442.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u044f\u0431.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, d MMMM y '\u0433'.", + "longDate": "d MMMM y '\u0433'.", + "medium": "d MMM y '\u0433'. H:mm:ss", + "mediumDate": "d MMM y '\u0433'.", + "mediumTime": "H:mm:ss", + "short": "dd.MM.yy H:mm", + "shortDate": "dd.MM.yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "BYR", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ru-by", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (vf.v == 0 && i % 10 == 0 || vf.v == 0 && i % 10 >= 5 && i % 10 <= 9 || vf.v == 0 && i % 100 >= 11 && i % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ru-kg.js b/1.2.30/i18n/angular-locale_ru-kg.js new file mode 100644 index 0000000000..af6b377103 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ru-kg.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435", + "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a", + "\u0432\u0442\u043e\u0440\u043d\u0438\u043a", + "\u0441\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0435\u0440\u0433", + "\u043f\u044f\u0442\u043d\u0438\u0446\u0430", + "\u0441\u0443\u0431\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u044f\u043d\u0432\u0430\u0440\u044f", + "\u0444\u0435\u0432\u0440\u0430\u043b\u044f", + "\u043c\u0430\u0440\u0442\u0430", + "\u0430\u043f\u0440\u0435\u043b\u044f", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044f", + "\u0438\u044e\u043b\u044f", + "\u0430\u0432\u0433\u0443\u0441\u0442\u0430", + "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f", + "\u043e\u043a\u0442\u044f\u0431\u0440\u044f", + "\u043d\u043e\u044f\u0431\u0440\u044f", + "\u0434\u0435\u043a\u0430\u0431\u0440\u044f" + ], + "SHORTDAY": [ + "\u0432\u0441", + "\u043f\u043d", + "\u0432\u0442", + "\u0441\u0440", + "\u0447\u0442", + "\u043f\u0442", + "\u0441\u0431" + ], + "SHORTMONTH": [ + "\u044f\u043d\u0432.", + "\u0444\u0435\u0432\u0440.", + "\u043c\u0430\u0440\u0442\u0430", + "\u0430\u043f\u0440.", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044f", + "\u0438\u044e\u043b\u044f", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043d\u0442.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u044f\u0431.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, d MMMM y '\u0433'.", + "longDate": "d MMMM y '\u0433'.", + "medium": "d MMM y '\u0433'. H:mm:ss", + "mediumDate": "d MMM y '\u0433'.", + "mediumTime": "H:mm:ss", + "short": "dd.MM.yy H:mm", + "shortDate": "dd.MM.yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "KGS", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ru-kg", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (vf.v == 0 && i % 10 == 0 || vf.v == 0 && i % 10 >= 5 && i % 10 <= 9 || vf.v == 0 && i % 100 >= 11 && i % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ru-kz.js b/1.2.30/i18n/angular-locale_ru-kz.js new file mode 100644 index 0000000000..0e2568b5d9 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ru-kz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435", + "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a", + "\u0432\u0442\u043e\u0440\u043d\u0438\u043a", + "\u0441\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0435\u0440\u0433", + "\u043f\u044f\u0442\u043d\u0438\u0446\u0430", + "\u0441\u0443\u0431\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u044f\u043d\u0432\u0430\u0440\u044f", + "\u0444\u0435\u0432\u0440\u0430\u043b\u044f", + "\u043c\u0430\u0440\u0442\u0430", + "\u0430\u043f\u0440\u0435\u043b\u044f", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044f", + "\u0438\u044e\u043b\u044f", + "\u0430\u0432\u0433\u0443\u0441\u0442\u0430", + "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f", + "\u043e\u043a\u0442\u044f\u0431\u0440\u044f", + "\u043d\u043e\u044f\u0431\u0440\u044f", + "\u0434\u0435\u043a\u0430\u0431\u0440\u044f" + ], + "SHORTDAY": [ + "\u0432\u0441", + "\u043f\u043d", + "\u0432\u0442", + "\u0441\u0440", + "\u0447\u0442", + "\u043f\u0442", + "\u0441\u0431" + ], + "SHORTMONTH": [ + "\u044f\u043d\u0432.", + "\u0444\u0435\u0432\u0440.", + "\u043c\u0430\u0440\u0442\u0430", + "\u0430\u043f\u0440.", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044f", + "\u0438\u044e\u043b\u044f", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043d\u0442.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u044f\u0431.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, d MMMM y '\u0433'.", + "longDate": "d MMMM y '\u0433'.", + "medium": "d MMM y '\u0433'. H:mm:ss", + "mediumDate": "d MMM y '\u0433'.", + "mediumTime": "H:mm:ss", + "short": "dd.MM.yy H:mm", + "shortDate": "dd.MM.yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b8", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ru-kz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (vf.v == 0 && i % 10 == 0 || vf.v == 0 && i % 10 >= 5 && i % 10 <= 9 || vf.v == 0 && i % 100 >= 11 && i % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ru-md.js b/1.2.30/i18n/angular-locale_ru-md.js new file mode 100644 index 0000000000..448860b179 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ru-md.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435", + "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a", + "\u0432\u0442\u043e\u0440\u043d\u0438\u043a", + "\u0441\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0435\u0440\u0433", + "\u043f\u044f\u0442\u043d\u0438\u0446\u0430", + "\u0441\u0443\u0431\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u044f\u043d\u0432\u0430\u0440\u044f", + "\u0444\u0435\u0432\u0440\u0430\u043b\u044f", + "\u043c\u0430\u0440\u0442\u0430", + "\u0430\u043f\u0440\u0435\u043b\u044f", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044f", + "\u0438\u044e\u043b\u044f", + "\u0430\u0432\u0433\u0443\u0441\u0442\u0430", + "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f", + "\u043e\u043a\u0442\u044f\u0431\u0440\u044f", + "\u043d\u043e\u044f\u0431\u0440\u044f", + "\u0434\u0435\u043a\u0430\u0431\u0440\u044f" + ], + "SHORTDAY": [ + "\u0432\u0441", + "\u043f\u043d", + "\u0432\u0442", + "\u0441\u0440", + "\u0447\u0442", + "\u043f\u0442", + "\u0441\u0431" + ], + "SHORTMONTH": [ + "\u044f\u043d\u0432.", + "\u0444\u0435\u0432\u0440.", + "\u043c\u0430\u0440\u0442\u0430", + "\u0430\u043f\u0440.", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044f", + "\u0438\u044e\u043b\u044f", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043d\u0442.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u044f\u0431.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, d MMMM y '\u0433'.", + "longDate": "d MMMM y '\u0433'.", + "medium": "d MMM y '\u0433'. H:mm:ss", + "mediumDate": "d MMM y '\u0433'.", + "mediumTime": "H:mm:ss", + "short": "dd.MM.yy H:mm", + "shortDate": "dd.MM.yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MDL", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ru-md", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (vf.v == 0 && i % 10 == 0 || vf.v == 0 && i % 10 >= 5 && i % 10 <= 9 || vf.v == 0 && i % 100 >= 11 && i % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ru-ru.js b/1.2.30/i18n/angular-locale_ru-ru.js new file mode 100644 index 0000000000..cac5244d6b --- /dev/null +++ b/1.2.30/i18n/angular-locale_ru-ru.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435", + "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a", + "\u0432\u0442\u043e\u0440\u043d\u0438\u043a", + "\u0441\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0435\u0440\u0433", + "\u043f\u044f\u0442\u043d\u0438\u0446\u0430", + "\u0441\u0443\u0431\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u044f\u043d\u0432\u0430\u0440\u044f", + "\u0444\u0435\u0432\u0440\u0430\u043b\u044f", + "\u043c\u0430\u0440\u0442\u0430", + "\u0430\u043f\u0440\u0435\u043b\u044f", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044f", + "\u0438\u044e\u043b\u044f", + "\u0430\u0432\u0433\u0443\u0441\u0442\u0430", + "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f", + "\u043e\u043a\u0442\u044f\u0431\u0440\u044f", + "\u043d\u043e\u044f\u0431\u0440\u044f", + "\u0434\u0435\u043a\u0430\u0431\u0440\u044f" + ], + "SHORTDAY": [ + "\u0432\u0441", + "\u043f\u043d", + "\u0432\u0442", + "\u0441\u0440", + "\u0447\u0442", + "\u043f\u0442", + "\u0441\u0431" + ], + "SHORTMONTH": [ + "\u044f\u043d\u0432.", + "\u0444\u0435\u0432\u0440.", + "\u043c\u0430\u0440\u0442\u0430", + "\u0430\u043f\u0440.", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044f", + "\u0438\u044e\u043b\u044f", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043d\u0442.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u044f\u0431.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, d MMMM y '\u0433'.", + "longDate": "d MMMM y '\u0433'.", + "medium": "d MMM y '\u0433'. H:mm:ss", + "mediumDate": "d MMM y '\u0433'.", + "mediumTime": "H:mm:ss", + "short": "dd.MM.yy H:mm", + "shortDate": "dd.MM.yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u0440\u0443\u0431.", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ru-ru", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (vf.v == 0 && i % 10 == 0 || vf.v == 0 && i % 10 >= 5 && i % 10 <= 9 || vf.v == 0 && i % 100 >= 11 && i % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ru-ua.js b/1.2.30/i18n/angular-locale_ru-ua.js new file mode 100644 index 0000000000..2e170a57b1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ru-ua.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435", + "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a", + "\u0432\u0442\u043e\u0440\u043d\u0438\u043a", + "\u0441\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0435\u0440\u0433", + "\u043f\u044f\u0442\u043d\u0438\u0446\u0430", + "\u0441\u0443\u0431\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u044f\u043d\u0432\u0430\u0440\u044f", + "\u0444\u0435\u0432\u0440\u0430\u043b\u044f", + "\u043c\u0430\u0440\u0442\u0430", + "\u0430\u043f\u0440\u0435\u043b\u044f", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044f", + "\u0438\u044e\u043b\u044f", + "\u0430\u0432\u0433\u0443\u0441\u0442\u0430", + "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f", + "\u043e\u043a\u0442\u044f\u0431\u0440\u044f", + "\u043d\u043e\u044f\u0431\u0440\u044f", + "\u0434\u0435\u043a\u0430\u0431\u0440\u044f" + ], + "SHORTDAY": [ + "\u0432\u0441", + "\u043f\u043d", + "\u0432\u0442", + "\u0441\u0440", + "\u0447\u0442", + "\u043f\u0442", + "\u0441\u0431" + ], + "SHORTMONTH": [ + "\u044f\u043d\u0432.", + "\u0444\u0435\u0432\u0440.", + "\u043c\u0430\u0440\u0442\u0430", + "\u0430\u043f\u0440.", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044f", + "\u0438\u044e\u043b\u044f", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043d\u0442.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u044f\u0431.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, d MMMM y '\u0433'.", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b4", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ru-ua", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (vf.v == 0 && i % 10 == 0 || vf.v == 0 && i % 10 >= 5 && i % 10 <= 9 || vf.v == 0 && i % 100 >= 11 && i % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ru.js b/1.2.30/i18n/angular-locale_ru.js new file mode 100644 index 0000000000..966bbd4c67 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ru.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435", + "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a", + "\u0432\u0442\u043e\u0440\u043d\u0438\u043a", + "\u0441\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0435\u0440\u0433", + "\u043f\u044f\u0442\u043d\u0438\u0446\u0430", + "\u0441\u0443\u0431\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u044f\u043d\u0432\u0430\u0440\u044f", + "\u0444\u0435\u0432\u0440\u0430\u043b\u044f", + "\u043c\u0430\u0440\u0442\u0430", + "\u0430\u043f\u0440\u0435\u043b\u044f", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044f", + "\u0438\u044e\u043b\u044f", + "\u0430\u0432\u0433\u0443\u0441\u0442\u0430", + "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f", + "\u043e\u043a\u0442\u044f\u0431\u0440\u044f", + "\u043d\u043e\u044f\u0431\u0440\u044f", + "\u0434\u0435\u043a\u0430\u0431\u0440\u044f" + ], + "SHORTDAY": [ + "\u0432\u0441", + "\u043f\u043d", + "\u0432\u0442", + "\u0441\u0440", + "\u0447\u0442", + "\u043f\u0442", + "\u0441\u0431" + ], + "SHORTMONTH": [ + "\u044f\u043d\u0432.", + "\u0444\u0435\u0432\u0440.", + "\u043c\u0430\u0440\u0442\u0430", + "\u0430\u043f\u0440.", + "\u043c\u0430\u044f", + "\u0438\u044e\u043d\u044f", + "\u0438\u044e\u043b\u044f", + "\u0430\u0432\u0433.", + "\u0441\u0435\u043d\u0442.", + "\u043e\u043a\u0442.", + "\u043d\u043e\u044f\u0431.", + "\u0434\u0435\u043a." + ], + "fullDate": "EEEE, d MMMM y '\u0433'.", + "longDate": "d MMMM y '\u0433'.", + "medium": "d MMM y '\u0433'. H:mm:ss", + "mediumDate": "d MMM y '\u0433'.", + "mediumTime": "H:mm:ss", + "short": "dd.MM.yy H:mm", + "shortDate": "dd.MM.yy", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u0440\u0443\u0431.", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "ru", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (vf.v == 0 && i % 10 == 0 || vf.v == 0 && i % 10 >= 5 && i % 10 <= 9 || vf.v == 0 && i % 100 >= 11 && i % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_rw-rw.js b/1.2.30/i18n/angular-locale_rw-rw.js new file mode 100644 index 0000000000..fd3fdfb515 --- /dev/null +++ b/1.2.30/i18n/angular-locale_rw-rw.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Ku cyumweru", + "Kuwa mbere", + "Kuwa kabiri", + "Kuwa gatatu", + "Kuwa kane", + "Kuwa gatanu", + "Kuwa gatandatu" + ], + "MONTH": [ + "Mutarama", + "Gashyantare", + "Werurwe", + "Mata", + "Gicuransi", + "Kamena", + "Nyakanga", + "Kanama", + "Nzeli", + "Ukwakira", + "Ugushyingo", + "Ukuboza" + ], + "SHORTDAY": [ + "cyu.", + "mbe.", + "kab.", + "gtu.", + "kan.", + "gnu.", + "gnd." + ], + "SHORTMONTH": [ + "mut.", + "gas.", + "wer.", + "mat.", + "gic.", + "kam.", + "nya.", + "kan.", + "nze.", + "ukw.", + "ugu.", + "uku." + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "RF", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "rw-rw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_rw.js b/1.2.30/i18n/angular-locale_rw.js new file mode 100644 index 0000000000..b146437044 --- /dev/null +++ b/1.2.30/i18n/angular-locale_rw.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Ku cyumweru", + "Kuwa mbere", + "Kuwa kabiri", + "Kuwa gatatu", + "Kuwa kane", + "Kuwa gatanu", + "Kuwa gatandatu" + ], + "MONTH": [ + "Mutarama", + "Gashyantare", + "Werurwe", + "Mata", + "Gicuransi", + "Kamena", + "Nyakanga", + "Kanama", + "Nzeli", + "Ukwakira", + "Ugushyingo", + "Ukuboza" + ], + "SHORTDAY": [ + "cyu.", + "mbe.", + "kab.", + "gtu.", + "kan.", + "gnu.", + "gnd." + ], + "SHORTMONTH": [ + "mut.", + "gas.", + "wer.", + "mat.", + "gic.", + "kam.", + "nya.", + "kan.", + "nze.", + "ukw.", + "ugu.", + "uku." + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "RF", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "rw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_rwk-tz.js b/1.2.30/i18n/angular-locale_rwk-tz.js new file mode 100644 index 0000000000..3273475297 --- /dev/null +++ b/1.2.30/i18n/angular-locale_rwk-tz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "utuko", + "kyiukonyi" + ], + "DAY": [ + "Jumapilyi", + "Jumatatuu", + "Jumanne", + "Jumatanu", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Aprilyi", + "Mei", + "Junyi", + "Julyai", + "Agusti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Jpi", + "Jtt", + "Jnn", + "Jtn", + "Alh", + "Iju", + "Jmo" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "rwk-tz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_rwk.js b/1.2.30/i18n/angular-locale_rwk.js new file mode 100644 index 0000000000..a54d850aaa --- /dev/null +++ b/1.2.30/i18n/angular-locale_rwk.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "utuko", + "kyiukonyi" + ], + "DAY": [ + "Jumapilyi", + "Jumatatuu", + "Jumanne", + "Jumatanu", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Aprilyi", + "Mei", + "Junyi", + "Julyai", + "Agusti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Jpi", + "Jtt", + "Jnn", + "Jtn", + "Alh", + "Iju", + "Jmo" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "rwk", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sah-ru.js b/1.2.30/i18n/angular-locale_sah-ru.js new file mode 100644 index 0000000000..0d3014c50a --- /dev/null +++ b/1.2.30/i18n/angular-locale_sah-ru.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u042d\u0418", + "\u042d\u041a" + ], + "DAY": [ + "\u0411\u0430\u0441\u043a\u044b\u04bb\u044b\u0430\u043d\u043d\u044c\u0430", + "\u0411\u044d\u043d\u0438\u0434\u0438\u044d\u043b\u0438\u043d\u043d\u044c\u0438\u043a", + "\u041e\u043f\u0442\u0443\u043e\u0440\u0443\u043d\u043d\u044c\u0443\u043a", + "\u0421\u044d\u0440\u044d\u0434\u044d", + "\u0427\u044d\u043f\u043f\u0438\u044d\u0440", + "\u0411\u044d\u044d\u0442\u0438\u04a5\u0441\u044d", + "\u0421\u0443\u0431\u0443\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0422\u043e\u0445\u0441\u0443\u043d\u043d\u044c\u0443", + "\u041e\u043b\u0443\u043d\u043d\u044c\u0443", + "\u041a\u0443\u043b\u0443\u043d \u0442\u0443\u0442\u0430\u0440", + "\u041c\u0443\u0443\u0441 \u0443\u0441\u0442\u0430\u0440", + "\u042b\u0430\u043c \u044b\u0439\u044b\u043d", + "\u0411\u044d\u0441 \u044b\u0439\u044b\u043d", + "\u041e\u0442 \u044b\u0439\u044b\u043d", + "\u0410\u0442\u044b\u0440\u0434\u044c\u044b\u0445 \u044b\u0439\u044b\u043d", + "\u0411\u0430\u043b\u0430\u0495\u0430\u043d \u044b\u0439\u044b\u043d", + "\u0410\u043b\u0442\u044b\u043d\u043d\u044c\u044b", + "\u0421\u044d\u0442\u0438\u043d\u043d\u044c\u0438", + "\u0410\u0445\u0441\u044b\u043d\u043d\u044c\u044b" + ], + "SHORTDAY": [ + "\u0411\u0441", + "\u0411\u043d", + "\u041e\u043f", + "\u0421\u044d", + "\u0427\u043f", + "\u0411\u044d", + "\u0421\u0431" + ], + "SHORTMONTH": [ + "\u0422\u043e\u0445\u0441", + "\u041e\u043b\u0443\u043d", + "\u041a\u043b\u043d_\u0442\u0442\u0440", + "\u041c\u0443\u0441_\u0443\u0441\u0442", + "\u042b\u0430\u043c_\u0439\u043d", + "\u0411\u044d\u0441_\u0439\u043d", + "\u041e\u0442_\u0439\u043d", + "\u0410\u0442\u0440\u0434\u044c_\u0439\u043d", + "\u0411\u043b\u0495\u043d_\u0439\u043d", + "\u0410\u043b\u0442", + "\u0421\u044d\u0442", + "\u0410\u0445\u0441" + ], + "fullDate": "y '\u0441\u044b\u043b' MMMM d '\u043a\u04af\u043d\u044d', EEEE", + "longDate": "y, MMMM d", + "medium": "y, MMM d HH:mm:ss", + "mediumDate": "y, MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/M/d HH:mm", + "shortDate": "yy/M/d", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u0440\u0443\u0431.", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "sah-ru", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sah.js b/1.2.30/i18n/angular-locale_sah.js new file mode 100644 index 0000000000..b84be1cfd3 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sah.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u042d\u0418", + "\u042d\u041a" + ], + "DAY": [ + "\u0411\u0430\u0441\u043a\u044b\u04bb\u044b\u0430\u043d\u043d\u044c\u0430", + "\u0411\u044d\u043d\u0438\u0434\u0438\u044d\u043b\u0438\u043d\u043d\u044c\u0438\u043a", + "\u041e\u043f\u0442\u0443\u043e\u0440\u0443\u043d\u043d\u044c\u0443\u043a", + "\u0421\u044d\u0440\u044d\u0434\u044d", + "\u0427\u044d\u043f\u043f\u0438\u044d\u0440", + "\u0411\u044d\u044d\u0442\u0438\u04a5\u0441\u044d", + "\u0421\u0443\u0431\u0443\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0422\u043e\u0445\u0441\u0443\u043d\u043d\u044c\u0443", + "\u041e\u043b\u0443\u043d\u043d\u044c\u0443", + "\u041a\u0443\u043b\u0443\u043d \u0442\u0443\u0442\u0430\u0440", + "\u041c\u0443\u0443\u0441 \u0443\u0441\u0442\u0430\u0440", + "\u042b\u0430\u043c \u044b\u0439\u044b\u043d", + "\u0411\u044d\u0441 \u044b\u0439\u044b\u043d", + "\u041e\u0442 \u044b\u0439\u044b\u043d", + "\u0410\u0442\u044b\u0440\u0434\u044c\u044b\u0445 \u044b\u0439\u044b\u043d", + "\u0411\u0430\u043b\u0430\u0495\u0430\u043d \u044b\u0439\u044b\u043d", + "\u0410\u043b\u0442\u044b\u043d\u043d\u044c\u044b", + "\u0421\u044d\u0442\u0438\u043d\u043d\u044c\u0438", + "\u0410\u0445\u0441\u044b\u043d\u043d\u044c\u044b" + ], + "SHORTDAY": [ + "\u0411\u0441", + "\u0411\u043d", + "\u041e\u043f", + "\u0421\u044d", + "\u0427\u043f", + "\u0411\u044d", + "\u0421\u0431" + ], + "SHORTMONTH": [ + "\u0422\u043e\u0445\u0441", + "\u041e\u043b\u0443\u043d", + "\u041a\u043b\u043d_\u0442\u0442\u0440", + "\u041c\u0443\u0441_\u0443\u0441\u0442", + "\u042b\u0430\u043c_\u0439\u043d", + "\u0411\u044d\u0441_\u0439\u043d", + "\u041e\u0442_\u0439\u043d", + "\u0410\u0442\u0440\u0434\u044c_\u0439\u043d", + "\u0411\u043b\u0495\u043d_\u0439\u043d", + "\u0410\u043b\u0442", + "\u0421\u044d\u0442", + "\u0410\u0445\u0441" + ], + "fullDate": "y '\u0441\u044b\u043b' MMMM d '\u043a\u04af\u043d\u044d', EEEE", + "longDate": "y, MMMM d", + "medium": "y, MMM d HH:mm:ss", + "mediumDate": "y, MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/M/d HH:mm", + "shortDate": "yy/M/d", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u0440\u0443\u0431.", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "sah", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_saq-ke.js b/1.2.30/i18n/angular-locale_saq-ke.js new file mode 100644 index 0000000000..3639c5d351 --- /dev/null +++ b/1.2.30/i18n/angular-locale_saq-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Tesiran", + "Teipa" + ], + "DAY": [ + "Mderot ee are", + "Mderot ee kuni", + "Mderot ee ong'wan", + "Mderot ee inet", + "Mderot ee ile", + "Mderot ee sapa", + "Mderot ee kwe" + ], + "MONTH": [ + "Lapa le obo", + "Lapa le waare", + "Lapa le okuni", + "Lapa le ong'wan", + "Lapa le imet", + "Lapa le ile", + "Lapa le sapa", + "Lapa le isiet", + "Lapa le saal", + "Lapa le tomon", + "Lapa le tomon obo", + "Lapa le tomon waare" + ], + "SHORTDAY": [ + "Are", + "Kun", + "Ong", + "Ine", + "Ile", + "Sap", + "Kwe" + ], + "SHORTMONTH": [ + "Obo", + "Waa", + "Oku", + "Ong", + "Ime", + "Ile", + "Sap", + "Isi", + "Saa", + "Tom", + "Tob", + "Tow" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "saq-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_saq.js b/1.2.30/i18n/angular-locale_saq.js new file mode 100644 index 0000000000..c5c6fb7f77 --- /dev/null +++ b/1.2.30/i18n/angular-locale_saq.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Tesiran", + "Teipa" + ], + "DAY": [ + "Mderot ee are", + "Mderot ee kuni", + "Mderot ee ong'wan", + "Mderot ee inet", + "Mderot ee ile", + "Mderot ee sapa", + "Mderot ee kwe" + ], + "MONTH": [ + "Lapa le obo", + "Lapa le waare", + "Lapa le okuni", + "Lapa le ong'wan", + "Lapa le imet", + "Lapa le ile", + "Lapa le sapa", + "Lapa le isiet", + "Lapa le saal", + "Lapa le tomon", + "Lapa le tomon obo", + "Lapa le tomon waare" + ], + "SHORTDAY": [ + "Are", + "Kun", + "Ong", + "Ine", + "Ile", + "Sap", + "Kwe" + ], + "SHORTMONTH": [ + "Obo", + "Waa", + "Oku", + "Ong", + "Ime", + "Ile", + "Sap", + "Isi", + "Saa", + "Tom", + "Tob", + "Tow" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "saq", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sbp-tz.js b/1.2.30/i18n/angular-locale_sbp-tz.js new file mode 100644 index 0000000000..921a6a682b --- /dev/null +++ b/1.2.30/i18n/angular-locale_sbp-tz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Lwamilawu", + "Pashamihe" + ], + "DAY": [ + "Mulungu", + "Jumatatu", + "Jumanne", + "Jumatano", + "Alahamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Mupalangulwa", + "Mwitope", + "Mushende", + "Munyi", + "Mushende Magali", + "Mujimbi", + "Mushipepo", + "Mupuguto", + "Munyense", + "Mokhu", + "Musongandembwe", + "Muhaano" + ], + "SHORTDAY": [ + "Mul", + "Jtt", + "Jnn", + "Jtn", + "Alh", + "Iju", + "Jmo" + ], + "SHORTMONTH": [ + "Mup", + "Mwi", + "Msh", + "Mun", + "Mag", + "Muj", + "Msp", + "Mpg", + "Mye", + "Mok", + "Mus", + "Muh" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "sbp-tz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sbp.js b/1.2.30/i18n/angular-locale_sbp.js new file mode 100644 index 0000000000..7bd1ee5835 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sbp.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Lwamilawu", + "Pashamihe" + ], + "DAY": [ + "Mulungu", + "Jumatatu", + "Jumanne", + "Jumatano", + "Alahamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Mupalangulwa", + "Mwitope", + "Mushende", + "Munyi", + "Mushende Magali", + "Mujimbi", + "Mushipepo", + "Mupuguto", + "Munyense", + "Mokhu", + "Musongandembwe", + "Muhaano" + ], + "SHORTDAY": [ + "Mul", + "Jtt", + "Jnn", + "Jtn", + "Alh", + "Iju", + "Jmo" + ], + "SHORTMONTH": [ + "Mup", + "Mwi", + "Msh", + "Mun", + "Mag", + "Muj", + "Msp", + "Mpg", + "Mye", + "Mok", + "Mus", + "Muh" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "sbp", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_se-fi.js b/1.2.30/i18n/angular-locale_se-fi.js new file mode 100644 index 0000000000..71ebc8c19f --- /dev/null +++ b/1.2.30/i18n/angular-locale_se-fi.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "i\u0111itbeaivet", + "eahketbeaivet" + ], + "DAY": [ + "aejlege", + "m\u00e5anta", + "d\u00e4jsta", + "gaskevahkoe", + "d\u00e5arsta", + "bearjadahke", + "laavadahke" + ], + "MONTH": [ + "o\u0111\u0111ajagem\u00e1nnu", + "guovvam\u00e1nnu", + "njuk\u010dam\u00e1nnu", + "cuo\u014bom\u00e1nnu", + "miessem\u00e1nnu", + "geassem\u00e1nnu", + "suoidnem\u00e1nnu", + "borgem\u00e1nnu", + "\u010dak\u010dam\u00e1nnu", + "golggotm\u00e1nnu", + "sk\u00e1bmam\u00e1nnu", + "juovlam\u00e1nnu" + ], + "SHORTDAY": [ + "sotn", + "vuos", + "ma\u014b", + "gask", + "duor", + "bear", + "l\u00e1v" + ], + "SHORTMONTH": [ + "o\u0111\u0111ajage", + "guovva", + "njuk\u010da", + "cuo\u014bo", + "miesse", + "geasse", + "suoidne", + "borge", + "\u010dak\u010da", + "golggot", + "sk\u00e1bma", + "juovla" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "se-fi", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_se-no.js b/1.2.30/i18n/angular-locale_se-no.js new file mode 100644 index 0000000000..3b45488d81 --- /dev/null +++ b/1.2.30/i18n/angular-locale_se-no.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "i\u0111itbeaivet", + "eahketbeaivet" + ], + "DAY": [ + "sotnabeaivi", + "vuoss\u00e1rga", + "ma\u014b\u014beb\u00e1rga", + "gaskavahkku", + "duorasdat", + "bearjadat", + "l\u00e1vvardat" + ], + "MONTH": [ + "o\u0111\u0111ajagem\u00e1nnu", + "guovvam\u00e1nnu", + "njuk\u010dam\u00e1nnu", + "cuo\u014bom\u00e1nnu", + "miessem\u00e1nnu", + "geassem\u00e1nnu", + "suoidnem\u00e1nnu", + "borgem\u00e1nnu", + "\u010dak\u010dam\u00e1nnu", + "golggotm\u00e1nnu", + "sk\u00e1bmam\u00e1nnu", + "juovlam\u00e1nnu" + ], + "SHORTDAY": [ + "sotn", + "vuos", + "ma\u014b", + "gask", + "duor", + "bear", + "l\u00e1v" + ], + "SHORTMONTH": [ + "o\u0111\u0111j", + "guov", + "njuk", + "cuo", + "mies", + "geas", + "suoi", + "borg", + "\u010dak\u010d", + "golg", + "sk\u00e1b", + "juov" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "se-no", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_se.js b/1.2.30/i18n/angular-locale_se.js new file mode 100644 index 0000000000..5f22c965a3 --- /dev/null +++ b/1.2.30/i18n/angular-locale_se.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "i\u0111itbeaivet", + "eahketbeaivet" + ], + "DAY": [ + "sotnabeaivi", + "vuoss\u00e1rga", + "ma\u014b\u014beb\u00e1rga", + "gaskavahkku", + "duorasdat", + "bearjadat", + "l\u00e1vvardat" + ], + "MONTH": [ + "o\u0111\u0111ajagem\u00e1nnu", + "guovvam\u00e1nnu", + "njuk\u010dam\u00e1nnu", + "cuo\u014bom\u00e1nnu", + "miessem\u00e1nnu", + "geassem\u00e1nnu", + "suoidnem\u00e1nnu", + "borgem\u00e1nnu", + "\u010dak\u010dam\u00e1nnu", + "golggotm\u00e1nnu", + "sk\u00e1bmam\u00e1nnu", + "juovlam\u00e1nnu" + ], + "SHORTDAY": [ + "sotn", + "vuos", + "ma\u014b", + "gask", + "duor", + "bear", + "l\u00e1v" + ], + "SHORTMONTH": [ + "o\u0111\u0111j", + "guov", + "njuk", + "cuo", + "mies", + "geas", + "suoi", + "borg", + "\u010dak\u010d", + "golg", + "sk\u00e1b", + "juov" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "se", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_seh-mz.js b/1.2.30/i18n/angular-locale_seh-mz.js new file mode 100644 index 0000000000..f4d8945474 --- /dev/null +++ b/1.2.30/i18n/angular-locale_seh-mz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Dimingu", + "Chiposi", + "Chipiri", + "Chitatu", + "Chinai", + "Chishanu", + "Sabudu" + ], + "MONTH": [ + "Janeiro", + "Fevreiro", + "Marco", + "Abril", + "Maio", + "Junho", + "Julho", + "Augusto", + "Setembro", + "Otubro", + "Novembro", + "Decembro" + ], + "SHORTDAY": [ + "Dim", + "Pos", + "Pir", + "Tat", + "Nai", + "Sha", + "Sab" + ], + "SHORTMONTH": [ + "Jan", + "Fev", + "Mar", + "Abr", + "Mai", + "Jun", + "Jul", + "Aug", + "Set", + "Otu", + "Nov", + "Dec" + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d 'de' MMM 'de' y HH:mm:ss", + "mediumDate": "d 'de' MMM 'de' y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MTn", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "seh-mz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_seh.js b/1.2.30/i18n/angular-locale_seh.js new file mode 100644 index 0000000000..3ad44fae2d --- /dev/null +++ b/1.2.30/i18n/angular-locale_seh.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Dimingu", + "Chiposi", + "Chipiri", + "Chitatu", + "Chinai", + "Chishanu", + "Sabudu" + ], + "MONTH": [ + "Janeiro", + "Fevreiro", + "Marco", + "Abril", + "Maio", + "Junho", + "Julho", + "Augusto", + "Setembro", + "Otubro", + "Novembro", + "Decembro" + ], + "SHORTDAY": [ + "Dim", + "Pos", + "Pir", + "Tat", + "Nai", + "Sha", + "Sab" + ], + "SHORTMONTH": [ + "Jan", + "Fev", + "Mar", + "Abr", + "Mai", + "Jun", + "Jul", + "Aug", + "Set", + "Otu", + "Nov", + "Dec" + ], + "fullDate": "EEEE, d 'de' MMMM 'de' y", + "longDate": "d 'de' MMMM 'de' y", + "medium": "d 'de' MMM 'de' y HH:mm:ss", + "mediumDate": "d 'de' MMM 'de' y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MTn", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "seh", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ses-ml.js b/1.2.30/i18n/angular-locale_ses-ml.js new file mode 100644 index 0000000000..49bde169dc --- /dev/null +++ b/1.2.30/i18n/angular-locale_ses-ml.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Adduha", + "Aluula" + ], + "DAY": [ + "Alhadi", + "Atinni", + "Atalaata", + "Alarba", + "Alhamiisa", + "Alzuma", + "Asibti" + ], + "MONTH": [ + "\u017danwiye", + "Feewiriye", + "Marsi", + "Awiril", + "Me", + "\u017duwe\u014b", + "\u017duyye", + "Ut", + "Sektanbur", + "Oktoobur", + "Noowanbur", + "Deesanbur" + ], + "SHORTDAY": [ + "Alh", + "Ati", + "Ata", + "Ala", + "Alm", + "Alz", + "Asi" + ], + "SHORTMONTH": [ + "\u017dan", + "Fee", + "Mar", + "Awi", + "Me", + "\u017duw", + "\u017duy", + "Ut", + "Sek", + "Okt", + "Noo", + "Dee" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "ses-ml", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ses.js b/1.2.30/i18n/angular-locale_ses.js new file mode 100644 index 0000000000..25c09cb786 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ses.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Adduha", + "Aluula" + ], + "DAY": [ + "Alhadi", + "Atinni", + "Atalaata", + "Alarba", + "Alhamiisa", + "Alzuma", + "Asibti" + ], + "MONTH": [ + "\u017danwiye", + "Feewiriye", + "Marsi", + "Awiril", + "Me", + "\u017duwe\u014b", + "\u017duyye", + "Ut", + "Sektanbur", + "Oktoobur", + "Noowanbur", + "Deesanbur" + ], + "SHORTDAY": [ + "Alh", + "Ati", + "Ata", + "Ala", + "Alm", + "Alz", + "Asi" + ], + "SHORTMONTH": [ + "\u017dan", + "Fee", + "Mar", + "Awi", + "Me", + "\u017duw", + "\u017duy", + "Ut", + "Sek", + "Okt", + "Noo", + "Dee" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "ses", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sg-cf.js b/1.2.30/i18n/angular-locale_sg-cf.js new file mode 100644 index 0000000000..35b43b7485 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sg-cf.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "ND", + "LK" + ], + "DAY": [ + "Bikua-\u00f4ko", + "B\u00efkua-\u00fbse", + "B\u00efkua-pt\u00e2", + "B\u00efkua-us\u00ef\u00f6", + "B\u00efkua-ok\u00fc", + "L\u00e2p\u00f4s\u00f6", + "L\u00e2yenga" + ], + "MONTH": [ + "Nyenye", + "Fulund\u00efgi", + "Mb\u00e4ng\u00fc", + "Ngub\u00f9e", + "B\u00eal\u00e4w\u00fc", + "F\u00f6ndo", + "Lengua", + "K\u00fck\u00fcr\u00fc", + "Mvuka", + "Ngberere", + "Nab\u00e4nd\u00fcru", + "Kakauka" + ], + "SHORTDAY": [ + "Bk1", + "Bk2", + "Bk3", + "Bk4", + "Bk5", + "L\u00e2p", + "L\u00e2y" + ], + "SHORTMONTH": [ + "Nye", + "Ful", + "Mb\u00e4", + "Ngu", + "B\u00eal", + "F\u00f6n", + "Len", + "K\u00fck", + "Mvu", + "Ngb", + "Nab", + "Kak" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "sg-cf", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sg.js b/1.2.30/i18n/angular-locale_sg.js new file mode 100644 index 0000000000..60975c295c --- /dev/null +++ b/1.2.30/i18n/angular-locale_sg.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "ND", + "LK" + ], + "DAY": [ + "Bikua-\u00f4ko", + "B\u00efkua-\u00fbse", + "B\u00efkua-pt\u00e2", + "B\u00efkua-us\u00ef\u00f6", + "B\u00efkua-ok\u00fc", + "L\u00e2p\u00f4s\u00f6", + "L\u00e2yenga" + ], + "MONTH": [ + "Nyenye", + "Fulund\u00efgi", + "Mb\u00e4ng\u00fc", + "Ngub\u00f9e", + "B\u00eal\u00e4w\u00fc", + "F\u00f6ndo", + "Lengua", + "K\u00fck\u00fcr\u00fc", + "Mvuka", + "Ngberere", + "Nab\u00e4nd\u00fcru", + "Kakauka" + ], + "SHORTDAY": [ + "Bk1", + "Bk2", + "Bk3", + "Bk4", + "Bk5", + "L\u00e2p", + "L\u00e2y" + ], + "SHORTMONTH": [ + "Nye", + "Ful", + "Mb\u00e4", + "Ngu", + "B\u00eal", + "F\u00f6n", + "Len", + "K\u00fck", + "Mvu", + "Ngb", + "Nab", + "Kak" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "sg", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_shi-latn-ma.js b/1.2.30/i18n/angular-locale_shi-latn-ma.js new file mode 100644 index 0000000000..8af24c31e9 --- /dev/null +++ b/1.2.30/i18n/angular-locale_shi-latn-ma.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "tifawt", + "tadgg\u02b7at" + ], + "DAY": [ + "asamas", + "aynas", + "asinas", + "ak\u1e5bas", + "akwas", + "asimwas", + "asi\u1e0dyas" + ], + "MONTH": [ + "innayr", + "b\u1e5bay\u1e5b", + "ma\u1e5b\u1e63", + "ibrir", + "mayyu", + "yunyu", + "yulyuz", + "\u0263uct", + "cutanbir", + "ktubr", + "nuwanbir", + "dujanbir" + ], + "SHORTDAY": [ + "asa", + "ayn", + "asi", + "ak\u1e5b", + "akw", + "asim", + "asi\u1e0d" + ], + "SHORTMONTH": [ + "inn", + "b\u1e5ba", + "ma\u1e5b", + "ibr", + "may", + "yun", + "yul", + "\u0263uc", + "cut", + "ktu", + "nuw", + "duj" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "dh", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "shi-latn-ma", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_shi-latn.js b/1.2.30/i18n/angular-locale_shi-latn.js new file mode 100644 index 0000000000..acad3f3cba --- /dev/null +++ b/1.2.30/i18n/angular-locale_shi-latn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "tifawt", + "tadgg\u02b7at" + ], + "DAY": [ + "asamas", + "aynas", + "asinas", + "ak\u1e5bas", + "akwas", + "asimwas", + "asi\u1e0dyas" + ], + "MONTH": [ + "innayr", + "b\u1e5bay\u1e5b", + "ma\u1e5b\u1e63", + "ibrir", + "mayyu", + "yunyu", + "yulyuz", + "\u0263uct", + "cutanbir", + "ktubr", + "nuwanbir", + "dujanbir" + ], + "SHORTDAY": [ + "asa", + "ayn", + "asi", + "ak\u1e5b", + "akw", + "asim", + "asi\u1e0d" + ], + "SHORTMONTH": [ + "inn", + "b\u1e5ba", + "ma\u1e5b", + "ibr", + "may", + "yun", + "yul", + "\u0263uc", + "cut", + "ktu", + "nuw", + "duj" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "shi-latn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_shi-tfng-ma.js b/1.2.30/i18n/angular-locale_shi-tfng-ma.js new file mode 100644 index 0000000000..b240b0c19d --- /dev/null +++ b/1.2.30/i18n/angular-locale_shi-tfng-ma.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u2d5c\u2d49\u2d3c\u2d30\u2d61\u2d5c", + "\u2d5c\u2d30\u2d37\u2d33\u2d33\u2d6f\u2d30\u2d5c" + ], + "DAY": [ + "\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59", + "\u2d30\u2d62\u2d4f\u2d30\u2d59", + "\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59", + "\u2d30\u2d3d\u2d55\u2d30\u2d59", + "\u2d30\u2d3d\u2d61\u2d30\u2d59", + "\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59", + "\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59" + ], + "MONTH": [ + "\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54", + "\u2d31\u2d55\u2d30\u2d62\u2d55", + "\u2d4e\u2d30\u2d55\u2d5a", + "\u2d49\u2d31\u2d54\u2d49\u2d54", + "\u2d4e\u2d30\u2d62\u2d62\u2d53", + "\u2d62\u2d53\u2d4f\u2d62\u2d53", + "\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63", + "\u2d56\u2d53\u2d5b\u2d5c", + "\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54", + "\u2d3d\u2d5c\u2d53\u2d31\u2d54", + "\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54", + "\u2d37\u2d53\u2d4a\u2d30\u2d4f\u2d31\u2d49\u2d54" + ], + "SHORTDAY": [ + "\u2d30\u2d59\u2d30", + "\u2d30\u2d62\u2d4f", + "\u2d30\u2d59\u2d49", + "\u2d30\u2d3d\u2d55", + "\u2d30\u2d3d\u2d61", + "\u2d30\u2d59\u2d49\u2d4e", + "\u2d30\u2d59\u2d49\u2d39" + ], + "SHORTMONTH": [ + "\u2d49\u2d4f\u2d4f", + "\u2d31\u2d55\u2d30", + "\u2d4e\u2d30\u2d55", + "\u2d49\u2d31\u2d54", + "\u2d4e\u2d30\u2d62", + "\u2d62\u2d53\u2d4f", + "\u2d62\u2d53\u2d4d", + "\u2d56\u2d53\u2d5b", + "\u2d5b\u2d53\u2d5c", + "\u2d3d\u2d5c\u2d53", + "\u2d4f\u2d53\u2d61", + "\u2d37\u2d53\u2d4a" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "dh", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "shi-tfng-ma", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_shi-tfng.js b/1.2.30/i18n/angular-locale_shi-tfng.js new file mode 100644 index 0000000000..06b65e46a4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_shi-tfng.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u2d5c\u2d49\u2d3c\u2d30\u2d61\u2d5c", + "\u2d5c\u2d30\u2d37\u2d33\u2d33\u2d6f\u2d30\u2d5c" + ], + "DAY": [ + "\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59", + "\u2d30\u2d62\u2d4f\u2d30\u2d59", + "\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59", + "\u2d30\u2d3d\u2d55\u2d30\u2d59", + "\u2d30\u2d3d\u2d61\u2d30\u2d59", + "\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59", + "\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59" + ], + "MONTH": [ + "\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54", + "\u2d31\u2d55\u2d30\u2d62\u2d55", + "\u2d4e\u2d30\u2d55\u2d5a", + "\u2d49\u2d31\u2d54\u2d49\u2d54", + "\u2d4e\u2d30\u2d62\u2d62\u2d53", + "\u2d62\u2d53\u2d4f\u2d62\u2d53", + "\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63", + "\u2d56\u2d53\u2d5b\u2d5c", + "\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54", + "\u2d3d\u2d5c\u2d53\u2d31\u2d54", + "\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54", + "\u2d37\u2d53\u2d4a\u2d30\u2d4f\u2d31\u2d49\u2d54" + ], + "SHORTDAY": [ + "\u2d30\u2d59\u2d30", + "\u2d30\u2d62\u2d4f", + "\u2d30\u2d59\u2d49", + "\u2d30\u2d3d\u2d55", + "\u2d30\u2d3d\u2d61", + "\u2d30\u2d59\u2d49\u2d4e", + "\u2d30\u2d59\u2d49\u2d39" + ], + "SHORTMONTH": [ + "\u2d49\u2d4f\u2d4f", + "\u2d31\u2d55\u2d30", + "\u2d4e\u2d30\u2d55", + "\u2d49\u2d31\u2d54", + "\u2d4e\u2d30\u2d62", + "\u2d62\u2d53\u2d4f", + "\u2d62\u2d53\u2d4d", + "\u2d56\u2d53\u2d5b", + "\u2d5b\u2d53\u2d5c", + "\u2d3d\u2d5c\u2d53", + "\u2d4f\u2d53\u2d61", + "\u2d37\u2d53\u2d4a" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "shi-tfng", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_shi.js b/1.2.30/i18n/angular-locale_shi.js new file mode 100644 index 0000000000..7381e407bc --- /dev/null +++ b/1.2.30/i18n/angular-locale_shi.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u2d5c\u2d49\u2d3c\u2d30\u2d61\u2d5c", + "\u2d5c\u2d30\u2d37\u2d33\u2d33\u2d6f\u2d30\u2d5c" + ], + "DAY": [ + "\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59", + "\u2d30\u2d62\u2d4f\u2d30\u2d59", + "\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59", + "\u2d30\u2d3d\u2d55\u2d30\u2d59", + "\u2d30\u2d3d\u2d61\u2d30\u2d59", + "\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59", + "\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59" + ], + "MONTH": [ + "\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54", + "\u2d31\u2d55\u2d30\u2d62\u2d55", + "\u2d4e\u2d30\u2d55\u2d5a", + "\u2d49\u2d31\u2d54\u2d49\u2d54", + "\u2d4e\u2d30\u2d62\u2d62\u2d53", + "\u2d62\u2d53\u2d4f\u2d62\u2d53", + "\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63", + "\u2d56\u2d53\u2d5b\u2d5c", + "\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54", + "\u2d3d\u2d5c\u2d53\u2d31\u2d54", + "\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54", + "\u2d37\u2d53\u2d4a\u2d30\u2d4f\u2d31\u2d49\u2d54" + ], + "SHORTDAY": [ + "\u2d30\u2d59\u2d30", + "\u2d30\u2d62\u2d4f", + "\u2d30\u2d59\u2d49", + "\u2d30\u2d3d\u2d55", + "\u2d30\u2d3d\u2d61", + "\u2d30\u2d59\u2d49\u2d4e", + "\u2d30\u2d59\u2d49\u2d39" + ], + "SHORTMONTH": [ + "\u2d49\u2d4f\u2d4f", + "\u2d31\u2d55\u2d30", + "\u2d4e\u2d30\u2d55", + "\u2d49\u2d31\u2d54", + "\u2d4e\u2d30\u2d62", + "\u2d62\u2d53\u2d4f", + "\u2d62\u2d53\u2d4d", + "\u2d56\u2d53\u2d5b", + "\u2d5b\u2d53\u2d5c", + "\u2d3d\u2d5c\u2d53", + "\u2d4f\u2d53\u2d61", + "\u2d37\u2d53\u2d4a" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "dh", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "shi", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_si-lk.js b/1.2.30/i18n/angular-locale_si-lk.js new file mode 100644 index 0000000000..a8a91fb608 --- /dev/null +++ b/1.2.30/i18n/angular-locale_si-lk.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0db4\u0dd9.\u0dc0.", + "\u0db4.\u0dc0." + ], + "DAY": [ + "\u0d89\u0dbb\u0dd2\u0daf\u0dcf", + "\u0dc3\u0db3\u0dd4\u0daf\u0dcf", + "\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf", + "\u0db6\u0daf\u0dcf\u0daf\u0dcf", + "\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf", + "\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf", + "\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf" + ], + "MONTH": [ + "\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2", + "\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2", + "\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4", + "\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca", + "\u0db8\u0dd0\u0dba\u0dd2", + "\u0da2\u0dd6\u0db1\u0dd2", + "\u0da2\u0dd6\u0dbd\u0dd2", + "\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4", + "\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca", + "\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca", + "\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca", + "\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca" + ], + "SHORTDAY": [ + "\u0d89\u0dbb\u0dd2\u0daf\u0dcf", + "\u0dc3\u0db3\u0dd4\u0daf\u0dcf", + "\u0d85\u0d9f\u0dc4", + "\u0db6\u0daf\u0dcf\u0daf\u0dcf", + "\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca", + "\u0dc3\u0dd2\u0d9a\u0dd4", + "\u0dc3\u0dd9\u0db1" + ], + "SHORTMONTH": [ + "\u0da2\u0db1", + "\u0db4\u0dd9\u0db6", + "\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4", + "\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca", + "\u0db8\u0dd0\u0dba\u0dd2", + "\u0da2\u0dd6\u0db1\u0dd2", + "\u0da2\u0dd6\u0dbd\u0dd2", + "\u0d85\u0d9c\u0ddd", + "\u0dc3\u0dd0\u0db4\u0dca", + "\u0d94\u0d9a\u0dca", + "\u0db1\u0ddc\u0dc0\u0dd0", + "\u0daf\u0dd9\u0dc3\u0dd0" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d a h.mm.ss", + "mediumDate": "y MMM d", + "mediumTime": "a h.mm.ss", + "short": "y-MM-dd a h.mm", + "shortDate": "y-MM-dd", + "shortTime": "a h.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rs", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "si-lk", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if ((n == 0 || n == 1) || i == 0 && vf.f == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_si.js b/1.2.30/i18n/angular-locale_si.js new file mode 100644 index 0000000000..2bbcf28a36 --- /dev/null +++ b/1.2.30/i18n/angular-locale_si.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0db4\u0dd9.\u0dc0.", + "\u0db4.\u0dc0." + ], + "DAY": [ + "\u0d89\u0dbb\u0dd2\u0daf\u0dcf", + "\u0dc3\u0db3\u0dd4\u0daf\u0dcf", + "\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf", + "\u0db6\u0daf\u0dcf\u0daf\u0dcf", + "\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf", + "\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf", + "\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf" + ], + "MONTH": [ + "\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2", + "\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2", + "\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4", + "\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca", + "\u0db8\u0dd0\u0dba\u0dd2", + "\u0da2\u0dd6\u0db1\u0dd2", + "\u0da2\u0dd6\u0dbd\u0dd2", + "\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4", + "\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca", + "\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca", + "\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca", + "\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca" + ], + "SHORTDAY": [ + "\u0d89\u0dbb\u0dd2\u0daf\u0dcf", + "\u0dc3\u0db3\u0dd4\u0daf\u0dcf", + "\u0d85\u0d9f\u0dc4", + "\u0db6\u0daf\u0dcf\u0daf\u0dcf", + "\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca", + "\u0dc3\u0dd2\u0d9a\u0dd4", + "\u0dc3\u0dd9\u0db1" + ], + "SHORTMONTH": [ + "\u0da2\u0db1", + "\u0db4\u0dd9\u0db6", + "\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4", + "\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca", + "\u0db8\u0dd0\u0dba\u0dd2", + "\u0da2\u0dd6\u0db1\u0dd2", + "\u0da2\u0dd6\u0dbd\u0dd2", + "\u0d85\u0d9c\u0ddd", + "\u0dc3\u0dd0\u0db4\u0dca", + "\u0d94\u0d9a\u0dca", + "\u0db1\u0ddc\u0dc0\u0dd0", + "\u0daf\u0dd9\u0dc3\u0dd0" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d a h.mm.ss", + "mediumDate": "y MMM d", + "mediumTime": "a h.mm.ss", + "short": "y-MM-dd a h.mm", + "shortDate": "y-MM-dd", + "shortTime": "a h.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rs", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "si", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if ((n == 0 || n == 1) || i == 0 && vf.f == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sk-sk.js b/1.2.30/i18n/angular-locale_sk-sk.js new file mode 100644 index 0000000000..fd505b0c1d --- /dev/null +++ b/1.2.30/i18n/angular-locale_sk-sk.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "nede\u013ea", + "pondelok", + "utorok", + "streda", + "\u0161tvrtok", + "piatok", + "sobota" + ], + "MONTH": [ + "janu\u00e1ra", + "febru\u00e1ra", + "marca", + "apr\u00edla", + "m\u00e1ja", + "j\u00fana", + "j\u00fala", + "augusta", + "septembra", + "okt\u00f3bra", + "novembra", + "decembra" + ], + "SHORTDAY": [ + "ne", + "po", + "ut", + "st", + "\u0161t", + "pi", + "so" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "m\u00e1j", + "j\u00fan", + "j\u00fal", + "aug", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d.M.y H:mm:ss", + "mediumDate": "d.M.y", + "mediumTime": "H:mm:ss", + "short": "d.M.y H:mm", + "shortDate": "d.M.y", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sk-sk", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } if (i >= 2 && i <= 4 && vf.v == 0) { return PLURAL_CATEGORY.FEW; } if (vf.v != 0) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sk.js b/1.2.30/i18n/angular-locale_sk.js new file mode 100644 index 0000000000..7227b5c44f --- /dev/null +++ b/1.2.30/i18n/angular-locale_sk.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "nede\u013ea", + "pondelok", + "utorok", + "streda", + "\u0161tvrtok", + "piatok", + "sobota" + ], + "MONTH": [ + "janu\u00e1ra", + "febru\u00e1ra", + "marca", + "apr\u00edla", + "m\u00e1ja", + "j\u00fana", + "j\u00fala", + "augusta", + "septembra", + "okt\u00f3bra", + "novembra", + "decembra" + ], + "SHORTDAY": [ + "ne", + "po", + "ut", + "st", + "\u0161t", + "pi", + "so" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "m\u00e1j", + "j\u00fan", + "j\u00fal", + "aug", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d.M.y H:mm:ss", + "mediumDate": "d.M.y", + "mediumTime": "H:mm:ss", + "short": "d.M.y H:mm", + "shortDate": "d.M.y", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sk", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } if (i >= 2 && i <= 4 && vf.v == 0) { return PLURAL_CATEGORY.FEW; } if (vf.v != 0) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sl-si.js b/1.2.30/i18n/angular-locale_sl-si.js new file mode 100644 index 0000000000..7f62ee7744 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sl-si.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "dop.", + "pop." + ], + "DAY": [ + "nedelja", + "ponedeljek", + "torek", + "sreda", + "\u010detrtek", + "petek", + "sobota" + ], + "MONTH": [ + "januar", + "februar", + "marec", + "april", + "maj", + "junij", + "julij", + "avgust", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "ned.", + "pon.", + "tor.", + "sre.", + "\u010det.", + "pet.", + "sob." + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mar.", + "apr.", + "maj", + "jun.", + "jul.", + "avg.", + "sep.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "EEEE, dd. MMMM y", + "longDate": "dd. MMMM y", + "medium": "d. MMM y HH.mm.ss", + "mediumDate": "d. MMM y", + "mediumTime": "HH.mm.ss", + "short": "d. MM. yy HH.mm", + "shortDate": "d. MM. yy", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sl-si", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 100 == 1) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 100 == 2) { return PLURAL_CATEGORY.TWO; } if (vf.v == 0 && i % 100 >= 3 && i % 100 <= 4 || vf.v != 0) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sl.js b/1.2.30/i18n/angular-locale_sl.js new file mode 100644 index 0000000000..9e2d0887f7 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sl.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "dop.", + "pop." + ], + "DAY": [ + "nedelja", + "ponedeljek", + "torek", + "sreda", + "\u010detrtek", + "petek", + "sobota" + ], + "MONTH": [ + "januar", + "februar", + "marec", + "april", + "maj", + "junij", + "julij", + "avgust", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "ned.", + "pon.", + "tor.", + "sre.", + "\u010det.", + "pet.", + "sob." + ], + "SHORTMONTH": [ + "jan.", + "feb.", + "mar.", + "apr.", + "maj", + "jun.", + "jul.", + "avg.", + "sep.", + "okt.", + "nov.", + "dec." + ], + "fullDate": "EEEE, dd. MMMM y", + "longDate": "dd. MMMM y", + "medium": "d. MMM y HH.mm.ss", + "mediumDate": "d. MMM y", + "mediumTime": "HH.mm.ss", + "short": "d. MM. yy HH.mm", + "shortDate": "d. MM. yy", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 100 == 1) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 100 == 2) { return PLURAL_CATEGORY.TWO; } if (vf.v == 0 && i % 100 >= 3 && i % 100 <= 4 || vf.v != 0) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sn-zw.js b/1.2.30/i18n/angular-locale_sn-zw.js new file mode 100644 index 0000000000..9bb89fce63 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sn-zw.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Svondo", + "Muvhuro", + "Chipiri", + "Chitatu", + "China", + "Chishanu", + "Mugovera" + ], + "MONTH": [ + "Ndira", + "Kukadzi", + "Kurume", + "Kubvumbi", + "Chivabvu", + "Chikumi", + "Chikunguru", + "Nyamavhuvhu", + "Gunyana", + "Gumiguru", + "Mbudzi", + "Zvita" + ], + "SHORTDAY": [ + "Svo", + "Muv", + "Chip", + "Chit", + "Chin", + "Chis", + "Mug" + ], + "SHORTMONTH": [ + "Ndi", + "Kuk", + "Kur", + "Kub", + "Chv", + "Chk", + "Chg", + "Nya", + "Gun", + "Gum", + "Mb", + "Zvi" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "sn-zw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sn.js b/1.2.30/i18n/angular-locale_sn.js new file mode 100644 index 0000000000..1be47ad24d --- /dev/null +++ b/1.2.30/i18n/angular-locale_sn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Svondo", + "Muvhuro", + "Chipiri", + "Chitatu", + "China", + "Chishanu", + "Mugovera" + ], + "MONTH": [ + "Ndira", + "Kukadzi", + "Kurume", + "Kubvumbi", + "Chivabvu", + "Chikumi", + "Chikunguru", + "Nyamavhuvhu", + "Gunyana", + "Gumiguru", + "Mbudzi", + "Zvita" + ], + "SHORTDAY": [ + "Svo", + "Muv", + "Chip", + "Chit", + "Chin", + "Chis", + "Mug" + ], + "SHORTMONTH": [ + "Ndi", + "Kuk", + "Kur", + "Kub", + "Chv", + "Chk", + "Chg", + "Nya", + "Gun", + "Gum", + "Mb", + "Zvi" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "sn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_so-dj.js b/1.2.30/i18n/angular-locale_so-dj.js new file mode 100644 index 0000000000..84c32ae61e --- /dev/null +++ b/1.2.30/i18n/angular-locale_so-dj.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "sn.", + "gn." + ], + "DAY": [ + "Axad", + "Isniin", + "Talaado", + "Arbaco", + "Khamiis", + "Jimco", + "Sabti" + ], + "MONTH": [ + "Bisha Koobaad", + "Bisha Labaad", + "Bisha Saddexaad", + "Bisha Afraad", + "Bisha Shanaad", + "Bisha Lixaad", + "Bisha Todobaad", + "Bisha Sideedaad", + "Bisha Sagaalaad", + "Bisha Tobnaad", + "Bisha Kow iyo Tobnaad", + "Bisha Laba iyo Tobnaad" + ], + "SHORTDAY": [ + "Axd", + "Isn", + "Tal", + "Arb", + "Kha", + "Jim", + "Sab" + ], + "SHORTMONTH": [ + "Kob", + "Lab", + "Sad", + "Afr", + "Sha", + "Lix", + "Tod", + "Sid", + "Sag", + "Tob", + "KIT", + "LIT" + ], + "fullDate": "EEEE, MMMM dd, y", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Fdj", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "so-dj", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_so-et.js b/1.2.30/i18n/angular-locale_so-et.js new file mode 100644 index 0000000000..3ed009a965 --- /dev/null +++ b/1.2.30/i18n/angular-locale_so-et.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "sn.", + "gn." + ], + "DAY": [ + "Axad", + "Isniin", + "Talaado", + "Arbaco", + "Khamiis", + "Jimco", + "Sabti" + ], + "MONTH": [ + "Bisha Koobaad", + "Bisha Labaad", + "Bisha Saddexaad", + "Bisha Afraad", + "Bisha Shanaad", + "Bisha Lixaad", + "Bisha Todobaad", + "Bisha Sideedaad", + "Bisha Sagaalaad", + "Bisha Tobnaad", + "Bisha Kow iyo Tobnaad", + "Bisha Laba iyo Tobnaad" + ], + "SHORTDAY": [ + "Axd", + "Isn", + "Tal", + "Arb", + "Kha", + "Jim", + "Sab" + ], + "SHORTMONTH": [ + "Kob", + "Lab", + "Sad", + "Afr", + "Sha", + "Lix", + "Tod", + "Sid", + "Sag", + "Tob", + "KIT", + "LIT" + ], + "fullDate": "EEEE, MMMM dd, y", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Birr", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "so-et", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_so-ke.js b/1.2.30/i18n/angular-locale_so-ke.js new file mode 100644 index 0000000000..b0bb946e02 --- /dev/null +++ b/1.2.30/i18n/angular-locale_so-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "sn.", + "gn." + ], + "DAY": [ + "Axad", + "Isniin", + "Talaado", + "Arbaco", + "Khamiis", + "Jimco", + "Sabti" + ], + "MONTH": [ + "Bisha Koobaad", + "Bisha Labaad", + "Bisha Saddexaad", + "Bisha Afraad", + "Bisha Shanaad", + "Bisha Lixaad", + "Bisha Todobaad", + "Bisha Sideedaad", + "Bisha Sagaalaad", + "Bisha Tobnaad", + "Bisha Kow iyo Tobnaad", + "Bisha Laba iyo Tobnaad" + ], + "SHORTDAY": [ + "Axd", + "Isn", + "Tal", + "Arb", + "Kha", + "Jim", + "Sab" + ], + "SHORTMONTH": [ + "Kob", + "Lab", + "Sad", + "Afr", + "Sha", + "Lix", + "Tod", + "Sid", + "Sag", + "Tob", + "KIT", + "LIT" + ], + "fullDate": "EEEE, MMMM dd, y", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "so-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_so-so.js b/1.2.30/i18n/angular-locale_so-so.js new file mode 100644 index 0000000000..5f44c3b737 --- /dev/null +++ b/1.2.30/i18n/angular-locale_so-so.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "sn.", + "gn." + ], + "DAY": [ + "Axad", + "Isniin", + "Talaado", + "Arbaco", + "Khamiis", + "Jimco", + "Sabti" + ], + "MONTH": [ + "Bisha Koobaad", + "Bisha Labaad", + "Bisha Saddexaad", + "Bisha Afraad", + "Bisha Shanaad", + "Bisha Lixaad", + "Bisha Todobaad", + "Bisha Sideedaad", + "Bisha Sagaalaad", + "Bisha Tobnaad", + "Bisha Kow iyo Tobnaad", + "Bisha Laba iyo Tobnaad" + ], + "SHORTDAY": [ + "Axd", + "Isn", + "Tal", + "Arb", + "Kha", + "Jim", + "Sab" + ], + "SHORTMONTH": [ + "Kob", + "Lab", + "Sad", + "Afr", + "Sha", + "Lix", + "Tod", + "Sid", + "Sag", + "Tob", + "KIT", + "LIT" + ], + "fullDate": "EEEE, MMMM dd, y", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "SOS", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "so-so", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_so.js b/1.2.30/i18n/angular-locale_so.js new file mode 100644 index 0000000000..46245501f7 --- /dev/null +++ b/1.2.30/i18n/angular-locale_so.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "sn.", + "gn." + ], + "DAY": [ + "Axad", + "Isniin", + "Talaado", + "Arbaco", + "Khamiis", + "Jimco", + "Sabti" + ], + "MONTH": [ + "Bisha Koobaad", + "Bisha Labaad", + "Bisha Saddexaad", + "Bisha Afraad", + "Bisha Shanaad", + "Bisha Lixaad", + "Bisha Todobaad", + "Bisha Sideedaad", + "Bisha Sagaalaad", + "Bisha Tobnaad", + "Bisha Kow iyo Tobnaad", + "Bisha Laba iyo Tobnaad" + ], + "SHORTDAY": [ + "Axd", + "Isn", + "Tal", + "Arb", + "Kha", + "Jim", + "Sab" + ], + "SHORTMONTH": [ + "Kob", + "Lab", + "Sad", + "Afr", + "Sha", + "Lix", + "Tod", + "Sid", + "Sag", + "Tob", + "KIT", + "LIT" + ], + "fullDate": "EEEE, MMMM dd, y", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "SOS", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "so", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sq-al.js b/1.2.30/i18n/angular-locale_sq-al.js new file mode 100644 index 0000000000..e33b6c13f0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sq-al.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "paradite", + "pasdite" + ], + "DAY": [ + "e diel", + "e h\u00ebn\u00eb", + "e mart\u00eb", + "e m\u00ebrkur\u00eb", + "e enjte", + "e premte", + "e shtun\u00eb" + ], + "MONTH": [ + "janar", + "shkurt", + "mars", + "prill", + "maj", + "qershor", + "korrik", + "gusht", + "shtator", + "tetor", + "n\u00ebntor", + "dhjetor" + ], + "SHORTDAY": [ + "Die", + "H\u00ebn", + "Mar", + "M\u00ebr", + "Enj", + "Pre", + "Sht" + ], + "SHORTMONTH": [ + "Jan", + "Shk", + "Mar", + "Pri", + "Maj", + "Qer", + "Kor", + "Gsh", + "Sht", + "Tet", + "N\u00ebn", + "Dhj" + ], + "fullDate": "EEEE, dd MMMM y", + "longDate": "dd MMMM y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Lek", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sq-al", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sq-mk.js b/1.2.30/i18n/angular-locale_sq-mk.js new file mode 100644 index 0000000000..0434bf8c8e --- /dev/null +++ b/1.2.30/i18n/angular-locale_sq-mk.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "paradite", + "pasdite" + ], + "DAY": [ + "e diel", + "e h\u00ebn\u00eb", + "e mart\u00eb", + "e m\u00ebrkur\u00eb", + "e enjte", + "e premte", + "e shtun\u00eb" + ], + "MONTH": [ + "janar", + "shkurt", + "mars", + "prill", + "maj", + "qershor", + "korrik", + "gusht", + "shtator", + "tetor", + "n\u00ebntor", + "dhjetor" + ], + "SHORTDAY": [ + "Die", + "H\u00ebn", + "Mar", + "M\u00ebr", + "Enj", + "Pre", + "Sht" + ], + "SHORTMONTH": [ + "Jan", + "Shk", + "Mar", + "Pri", + "Maj", + "Qer", + "Kor", + "Gsh", + "Sht", + "Tet", + "N\u00ebn", + "Dhj" + ], + "fullDate": "EEEE, dd MMMM y", + "longDate": "dd MMMM y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sq-mk", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sq-xk.js b/1.2.30/i18n/angular-locale_sq-xk.js new file mode 100644 index 0000000000..e89692d8b1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sq-xk.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "paradite", + "pasdite" + ], + "DAY": [ + "e diel", + "e h\u00ebn\u00eb", + "e mart\u00eb", + "e m\u00ebrkur\u00eb", + "e enjte", + "e premte", + "e shtun\u00eb" + ], + "MONTH": [ + "janar", + "shkurt", + "mars", + "prill", + "maj", + "qershor", + "korrik", + "gusht", + "shtator", + "tetor", + "n\u00ebntor", + "dhjetor" + ], + "SHORTDAY": [ + "Die", + "H\u00ebn", + "Mar", + "M\u00ebr", + "Enj", + "Pre", + "Sht" + ], + "SHORTMONTH": [ + "Jan", + "Shk", + "Mar", + "Pri", + "Maj", + "Qer", + "Kor", + "Gsh", + "Sht", + "Tet", + "N\u00ebn", + "Dhj" + ], + "fullDate": "EEEE, dd MMMM y", + "longDate": "dd MMMM y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sq-xk", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sq.js b/1.2.30/i18n/angular-locale_sq.js new file mode 100644 index 0000000000..eeba5cf05f --- /dev/null +++ b/1.2.30/i18n/angular-locale_sq.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "paradite", + "pasdite" + ], + "DAY": [ + "e diel", + "e h\u00ebn\u00eb", + "e mart\u00eb", + "e m\u00ebrkur\u00eb", + "e enjte", + "e premte", + "e shtun\u00eb" + ], + "MONTH": [ + "janar", + "shkurt", + "mars", + "prill", + "maj", + "qershor", + "korrik", + "gusht", + "shtator", + "tetor", + "n\u00ebntor", + "dhjetor" + ], + "SHORTDAY": [ + "Die", + "H\u00ebn", + "Mar", + "M\u00ebr", + "Enj", + "Pre", + "Sht" + ], + "SHORTMONTH": [ + "Jan", + "Shk", + "Mar", + "Pri", + "Maj", + "Qer", + "Kor", + "Gsh", + "Sht", + "Tet", + "N\u00ebn", + "Dhj" + ], + "fullDate": "EEEE, dd MMMM y", + "longDate": "dd MMMM y", + "medium": "dd/MM/y HH:mm:ss", + "mediumDate": "dd/MM/y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/yy HH:mm", + "shortDate": "dd/MM/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Lek", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sq", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sr-cyrl-ba.js b/1.2.30/i18n/angular-locale_sr-cyrl-ba.js new file mode 100644 index 0000000000..562d0c6229 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sr-cyrl-ba.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435", + "\u043f\u043e\u043f\u043e\u0434\u043d\u0435" + ], + "DAY": [ + "\u043d\u0435\u0434\u0435\u0459\u0430", + "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a", + "\u0443\u0442\u043e\u0440\u0430\u043a", + "\u0441\u0440\u0438\u0458\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a", + "\u043f\u0435\u0442\u0430\u043a", + "\u0441\u0443\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0458\u0430\u043d\u0443\u0430\u0440", + "\u0444\u0435\u0431\u0440\u0443\u0430\u0440", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0438\u043b", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d\u0438", + "\u0458\u0443\u043b\u0438", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440", + "\u043e\u043a\u0442\u043e\u0431\u0430\u0440", + "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440", + "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440" + ], + "SHORTDAY": [ + "\u043d\u0435\u0434", + "\u043f\u043e\u043d", + "\u0443\u0442\u043e", + "\u0441\u0440\u0438", + "\u0447\u0435\u0442", + "\u043f\u0435\u0442", + "\u0441\u0443\u0431" + ], + "SHORTMONTH": [ + "\u0458\u0430\u043d", + "\u0444\u0435\u0431", + "\u043c\u0430\u0440", + "\u0430\u043f\u0440", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d", + "\u0458\u0443\u043b", + "\u0430\u0432\u0433", + "\u0441\u0435\u043f", + "\u043e\u043a\u0442", + "\u043d\u043e\u0432", + "\u0434\u0435\u0446" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "dd. MMMM y.", + "medium": "y-MM-dd HH:mm:ss", + "mediumDate": "y-MM-dd", + "mediumTime": "HH:mm:ss", + "short": "yy-MM-dd HH:mm", + "shortDate": "yy-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "KM", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sr-cyrl-ba", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sr-cyrl-me.js b/1.2.30/i18n/angular-locale_sr-cyrl-me.js new file mode 100644 index 0000000000..527cef0b6f --- /dev/null +++ b/1.2.30/i18n/angular-locale_sr-cyrl-me.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435", + "\u043f\u043e\u043f\u043e\u0434\u043d\u0435" + ], + "DAY": [ + "\u043d\u0435\u0434\u0435\u0459\u0430", + "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a", + "\u0443\u0442\u043e\u0440\u0430\u043a", + "\u0441\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a", + "\u043f\u0435\u0442\u0430\u043a", + "\u0441\u0443\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0458\u0430\u043d\u0443\u0430\u0440", + "\u0444\u0435\u0431\u0440\u0443\u0430\u0440", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0438\u043b", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d", + "\u0458\u0443\u043b", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440", + "\u043e\u043a\u0442\u043e\u0431\u0430\u0440", + "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440", + "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440" + ], + "SHORTDAY": [ + "\u043d\u0435\u0434", + "\u043f\u043e\u043d", + "\u0443\u0442\u043e", + "\u0441\u0440\u0435", + "\u0447\u0435\u0442", + "\u043f\u0435\u0442", + "\u0441\u0443\u0431" + ], + "SHORTMONTH": [ + "\u0458\u0430\u043d", + "\u0444\u0435\u0431", + "\u043c\u0430\u0440", + "\u0430\u043f\u0440", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d", + "\u0458\u0443\u043b", + "\u0430\u0432\u0433", + "\u0441\u0435\u043f", + "\u043e\u043a\u0442", + "\u043d\u043e\u0432", + "\u0434\u0435\u0446" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "dd. MMMM y.", + "medium": "dd.MM.y. HH.mm.ss", + "mediumDate": "dd.MM.y.", + "mediumTime": "HH.mm.ss", + "short": "d.M.yy. HH.mm", + "shortDate": "d.M.yy.", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sr-cyrl-me", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sr-cyrl-rs.js b/1.2.30/i18n/angular-locale_sr-cyrl-rs.js new file mode 100644 index 0000000000..b384c171d4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sr-cyrl-rs.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435", + "\u043f\u043e\u043f\u043e\u0434\u043d\u0435" + ], + "DAY": [ + "\u043d\u0435\u0434\u0435\u0459\u0430", + "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a", + "\u0443\u0442\u043e\u0440\u0430\u043a", + "\u0441\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a", + "\u043f\u0435\u0442\u0430\u043a", + "\u0441\u0443\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0458\u0430\u043d\u0443\u0430\u0440", + "\u0444\u0435\u0431\u0440\u0443\u0430\u0440", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0438\u043b", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d", + "\u0458\u0443\u043b", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440", + "\u043e\u043a\u0442\u043e\u0431\u0430\u0440", + "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440", + "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440" + ], + "SHORTDAY": [ + "\u043d\u0435\u0434", + "\u043f\u043e\u043d", + "\u0443\u0442\u043e", + "\u0441\u0440\u0435", + "\u0447\u0435\u0442", + "\u043f\u0435\u0442", + "\u0441\u0443\u0431" + ], + "SHORTMONTH": [ + "\u0458\u0430\u043d", + "\u0444\u0435\u0431", + "\u043c\u0430\u0440", + "\u0430\u043f\u0440", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d", + "\u0458\u0443\u043b", + "\u0430\u0432\u0433", + "\u0441\u0435\u043f", + "\u043e\u043a\u0442", + "\u043d\u043e\u0432", + "\u0434\u0435\u0446" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "dd. MMMM y.", + "medium": "dd.MM.y. HH.mm.ss", + "mediumDate": "dd.MM.y.", + "mediumTime": "HH.mm.ss", + "short": "d.M.yy. HH.mm", + "shortDate": "d.M.yy.", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sr-cyrl-rs", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sr-cyrl-xk.js b/1.2.30/i18n/angular-locale_sr-cyrl-xk.js new file mode 100644 index 0000000000..21eeed02ea --- /dev/null +++ b/1.2.30/i18n/angular-locale_sr-cyrl-xk.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435", + "\u043f\u043e\u043f\u043e\u0434\u043d\u0435" + ], + "DAY": [ + "\u043d\u0435\u0434\u0435\u0459\u0430", + "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a", + "\u0443\u0442\u043e\u0440\u0430\u043a", + "\u0441\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a", + "\u043f\u0435\u0442\u0430\u043a", + "\u0441\u0443\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0458\u0430\u043d\u0443\u0430\u0440", + "\u0444\u0435\u0431\u0440\u0443\u0430\u0440", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0438\u043b", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d", + "\u0458\u0443\u043b", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440", + "\u043e\u043a\u0442\u043e\u0431\u0430\u0440", + "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440", + "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440" + ], + "SHORTDAY": [ + "\u043d\u0435\u0434", + "\u043f\u043e\u043d", + "\u0443\u0442\u043e", + "\u0441\u0440\u0435", + "\u0447\u0435\u0442", + "\u043f\u0435\u0442", + "\u0441\u0443\u0431" + ], + "SHORTMONTH": [ + "\u0458\u0430\u043d", + "\u0444\u0435\u0431", + "\u043c\u0430\u0440", + "\u0430\u043f\u0440", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d", + "\u0458\u0443\u043b", + "\u0430\u0432\u0433", + "\u0441\u0435\u043f", + "\u043e\u043a\u0442", + "\u043d\u043e\u0432", + "\u0434\u0435\u0446" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "dd. MMMM y.", + "medium": "dd.MM.y. HH.mm.ss", + "mediumDate": "dd.MM.y.", + "mediumTime": "HH.mm.ss", + "short": "d.M.yy. HH.mm", + "shortDate": "d.M.yy.", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sr-cyrl-xk", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sr-cyrl.js b/1.2.30/i18n/angular-locale_sr-cyrl.js new file mode 100644 index 0000000000..086a41dc62 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sr-cyrl.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435", + "\u043f\u043e\u043f\u043e\u0434\u043d\u0435" + ], + "DAY": [ + "\u043d\u0435\u0434\u0435\u0459\u0430", + "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a", + "\u0443\u0442\u043e\u0440\u0430\u043a", + "\u0441\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a", + "\u043f\u0435\u0442\u0430\u043a", + "\u0441\u0443\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0458\u0430\u043d\u0443\u0430\u0440", + "\u0444\u0435\u0431\u0440\u0443\u0430\u0440", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0438\u043b", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d", + "\u0458\u0443\u043b", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440", + "\u043e\u043a\u0442\u043e\u0431\u0430\u0440", + "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440", + "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440" + ], + "SHORTDAY": [ + "\u043d\u0435\u0434", + "\u043f\u043e\u043d", + "\u0443\u0442\u043e", + "\u0441\u0440\u0435", + "\u0447\u0435\u0442", + "\u043f\u0435\u0442", + "\u0441\u0443\u0431" + ], + "SHORTMONTH": [ + "\u0458\u0430\u043d", + "\u0444\u0435\u0431", + "\u043c\u0430\u0440", + "\u0430\u043f\u0440", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d", + "\u0458\u0443\u043b", + "\u0430\u0432\u0433", + "\u0441\u0435\u043f", + "\u043e\u043a\u0442", + "\u043d\u043e\u0432", + "\u0434\u0435\u0446" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "dd. MMMM y.", + "medium": "dd.MM.y. HH.mm.ss", + "mediumDate": "dd.MM.y.", + "mediumTime": "HH.mm.ss", + "short": "d.M.yy. HH.mm", + "shortDate": "d.M.yy.", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sr-cyrl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sr-latn-ba.js b/1.2.30/i18n/angular-locale_sr-latn-ba.js new file mode 100644 index 0000000000..69daa021c7 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sr-latn-ba.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "pre podne", + "popodne" + ], + "DAY": [ + "nedelja", + "ponedeljak", + "utorak", + "sreda", + "\u010detvrtak", + "petak", + "subota" + ], + "MONTH": [ + "januar", + "februar", + "mart", + "april", + "maj", + "jun", + "jul", + "avgust", + "septembar", + "oktobar", + "novembar", + "decembar" + ], + "SHORTDAY": [ + "ned", + "pon", + "uto", + "sre", + "\u010det", + "pet", + "sub" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "avg", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "dd. MMMM y.", + "medium": "dd.MM.y. HH.mm.ss", + "mediumDate": "dd.MM.y.", + "mediumTime": "HH.mm.ss", + "short": "d.M.yy. HH.mm", + "shortDate": "d.M.yy.", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "KM", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sr-latn-ba", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sr-latn-me.js b/1.2.30/i18n/angular-locale_sr-latn-me.js new file mode 100644 index 0000000000..138b3bb19c --- /dev/null +++ b/1.2.30/i18n/angular-locale_sr-latn-me.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "pre podne", + "popodne" + ], + "DAY": [ + "nedelja", + "ponedeljak", + "utorak", + "sreda", + "\u010detvrtak", + "petak", + "subota" + ], + "MONTH": [ + "januar", + "februar", + "mart", + "april", + "maj", + "jun", + "jul", + "avgust", + "septembar", + "oktobar", + "novembar", + "decembar" + ], + "SHORTDAY": [ + "ned", + "pon", + "uto", + "sre", + "\u010det", + "pet", + "sub" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "avg", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "d.MM.y.", + "medium": "dd.MM.y. HH.mm.ss", + "mediumDate": "dd.MM.y.", + "mediumTime": "HH.mm.ss", + "short": "d.M.yy. HH.mm", + "shortDate": "d.M.yy.", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sr-latn-me", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sr-latn-rs.js b/1.2.30/i18n/angular-locale_sr-latn-rs.js new file mode 100644 index 0000000000..18411e47d5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sr-latn-rs.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "pre podne", + "popodne" + ], + "DAY": [ + "nedelja", + "ponedeljak", + "utorak", + "sreda", + "\u010detvrtak", + "petak", + "subota" + ], + "MONTH": [ + "januar", + "februar", + "mart", + "april", + "maj", + "jun", + "jul", + "avgust", + "septembar", + "oktobar", + "novembar", + "decembar" + ], + "SHORTDAY": [ + "ned", + "pon", + "uto", + "sre", + "\u010det", + "pet", + "sub" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "avg", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "dd. MMMM y.", + "medium": "dd.MM.y. HH.mm.ss", + "mediumDate": "dd.MM.y.", + "mediumTime": "HH.mm.ss", + "short": "d.M.yy. HH.mm", + "shortDate": "d.M.yy.", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sr-latn-rs", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sr-latn-xk.js b/1.2.30/i18n/angular-locale_sr-latn-xk.js new file mode 100644 index 0000000000..7979ae945f --- /dev/null +++ b/1.2.30/i18n/angular-locale_sr-latn-xk.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "pre podne", + "popodne" + ], + "DAY": [ + "nedelja", + "ponedeljak", + "utorak", + "sreda", + "\u010detvrtak", + "petak", + "subota" + ], + "MONTH": [ + "januar", + "februar", + "mart", + "april", + "maj", + "jun", + "jul", + "avgust", + "septembar", + "oktobar", + "novembar", + "decembar" + ], + "SHORTDAY": [ + "ned", + "pon", + "uto", + "sre", + "\u010det", + "pet", + "sub" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "avg", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "dd. MMMM y.", + "medium": "dd.MM.y. HH.mm.ss", + "mediumDate": "dd.MM.y.", + "mediumTime": "HH.mm.ss", + "short": "d.M.yy. HH.mm", + "shortDate": "d.M.yy.", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sr-latn-xk", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sr-latn.js b/1.2.30/i18n/angular-locale_sr-latn.js new file mode 100644 index 0000000000..af7046ed76 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sr-latn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "pre podne", + "popodne" + ], + "DAY": [ + "nedelja", + "ponedeljak", + "utorak", + "sreda", + "\u010detvrtak", + "petak", + "subota" + ], + "MONTH": [ + "januar", + "februar", + "mart", + "april", + "maj", + "jun", + "jul", + "avgust", + "septembar", + "oktobar", + "novembar", + "decembar" + ], + "SHORTDAY": [ + "ned", + "pon", + "uto", + "sre", + "\u010det", + "pet", + "sub" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "avg", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "dd. MMMM y.", + "medium": "dd.MM.y. HH.mm.ss", + "mediumDate": "dd.MM.y.", + "mediumTime": "HH.mm.ss", + "short": "d.M.yy. HH.mm", + "shortDate": "d.M.yy.", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sr-latn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sr.js b/1.2.30/i18n/angular-locale_sr.js new file mode 100644 index 0000000000..0b44a3840a --- /dev/null +++ b/1.2.30/i18n/angular-locale_sr.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435", + "\u043f\u043e\u043f\u043e\u0434\u043d\u0435" + ], + "DAY": [ + "\u043d\u0435\u0434\u0435\u0459\u0430", + "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a", + "\u0443\u0442\u043e\u0440\u0430\u043a", + "\u0441\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a", + "\u043f\u0435\u0442\u0430\u043a", + "\u0441\u0443\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0458\u0430\u043d\u0443\u0430\u0440", + "\u0444\u0435\u0431\u0440\u0443\u0430\u0440", + "\u043c\u0430\u0440\u0442", + "\u0430\u043f\u0440\u0438\u043b", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d", + "\u0458\u0443\u043b", + "\u0430\u0432\u0433\u0443\u0441\u0442", + "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440", + "\u043e\u043a\u0442\u043e\u0431\u0430\u0440", + "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440", + "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440" + ], + "SHORTDAY": [ + "\u043d\u0435\u0434", + "\u043f\u043e\u043d", + "\u0443\u0442\u043e", + "\u0441\u0440\u0435", + "\u0447\u0435\u0442", + "\u043f\u0435\u0442", + "\u0441\u0443\u0431" + ], + "SHORTMONTH": [ + "\u0458\u0430\u043d", + "\u0444\u0435\u0431", + "\u043c\u0430\u0440", + "\u0430\u043f\u0440", + "\u043c\u0430\u0458", + "\u0458\u0443\u043d", + "\u0458\u0443\u043b", + "\u0430\u0432\u0433", + "\u0441\u0435\u043f", + "\u043e\u043a\u0442", + "\u043d\u043e\u0432", + "\u0434\u0435\u0446" + ], + "fullDate": "EEEE, dd. MMMM y.", + "longDate": "dd. MMMM y.", + "medium": "dd.MM.y. HH.mm.ss", + "mediumDate": "dd.MM.y.", + "mediumTime": "HH.mm.ss", + "short": "d.M.yy. HH.mm", + "shortDate": "d.M.yy.", + "shortTime": "HH.mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "din", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sr", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11 || vf.f % 10 == 1 && vf.f % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14) || vf.f % 10 >= 2 && vf.f % 10 <= 4 && (vf.f % 100 < 12 || vf.f % 100 > 14)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ss-sz.js b/1.2.30/i18n/angular-locale_ss-sz.js new file mode 100644 index 0000000000..1d8bf3e334 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ss-sz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Lisontfo", + "uMsombuluko", + "Lesibili", + "Lesitsatfu", + "Lesine", + "Lesihlanu", + "uMgcibelo" + ], + "MONTH": [ + "Bhimbidvwane", + "iNdlovana", + "iNdlovu-lenkhulu", + "Mabasa", + "iNkhwekhweti", + "iNhlaba", + "Kholwane", + "iNgci", + "iNyoni", + "iMphala", + "Lweti", + "iNgongoni" + ], + "SHORTDAY": [ + "Son", + "Mso", + "Bil", + "Tsa", + "Ne", + "Hla", + "Mgc" + ], + "SHORTMONTH": [ + "Bhi", + "Van", + "Vol", + "Mab", + "Nkh", + "Nhl", + "Kho", + "Ngc", + "Nyo", + "Mph", + "Lwe", + "Ngo" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "SZL", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ss-sz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ss-za.js b/1.2.30/i18n/angular-locale_ss-za.js new file mode 100644 index 0000000000..d5d28019b7 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ss-za.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Lisontfo", + "uMsombuluko", + "Lesibili", + "Lesitsatfu", + "Lesine", + "Lesihlanu", + "uMgcibelo" + ], + "MONTH": [ + "Bhimbidvwane", + "iNdlovana", + "iNdlovu-lenkhulu", + "Mabasa", + "iNkhwekhweti", + "iNhlaba", + "Kholwane", + "iNgci", + "iNyoni", + "iMphala", + "Lweti", + "iNgongoni" + ], + "SHORTDAY": [ + "Son", + "Mso", + "Bil", + "Tsa", + "Ne", + "Hla", + "Mgc" + ], + "SHORTMONTH": [ + "Bhi", + "Van", + "Vol", + "Mab", + "Nkh", + "Nhl", + "Kho", + "Ngc", + "Nyo", + "Mph", + "Lwe", + "Ngo" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ss-za", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ss.js b/1.2.30/i18n/angular-locale_ss.js new file mode 100644 index 0000000000..49e19adfe2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ss.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Lisontfo", + "uMsombuluko", + "Lesibili", + "Lesitsatfu", + "Lesine", + "Lesihlanu", + "uMgcibelo" + ], + "MONTH": [ + "Bhimbidvwane", + "iNdlovana", + "iNdlovu-lenkhulu", + "Mabasa", + "iNkhwekhweti", + "iNhlaba", + "Kholwane", + "iNgci", + "iNyoni", + "iMphala", + "Lweti", + "iNgongoni" + ], + "SHORTDAY": [ + "Son", + "Mso", + "Bil", + "Tsa", + "Ne", + "Hla", + "Mgc" + ], + "SHORTMONTH": [ + "Bhi", + "Van", + "Vol", + "Mab", + "Nkh", + "Nhl", + "Kho", + "Ngc", + "Nyo", + "Mph", + "Lwe", + "Ngo" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ss", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ssy-er.js b/1.2.30/i18n/angular-locale_ssy-er.js new file mode 100644 index 0000000000..d8c2ca0f3f --- /dev/null +++ b/1.2.30/i18n/angular-locale_ssy-er.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "saaku", + "carra" + ], + "DAY": [ + "Naba Sambat", + "Sani", + "Salus", + "Rabuq", + "Camus", + "Jumqata", + "Qunxa Sambat" + ], + "MONTH": [ + "Qunxa Garablu", + "Kudo", + "Ciggilta Kudo", + "Agda Baxis", + "Caxah Alsa", + "Qasa Dirri", + "Qado Dirri", + "Liiqen", + "Waysu", + "Diteli", + "Ximoli", + "Kaxxa Garablu" + ], + "SHORTDAY": [ + "Nab", + "San", + "Sal", + "Rab", + "Cam", + "Jum", + "Qun" + ], + "SHORTMONTH": [ + "Qun", + "Nah", + "Cig", + "Agd", + "Cax", + "Qas", + "Qad", + "Leq", + "Way", + "Dit", + "Xim", + "Kax" + ], + "fullDate": "EEEE, MMMM dd, y", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Nfk", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ssy-er", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ssy.js b/1.2.30/i18n/angular-locale_ssy.js new file mode 100644 index 0000000000..56b81a8fb1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ssy.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "saaku", + "carra" + ], + "DAY": [ + "Naba Sambat", + "Sani", + "Salus", + "Rabuq", + "Camus", + "Jumqata", + "Qunxa Sambat" + ], + "MONTH": [ + "Qunxa Garablu", + "Kudo", + "Ciggilta Kudo", + "Agda Baxis", + "Caxah Alsa", + "Qasa Dirri", + "Qado Dirri", + "Liiqen", + "Waysu", + "Diteli", + "Ximoli", + "Kaxxa Garablu" + ], + "SHORTDAY": [ + "Nab", + "San", + "Sal", + "Rab", + "Cam", + "Jum", + "Qun" + ], + "SHORTMONTH": [ + "Qun", + "Nah", + "Cig", + "Agd", + "Cax", + "Qas", + "Qad", + "Leq", + "Way", + "Dit", + "Xim", + "Kax" + ], + "fullDate": "EEEE, MMMM dd, y", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Nfk", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ssy", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_st-ls.js b/1.2.30/i18n/angular-locale_st-ls.js new file mode 100644 index 0000000000..66d7514b02 --- /dev/null +++ b/1.2.30/i18n/angular-locale_st-ls.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sontaha", + "Mmantaha", + "Labobedi", + "Laboraru", + "Labone", + "Labohlane", + "Moqebelo" + ], + "MONTH": [ + "Phesekgong", + "Hlakola", + "Hlakubele", + "Mmese", + "Motsheanong", + "Phupjane", + "Phupu", + "Phata", + "Leotshe", + "Mphalane", + "Pundungwane", + "Tshitwe" + ], + "SHORTDAY": [ + "Son", + "Mma", + "Bed", + "Rar", + "Ne", + "Hla", + "Moq" + ], + "SHORTMONTH": [ + "Phe", + "Kol", + "Ube", + "Mme", + "Mot", + "Jan", + "Upu", + "Pha", + "Leo", + "Mph", + "Pun", + "Tsh" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "st-ls", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_st-za.js b/1.2.30/i18n/angular-locale_st-za.js new file mode 100644 index 0000000000..43a55578af --- /dev/null +++ b/1.2.30/i18n/angular-locale_st-za.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sontaha", + "Mmantaha", + "Labobedi", + "Laboraru", + "Labone", + "Labohlane", + "Moqebelo" + ], + "MONTH": [ + "Phesekgong", + "Hlakola", + "Hlakubele", + "Mmese", + "Motsheanong", + "Phupjane", + "Phupu", + "Phata", + "Leotshe", + "Mphalane", + "Pundungwane", + "Tshitwe" + ], + "SHORTDAY": [ + "Son", + "Mma", + "Bed", + "Rar", + "Ne", + "Hla", + "Moq" + ], + "SHORTMONTH": [ + "Phe", + "Kol", + "Ube", + "Mme", + "Mot", + "Jan", + "Upu", + "Pha", + "Leo", + "Mph", + "Pun", + "Tsh" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "st-za", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_st.js b/1.2.30/i18n/angular-locale_st.js new file mode 100644 index 0000000000..cf380aa80a --- /dev/null +++ b/1.2.30/i18n/angular-locale_st.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sontaha", + "Mmantaha", + "Labobedi", + "Laboraru", + "Labone", + "Labohlane", + "Moqebelo" + ], + "MONTH": [ + "Phesekgong", + "Hlakola", + "Hlakubele", + "Mmese", + "Motsheanong", + "Phupjane", + "Phupu", + "Phata", + "Leotshe", + "Mphalane", + "Pundungwane", + "Tshitwe" + ], + "SHORTDAY": [ + "Son", + "Mma", + "Bed", + "Rar", + "Ne", + "Hla", + "Moq" + ], + "SHORTMONTH": [ + "Phe", + "Kol", + "Ube", + "Mme", + "Mot", + "Jan", + "Upu", + "Pha", + "Leo", + "Mph", + "Pun", + "Tsh" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "st", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sv-ax.js b/1.2.30/i18n/angular-locale_sv-ax.js new file mode 100644 index 0000000000..4ad71095e2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sv-ax.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "fm", + "em" + ], + "DAY": [ + "s\u00f6ndag", + "m\u00e5ndag", + "tisdag", + "onsdag", + "torsdag", + "fredag", + "l\u00f6rdag" + ], + "MONTH": [ + "januari", + "februari", + "mars", + "april", + "maj", + "juni", + "juli", + "augusti", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "s\u00f6n", + "m\u00e5n", + "tis", + "ons", + "tors", + "fre", + "l\u00f6r" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "aug", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sv-ax", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sv-fi.js b/1.2.30/i18n/angular-locale_sv-fi.js new file mode 100644 index 0000000000..fac30f88ff --- /dev/null +++ b/1.2.30/i18n/angular-locale_sv-fi.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "fm", + "em" + ], + "DAY": [ + "s\u00f6ndag", + "m\u00e5ndag", + "tisdag", + "onsdag", + "torsdag", + "fredag", + "l\u00f6rdag" + ], + "MONTH": [ + "januari", + "februari", + "mars", + "april", + "maj", + "juni", + "juli", + "augusti", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "s\u00f6n", + "m\u00e5n", + "tis", + "ons", + "tors", + "fre", + "l\u00f6r" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "aug", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE'en' 'den' d:'e' MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd-MM-y HH:mm", + "shortDate": "dd-MM-y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sv-fi", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sv-se.js b/1.2.30/i18n/angular-locale_sv-se.js new file mode 100644 index 0000000000..fbf58ab901 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sv-se.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "fm", + "em" + ], + "DAY": [ + "s\u00f6ndag", + "m\u00e5ndag", + "tisdag", + "onsdag", + "torsdag", + "fredag", + "l\u00f6rdag" + ], + "MONTH": [ + "januari", + "februari", + "mars", + "april", + "maj", + "juni", + "juli", + "augusti", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "s\u00f6n", + "m\u00e5n", + "tis", + "ons", + "tors", + "fre", + "l\u00f6r" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "aug", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sv-se", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sv.js b/1.2.30/i18n/angular-locale_sv.js new file mode 100644 index 0000000000..1a3d22679a --- /dev/null +++ b/1.2.30/i18n/angular-locale_sv.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "fm", + "em" + ], + "DAY": [ + "s\u00f6ndag", + "m\u00e5ndag", + "tisdag", + "onsdag", + "torsdag", + "fredag", + "l\u00f6rdag" + ], + "MONTH": [ + "januari", + "februari", + "mars", + "april", + "maj", + "juni", + "juli", + "augusti", + "september", + "oktober", + "november", + "december" + ], + "SHORTDAY": [ + "s\u00f6n", + "m\u00e5n", + "tis", + "ons", + "tors", + "fre", + "l\u00f6r" + ], + "SHORTMONTH": [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "aug", + "sep", + "okt", + "nov", + "dec" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "kr", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "sv", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sw-ke.js b/1.2.30/i18n/angular-locale_sw-ke.js new file mode 100644 index 0000000000..ae3d804305 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sw-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Jumapili", + "Jumatatu", + "Jumanne", + "Jumatano", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Aprili", + "Mei", + "Juni", + "Julai", + "Agosti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Jumapili", + "Jumatatu", + "Jumanne", + "Jumatano", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "sw-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sw-tz.js b/1.2.30/i18n/angular-locale_sw-tz.js new file mode 100644 index 0000000000..9fc44e24b8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_sw-tz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Jumapili", + "Jumatatu", + "Jumanne", + "Jumatano", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Aprili", + "Mei", + "Juni", + "Julai", + "Agosti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Jumapili", + "Jumatatu", + "Jumanne", + "Jumatano", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "sw-tz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sw-ug.js b/1.2.30/i18n/angular-locale_sw-ug.js new file mode 100644 index 0000000000..648ecb95cc --- /dev/null +++ b/1.2.30/i18n/angular-locale_sw-ug.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Jumapili", + "Jumatatu", + "Jumanne", + "Jumatano", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Aprili", + "Mei", + "Juni", + "Julai", + "Agosti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Jumapili", + "Jumatatu", + "Jumanne", + "Jumatano", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "UGX", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "sw-ug", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_sw.js b/1.2.30/i18n/angular-locale_sw.js new file mode 100644 index 0000000000..54ae3e7eef --- /dev/null +++ b/1.2.30/i18n/angular-locale_sw.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Jumapili", + "Jumatatu", + "Jumanne", + "Jumatano", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Aprili", + "Mei", + "Juni", + "Julai", + "Agosti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Jumapili", + "Jumatatu", + "Jumanne", + "Jumatano", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "sw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_swc-cd.js b/1.2.30/i18n/angular-locale_swc-cd.js new file mode 100644 index 0000000000..395e9cbced --- /dev/null +++ b/1.2.30/i18n/angular-locale_swc-cd.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "ya asubuyi", + "ya muchana" + ], + "DAY": [ + "siku ya yenga", + "siku ya kwanza", + "siku ya pili", + "siku ya tatu", + "siku ya ine", + "siku ya tanu", + "siku ya sita" + ], + "MONTH": [ + "mwezi ya kwanja", + "mwezi ya pili", + "mwezi ya tatu", + "mwezi ya ine", + "mwezi ya tanu", + "mwezi ya sita", + "mwezi ya saba", + "mwezi ya munane", + "mwezi ya tisa", + "mwezi ya kumi", + "mwezi ya kumi na moya", + "mwezi ya kumi ya mbili" + ], + "SHORTDAY": [ + "yen", + "kwa", + "pil", + "tat", + "ine", + "tan", + "sit" + ], + "SHORTMONTH": [ + "mkw", + "mpi", + "mtu", + "min", + "mtn", + "mst", + "msb", + "mun", + "mts", + "mku", + "mkm", + "mkb" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FrCD", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "swc-cd", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_swc.js b/1.2.30/i18n/angular-locale_swc.js new file mode 100644 index 0000000000..7b99291e81 --- /dev/null +++ b/1.2.30/i18n/angular-locale_swc.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "ya asubuyi", + "ya muchana" + ], + "DAY": [ + "siku ya yenga", + "siku ya kwanza", + "siku ya pili", + "siku ya tatu", + "siku ya ine", + "siku ya tanu", + "siku ya sita" + ], + "MONTH": [ + "mwezi ya kwanja", + "mwezi ya pili", + "mwezi ya tatu", + "mwezi ya ine", + "mwezi ya tanu", + "mwezi ya sita", + "mwezi ya saba", + "mwezi ya munane", + "mwezi ya tisa", + "mwezi ya kumi", + "mwezi ya kumi na moya", + "mwezi ya kumi ya mbili" + ], + "SHORTDAY": [ + "yen", + "kwa", + "pil", + "tat", + "ine", + "tan", + "sit" + ], + "SHORTMONTH": [ + "mkw", + "mpi", + "mtu", + "min", + "mtn", + "mst", + "msb", + "mun", + "mts", + "mku", + "mkm", + "mkb" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FrCD", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "swc", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ta-in.js b/1.2.30/i18n/angular-locale_ta-in.js new file mode 100644 index 0000000000..944af66791 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ta-in.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0bae\u0bc1\u0bb1\u0bcd\u0baa\u0b95\u0bb2\u0bcd", + "\u0baa\u0bbf\u0bb1\u0bcd\u0baa\u0b95\u0bb2\u0bcd" + ], + "DAY": [ + "\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1", + "\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd", + "\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd", + "\u0baa\u0bc1\u0ba4\u0ba9\u0bcd", + "\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd", + "\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf", + "\u0b9a\u0ba9\u0bbf" + ], + "MONTH": [ + "\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf", + "\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf", + "\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd", + "\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd", + "\u0bae\u0bc7", + "\u0b9c\u0bc2\u0ba9\u0bcd", + "\u0b9c\u0bc2\u0bb2\u0bc8", + "\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd", + "\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bae\u0bcd\u0baa\u0bb0\u0bcd", + "\u0b85\u0b95\u0bcd\u0b9f\u0bcb\u0baa\u0bb0\u0bcd", + "\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd", + "\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd" + ], + "SHORTDAY": [ + "\u0b9e\u0bbe", + "\u0ba4\u0bbf", + "\u0b9a\u0bc6", + "\u0baa\u0bc1", + "\u0bb5\u0bbf", + "\u0bb5\u0bc6", + "\u0b9a" + ], + "SHORTMONTH": [ + "\u0b9c\u0ba9.", + "\u0baa\u0bbf\u0baa\u0bcd.", + "\u0bae\u0bbe\u0bb0\u0bcd.", + "\u0b8f\u0baa\u0bcd.", + "\u0bae\u0bc7", + "\u0b9c\u0bc2\u0ba9\u0bcd", + "\u0b9c\u0bc2\u0bb2\u0bc8", + "\u0b86\u0b95.", + "\u0b9a\u0bc6\u0baa\u0bcd.", + "\u0b85\u0b95\u0bcd.", + "\u0ba8\u0bb5.", + "\u0b9f\u0bbf\u0b9a." + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y h:mm:ss a", + "mediumDate": "d MMM, y", + "mediumTime": "h:mm:ss a", + "short": "d-M-yy h:mm a", + "shortDate": "d-M-yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ta-in", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ta-lk.js b/1.2.30/i18n/angular-locale_ta-lk.js new file mode 100644 index 0000000000..2ed312ff97 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ta-lk.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0bae\u0bc1\u0bb1\u0bcd\u0baa\u0b95\u0bb2\u0bcd", + "\u0baa\u0bbf\u0bb1\u0bcd\u0baa\u0b95\u0bb2\u0bcd" + ], + "DAY": [ + "\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1", + "\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd", + "\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd", + "\u0baa\u0bc1\u0ba4\u0ba9\u0bcd", + "\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd", + "\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf", + "\u0b9a\u0ba9\u0bbf" + ], + "MONTH": [ + "\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf", + "\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf", + "\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd", + "\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd", + "\u0bae\u0bc7", + "\u0b9c\u0bc2\u0ba9\u0bcd", + "\u0b9c\u0bc2\u0bb2\u0bc8", + "\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd", + "\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bae\u0bcd\u0baa\u0bb0\u0bcd", + "\u0b85\u0b95\u0bcd\u0b9f\u0bcb\u0baa\u0bb0\u0bcd", + "\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd", + "\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd" + ], + "SHORTDAY": [ + "\u0b9e\u0bbe", + "\u0ba4\u0bbf", + "\u0b9a\u0bc6", + "\u0baa\u0bc1", + "\u0bb5\u0bbf", + "\u0bb5\u0bc6", + "\u0b9a" + ], + "SHORTMONTH": [ + "\u0b9c\u0ba9.", + "\u0baa\u0bbf\u0baa\u0bcd.", + "\u0bae\u0bbe\u0bb0\u0bcd.", + "\u0b8f\u0baa\u0bcd.", + "\u0bae\u0bc7", + "\u0b9c\u0bc2\u0ba9\u0bcd", + "\u0b9c\u0bc2\u0bb2\u0bc8", + "\u0b86\u0b95.", + "\u0b9a\u0bc6\u0baa\u0bcd.", + "\u0b85\u0b95\u0bcd.", + "\u0ba8\u0bb5.", + "\u0b9f\u0bbf\u0b9a." + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y h:mm:ss a", + "mediumDate": "d MMM, y", + "mediumTime": "h:mm:ss a", + "short": "d-M-yy h:mm a", + "shortDate": "d-M-yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rs", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ta-lk", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ta-my.js b/1.2.30/i18n/angular-locale_ta-my.js new file mode 100644 index 0000000000..0e30bc0dfb --- /dev/null +++ b/1.2.30/i18n/angular-locale_ta-my.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0bae\u0bc1\u0bb1\u0bcd\u0baa\u0b95\u0bb2\u0bcd", + "\u0baa\u0bbf\u0bb1\u0bcd\u0baa\u0b95\u0bb2\u0bcd" + ], + "DAY": [ + "\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1", + "\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd", + "\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd", + "\u0baa\u0bc1\u0ba4\u0ba9\u0bcd", + "\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd", + "\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf", + "\u0b9a\u0ba9\u0bbf" + ], + "MONTH": [ + "\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf", + "\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf", + "\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd", + "\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd", + "\u0bae\u0bc7", + "\u0b9c\u0bc2\u0ba9\u0bcd", + "\u0b9c\u0bc2\u0bb2\u0bc8", + "\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd", + "\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bae\u0bcd\u0baa\u0bb0\u0bcd", + "\u0b85\u0b95\u0bcd\u0b9f\u0bcb\u0baa\u0bb0\u0bcd", + "\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd", + "\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd" + ], + "SHORTDAY": [ + "\u0b9e\u0bbe", + "\u0ba4\u0bbf", + "\u0b9a\u0bc6", + "\u0baa\u0bc1", + "\u0bb5\u0bbf", + "\u0bb5\u0bc6", + "\u0b9a" + ], + "SHORTMONTH": [ + "\u0b9c\u0ba9.", + "\u0baa\u0bbf\u0baa\u0bcd.", + "\u0bae\u0bbe\u0bb0\u0bcd.", + "\u0b8f\u0baa\u0bcd.", + "\u0bae\u0bc7", + "\u0b9c\u0bc2\u0ba9\u0bcd", + "\u0b9c\u0bc2\u0bb2\u0bc8", + "\u0b86\u0b95.", + "\u0b9a\u0bc6\u0baa\u0bcd.", + "\u0b85\u0b95\u0bcd.", + "\u0ba8\u0bb5.", + "\u0b9f\u0bbf\u0b9a." + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y h:mm:ss a", + "mediumDate": "d MMM, y", + "mediumTime": "h:mm:ss a", + "short": "d-M-yy h:mm a", + "shortDate": "d-M-yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "RM", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ta-my", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ta-sg.js b/1.2.30/i18n/angular-locale_ta-sg.js new file mode 100644 index 0000000000..ef0548bfca --- /dev/null +++ b/1.2.30/i18n/angular-locale_ta-sg.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0bae\u0bc1\u0bb1\u0bcd\u0baa\u0b95\u0bb2\u0bcd", + "\u0baa\u0bbf\u0bb1\u0bcd\u0baa\u0b95\u0bb2\u0bcd" + ], + "DAY": [ + "\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1", + "\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd", + "\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd", + "\u0baa\u0bc1\u0ba4\u0ba9\u0bcd", + "\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd", + "\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf", + "\u0b9a\u0ba9\u0bbf" + ], + "MONTH": [ + "\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf", + "\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf", + "\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd", + "\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd", + "\u0bae\u0bc7", + "\u0b9c\u0bc2\u0ba9\u0bcd", + "\u0b9c\u0bc2\u0bb2\u0bc8", + "\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd", + "\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bae\u0bcd\u0baa\u0bb0\u0bcd", + "\u0b85\u0b95\u0bcd\u0b9f\u0bcb\u0baa\u0bb0\u0bcd", + "\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd", + "\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd" + ], + "SHORTDAY": [ + "\u0b9e\u0bbe", + "\u0ba4\u0bbf", + "\u0b9a\u0bc6", + "\u0baa\u0bc1", + "\u0bb5\u0bbf", + "\u0bb5\u0bc6", + "\u0b9a" + ], + "SHORTMONTH": [ + "\u0b9c\u0ba9.", + "\u0baa\u0bbf\u0baa\u0bcd.", + "\u0bae\u0bbe\u0bb0\u0bcd.", + "\u0b8f\u0baa\u0bcd.", + "\u0bae\u0bc7", + "\u0b9c\u0bc2\u0ba9\u0bcd", + "\u0b9c\u0bc2\u0bb2\u0bc8", + "\u0b86\u0b95.", + "\u0b9a\u0bc6\u0baa\u0bcd.", + "\u0b85\u0b95\u0bcd.", + "\u0ba8\u0bb5.", + "\u0b9f\u0bbf\u0b9a." + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y h:mm:ss a", + "mediumDate": "d MMM, y", + "mediumTime": "h:mm:ss a", + "short": "d-M-yy h:mm a", + "shortDate": "d-M-yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ta-sg", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ta.js b/1.2.30/i18n/angular-locale_ta.js new file mode 100644 index 0000000000..288a6eed77 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ta.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0bae\u0bc1\u0bb1\u0bcd\u0baa\u0b95\u0bb2\u0bcd", + "\u0baa\u0bbf\u0bb1\u0bcd\u0baa\u0b95\u0bb2\u0bcd" + ], + "DAY": [ + "\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1", + "\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd", + "\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd", + "\u0baa\u0bc1\u0ba4\u0ba9\u0bcd", + "\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd", + "\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf", + "\u0b9a\u0ba9\u0bbf" + ], + "MONTH": [ + "\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf", + "\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf", + "\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd", + "\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd", + "\u0bae\u0bc7", + "\u0b9c\u0bc2\u0ba9\u0bcd", + "\u0b9c\u0bc2\u0bb2\u0bc8", + "\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd", + "\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bae\u0bcd\u0baa\u0bb0\u0bcd", + "\u0b85\u0b95\u0bcd\u0b9f\u0bcb\u0baa\u0bb0\u0bcd", + "\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd", + "\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd" + ], + "SHORTDAY": [ + "\u0b9e\u0bbe", + "\u0ba4\u0bbf", + "\u0b9a\u0bc6", + "\u0baa\u0bc1", + "\u0bb5\u0bbf", + "\u0bb5\u0bc6", + "\u0b9a" + ], + "SHORTMONTH": [ + "\u0b9c\u0ba9.", + "\u0baa\u0bbf\u0baa\u0bcd.", + "\u0bae\u0bbe\u0bb0\u0bcd.", + "\u0b8f\u0baa\u0bcd.", + "\u0bae\u0bc7", + "\u0b9c\u0bc2\u0ba9\u0bcd", + "\u0b9c\u0bc2\u0bb2\u0bc8", + "\u0b86\u0b95.", + "\u0b9a\u0bc6\u0baa\u0bcd.", + "\u0b85\u0b95\u0bcd.", + "\u0ba8\u0bb5.", + "\u0b9f\u0bbf\u0b9a." + ], + "fullDate": "EEEE, d MMMM, y", + "longDate": "d MMMM, y", + "medium": "d MMM, y h:mm:ss a", + "mediumDate": "d MMM, y", + "mediumTime": "h:mm:ss a", + "short": "d-M-yy h:mm a", + "shortDate": "d-M-yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ta", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_te-in.js b/1.2.30/i18n/angular-locale_te-in.js new file mode 100644 index 0000000000..5006707d67 --- /dev/null +++ b/1.2.30/i18n/angular-locale_te-in.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02", + "\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02", + "\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02", + "\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02", + "\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02", + "\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02", + "\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02" + ], + "MONTH": [ + "\u0c1c\u0c28\u0c35\u0c30\u0c3f", + "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f", + "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f", + "\u0c0e\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d", + "\u0c2e\u0c47", + "\u0c1c\u0c42\u0c28\u0c4d", + "\u0c1c\u0c41\u0c32\u0c48", + "\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41", + "\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d", + "\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d", + "\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d", + "\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d" + ], + "SHORTDAY": [ + "\u0c06\u0c26\u0c3f", + "\u0c38\u0c4b\u0c2e", + "\u0c2e\u0c02\u0c17\u0c33", + "\u0c2c\u0c41\u0c27", + "\u0c17\u0c41\u0c30\u0c41", + "\u0c36\u0c41\u0c15\u0c4d\u0c30", + "\u0c36\u0c28\u0c3f" + ], + "SHORTMONTH": [ + "\u0c1c\u0c28", + "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30", + "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f", + "\u0c0f\u0c2a\u0c4d\u0c30\u0c3f", + "\u0c2e\u0c47", + "\u0c1c\u0c42\u0c28\u0c4d", + "\u0c1c\u0c41\u0c32\u0c48", + "\u0c06\u0c17", + "\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02", + "\u0c05\u0c15\u0c4d\u0c1f\u0c4b", + "\u0c28\u0c35\u0c02", + "\u0c21\u0c3f\u0c38\u0c46\u0c02" + ], + "fullDate": "d MMMM y EEEE", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd-MM-yy h:mm a", + "shortDate": "dd-MM-yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "te-in", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_te.js b/1.2.30/i18n/angular-locale_te.js new file mode 100644 index 0000000000..4f13847ac6 --- /dev/null +++ b/1.2.30/i18n/angular-locale_te.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02", + "\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02", + "\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02", + "\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02", + "\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02", + "\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02", + "\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02" + ], + "MONTH": [ + "\u0c1c\u0c28\u0c35\u0c30\u0c3f", + "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f", + "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f", + "\u0c0e\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d", + "\u0c2e\u0c47", + "\u0c1c\u0c42\u0c28\u0c4d", + "\u0c1c\u0c41\u0c32\u0c48", + "\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41", + "\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d", + "\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d", + "\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d", + "\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d" + ], + "SHORTDAY": [ + "\u0c06\u0c26\u0c3f", + "\u0c38\u0c4b\u0c2e", + "\u0c2e\u0c02\u0c17\u0c33", + "\u0c2c\u0c41\u0c27", + "\u0c17\u0c41\u0c30\u0c41", + "\u0c36\u0c41\u0c15\u0c4d\u0c30", + "\u0c36\u0c28\u0c3f" + ], + "SHORTMONTH": [ + "\u0c1c\u0c28", + "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30", + "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f", + "\u0c0f\u0c2a\u0c4d\u0c30\u0c3f", + "\u0c2e\u0c47", + "\u0c1c\u0c42\u0c28\u0c4d", + "\u0c1c\u0c41\u0c32\u0c48", + "\u0c06\u0c17", + "\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02", + "\u0c05\u0c15\u0c4d\u0c1f\u0c4b", + "\u0c28\u0c35\u0c02", + "\u0c21\u0c3f\u0c38\u0c46\u0c02" + ], + "fullDate": "d MMMM y EEEE", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd-MM-yy h:mm a", + "shortDate": "dd-MM-yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "te", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_teo-ke.js b/1.2.30/i18n/angular-locale_teo-ke.js new file mode 100644 index 0000000000..9191574797 --- /dev/null +++ b/1.2.30/i18n/angular-locale_teo-ke.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Taparachu", + "Ebongi" + ], + "DAY": [ + "Nakaejuma", + "Nakaebarasa", + "Nakaare", + "Nakauni", + "Nakaung'on", + "Nakakany", + "Nakasabiti" + ], + "MONTH": [ + "Orara", + "Omuk", + "Okwamg'", + "Odung'el", + "Omaruk", + "Omodok'king'ol", + "Ojola", + "Opedel", + "Osokosokoma", + "Otibar", + "Olabor", + "Opoo" + ], + "SHORTDAY": [ + "Jum", + "Bar", + "Aar", + "Uni", + "Ung", + "Kan", + "Sab" + ], + "SHORTMONTH": [ + "Rar", + "Muk", + "Kwa", + "Dun", + "Mar", + "Mod", + "Jol", + "Ped", + "Sok", + "Tib", + "Lab", + "Poo" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Ksh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "teo-ke", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_teo-ug.js b/1.2.30/i18n/angular-locale_teo-ug.js new file mode 100644 index 0000000000..3ad2c38d7b --- /dev/null +++ b/1.2.30/i18n/angular-locale_teo-ug.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Taparachu", + "Ebongi" + ], + "DAY": [ + "Nakaejuma", + "Nakaebarasa", + "Nakaare", + "Nakauni", + "Nakaung'on", + "Nakakany", + "Nakasabiti" + ], + "MONTH": [ + "Orara", + "Omuk", + "Okwamg'", + "Odung'el", + "Omaruk", + "Omodok'king'ol", + "Ojola", + "Opedel", + "Osokosokoma", + "Otibar", + "Olabor", + "Opoo" + ], + "SHORTDAY": [ + "Jum", + "Bar", + "Aar", + "Uni", + "Ung", + "Kan", + "Sab" + ], + "SHORTMONTH": [ + "Rar", + "Muk", + "Kwa", + "Dun", + "Mar", + "Mod", + "Jol", + "Ped", + "Sok", + "Tib", + "Lab", + "Poo" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "UGX", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "teo-ug", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_teo.js b/1.2.30/i18n/angular-locale_teo.js new file mode 100644 index 0000000000..7c82873cf0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_teo.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Taparachu", + "Ebongi" + ], + "DAY": [ + "Nakaejuma", + "Nakaebarasa", + "Nakaare", + "Nakauni", + "Nakaung'on", + "Nakakany", + "Nakasabiti" + ], + "MONTH": [ + "Orara", + "Omuk", + "Okwamg'", + "Odung'el", + "Omaruk", + "Omodok'king'ol", + "Ojola", + "Opedel", + "Osokosokoma", + "Otibar", + "Olabor", + "Opoo" + ], + "SHORTDAY": [ + "Jum", + "Bar", + "Aar", + "Uni", + "Ung", + "Kan", + "Sab" + ], + "SHORTMONTH": [ + "Rar", + "Muk", + "Kwa", + "Dun", + "Mar", + "Mod", + "Jol", + "Ped", + "Sok", + "Tib", + "Lab", + "Poo" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "UGX", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "teo", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_tg-cyrl-tj.js b/1.2.30/i18n/angular-locale_tg-cyrl-tj.js new file mode 100644 index 0000000000..0f2676f057 --- /dev/null +++ b/1.2.30/i18n/angular-locale_tg-cyrl-tj.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u043f\u0435. \u0447\u043e.", + "\u043f\u0430. \u0447\u043e." + ], + "DAY": [ + "\u042f\u043a\u0448\u0430\u043d\u0431\u0435", + "\u0414\u0443\u0448\u0430\u043d\u0431\u0435", + "\u0421\u0435\u0448\u0430\u043d\u0431\u0435", + "\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0435", + "\u041f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435", + "\u04b6\u0443\u043c\u044a\u0430", + "\u0428\u0430\u043d\u0431\u0435" + ], + "MONTH": [ + "\u042f\u043d\u0432\u0430\u0440", + "\u0424\u0435\u0432\u0440\u0430\u043b", + "\u041c\u0430\u0440\u0442", + "\u0410\u043f\u0440\u0435\u043b", + "\u041c\u0430\u0439", + "\u0418\u044e\u043d", + "\u0418\u044e\u043b", + "\u0410\u0432\u0433\u0443\u0441\u0442", + "\u0421\u0435\u043d\u0442\u044f\u0431\u0440", + "\u041e\u043a\u0442\u044f\u0431\u0440", + "\u041d\u043e\u044f\u0431\u0440", + "\u0414\u0435\u043a\u0430\u0431\u0440" + ], + "SHORTDAY": [ + "\u042f\u0448\u0431", + "\u0414\u0448\u0431", + "\u0421\u0448\u0431", + "\u0427\u0448\u0431", + "\u041f\u0448\u0431", + "\u04b6\u043c\u044a", + "\u0428\u043d\u0431" + ], + "SHORTMONTH": [ + "\u042f\u043d\u0432", + "\u0424\u0435\u0432", + "\u041c\u0430\u0440", + "\u0410\u043f\u0440", + "\u041c\u0430\u0439", + "\u0418\u044e\u043d", + "\u0418\u044e\u043b", + "\u0410\u0432\u0433", + "\u0421\u0435\u043d", + "\u041e\u043a\u0442", + "\u041d\u043e\u044f", + "\u0414\u0435\u043a" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Som", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "tg-cyrl-tj", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_tg-cyrl.js b/1.2.30/i18n/angular-locale_tg-cyrl.js new file mode 100644 index 0000000000..0d8010410d --- /dev/null +++ b/1.2.30/i18n/angular-locale_tg-cyrl.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u043f\u0435. \u0447\u043e.", + "\u043f\u0430. \u0447\u043e." + ], + "DAY": [ + "\u042f\u043a\u0448\u0430\u043d\u0431\u0435", + "\u0414\u0443\u0448\u0430\u043d\u0431\u0435", + "\u0421\u0435\u0448\u0430\u043d\u0431\u0435", + "\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0435", + "\u041f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435", + "\u04b6\u0443\u043c\u044a\u0430", + "\u0428\u0430\u043d\u0431\u0435" + ], + "MONTH": [ + "\u042f\u043d\u0432\u0430\u0440", + "\u0424\u0435\u0432\u0440\u0430\u043b", + "\u041c\u0430\u0440\u0442", + "\u0410\u043f\u0440\u0435\u043b", + "\u041c\u0430\u0439", + "\u0418\u044e\u043d", + "\u0418\u044e\u043b", + "\u0410\u0432\u0433\u0443\u0441\u0442", + "\u0421\u0435\u043d\u0442\u044f\u0431\u0440", + "\u041e\u043a\u0442\u044f\u0431\u0440", + "\u041d\u043e\u044f\u0431\u0440", + "\u0414\u0435\u043a\u0430\u0431\u0440" + ], + "SHORTDAY": [ + "\u042f\u0448\u0431", + "\u0414\u0448\u0431", + "\u0421\u0448\u0431", + "\u0427\u0448\u0431", + "\u041f\u0448\u0431", + "\u04b6\u043c\u044a", + "\u0428\u043d\u0431" + ], + "SHORTMONTH": [ + "\u042f\u043d\u0432", + "\u0424\u0435\u0432", + "\u041c\u0430\u0440", + "\u0410\u043f\u0440", + "\u041c\u0430\u0439", + "\u0418\u044e\u043d", + "\u0418\u044e\u043b", + "\u0410\u0432\u0433", + "\u0421\u0435\u043d", + "\u041e\u043a\u0442", + "\u041d\u043e\u044f", + "\u0414\u0435\u043a" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "tg-cyrl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_tg.js b/1.2.30/i18n/angular-locale_tg.js new file mode 100644 index 0000000000..70259e5480 --- /dev/null +++ b/1.2.30/i18n/angular-locale_tg.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u043f\u0435. \u0447\u043e.", + "\u043f\u0430. \u0447\u043e." + ], + "DAY": [ + "\u042f\u043a\u0448\u0430\u043d\u0431\u0435", + "\u0414\u0443\u0448\u0430\u043d\u0431\u0435", + "\u0421\u0435\u0448\u0430\u043d\u0431\u0435", + "\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0435", + "\u041f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435", + "\u04b6\u0443\u043c\u044a\u0430", + "\u0428\u0430\u043d\u0431\u0435" + ], + "MONTH": [ + "\u042f\u043d\u0432\u0430\u0440", + "\u0424\u0435\u0432\u0440\u0430\u043b", + "\u041c\u0430\u0440\u0442", + "\u0410\u043f\u0440\u0435\u043b", + "\u041c\u0430\u0439", + "\u0418\u044e\u043d", + "\u0418\u044e\u043b", + "\u0410\u0432\u0433\u0443\u0441\u0442", + "\u0421\u0435\u043d\u0442\u044f\u0431\u0440", + "\u041e\u043a\u0442\u044f\u0431\u0440", + "\u041d\u043e\u044f\u0431\u0440", + "\u0414\u0435\u043a\u0430\u0431\u0440" + ], + "SHORTDAY": [ + "\u042f\u0448\u0431", + "\u0414\u0448\u0431", + "\u0421\u0448\u0431", + "\u0427\u0448\u0431", + "\u041f\u0448\u0431", + "\u04b6\u043c\u044a", + "\u0428\u043d\u0431" + ], + "SHORTMONTH": [ + "\u042f\u043d\u0432", + "\u0424\u0435\u0432", + "\u041c\u0430\u0440", + "\u0410\u043f\u0440", + "\u041c\u0430\u0439", + "\u0418\u044e\u043d", + "\u0418\u044e\u043b", + "\u0410\u0432\u0433", + "\u0421\u0435\u043d", + "\u041e\u043a\u0442", + "\u041d\u043e\u044f", + "\u0414\u0435\u043a" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Som", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "tg", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_th-th.js b/1.2.30/i18n/angular-locale_th-th.js new file mode 100644 index 0000000000..424fd0bef9 --- /dev/null +++ b/1.2.30/i18n/angular-locale_th-th.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07", + "\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07" + ], + "DAY": [ + "\u0e27\u0e31\u0e19\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c", + "\u0e27\u0e31\u0e19\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c", + "\u0e27\u0e31\u0e19\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23", + "\u0e27\u0e31\u0e19\u0e1e\u0e38\u0e18", + "\u0e27\u0e31\u0e19\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35", + "\u0e27\u0e31\u0e19\u0e28\u0e38\u0e01\u0e23\u0e4c", + "\u0e27\u0e31\u0e19\u0e40\u0e2a\u0e32\u0e23\u0e4c" + ], + "MONTH": [ + "\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21", + "\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c", + "\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21", + "\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19", + "\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21", + "\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19", + "\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21", + "\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21", + "\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19", + "\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21", + "\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19", + "\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21" + ], + "SHORTDAY": [ + "\u0e2d\u0e32.", + "\u0e08.", + "\u0e2d.", + "\u0e1e.", + "\u0e1e\u0e24.", + "\u0e28.", + "\u0e2a." + ], + "SHORTMONTH": [ + "\u0e21.\u0e04.", + "\u0e01.\u0e1e.", + "\u0e21\u0e35.\u0e04.", + "\u0e40\u0e21.\u0e22.", + "\u0e1e.\u0e04.", + "\u0e21\u0e34.\u0e22.", + "\u0e01.\u0e04.", + "\u0e2a.\u0e04.", + "\u0e01.\u0e22.", + "\u0e15.\u0e04.", + "\u0e1e.\u0e22.", + "\u0e18.\u0e04." + ], + "fullDate": "EEEE\u0e17\u0e35\u0e48 d MMMM G y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/yy HH:mm", + "shortDate": "d/M/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u0e3f", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "th-th", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_th.js b/1.2.30/i18n/angular-locale_th.js new file mode 100644 index 0000000000..a9e102e059 --- /dev/null +++ b/1.2.30/i18n/angular-locale_th.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07", + "\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07" + ], + "DAY": [ + "\u0e27\u0e31\u0e19\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c", + "\u0e27\u0e31\u0e19\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c", + "\u0e27\u0e31\u0e19\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23", + "\u0e27\u0e31\u0e19\u0e1e\u0e38\u0e18", + "\u0e27\u0e31\u0e19\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35", + "\u0e27\u0e31\u0e19\u0e28\u0e38\u0e01\u0e23\u0e4c", + "\u0e27\u0e31\u0e19\u0e40\u0e2a\u0e32\u0e23\u0e4c" + ], + "MONTH": [ + "\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21", + "\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c", + "\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21", + "\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19", + "\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21", + "\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19", + "\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21", + "\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21", + "\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19", + "\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21", + "\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19", + "\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21" + ], + "SHORTDAY": [ + "\u0e2d\u0e32.", + "\u0e08.", + "\u0e2d.", + "\u0e1e.", + "\u0e1e\u0e24.", + "\u0e28.", + "\u0e2a." + ], + "SHORTMONTH": [ + "\u0e21.\u0e04.", + "\u0e01.\u0e1e.", + "\u0e21\u0e35.\u0e04.", + "\u0e40\u0e21.\u0e22.", + "\u0e1e.\u0e04.", + "\u0e21\u0e34.\u0e22.", + "\u0e01.\u0e04.", + "\u0e2a.\u0e04.", + "\u0e01.\u0e22.", + "\u0e15.\u0e04.", + "\u0e1e.\u0e22.", + "\u0e18.\u0e04." + ], + "fullDate": "EEEE\u0e17\u0e35\u0e48 d MMMM G y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/yy HH:mm", + "shortDate": "d/M/yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u0e3f", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "th", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ti-er.js b/1.2.30/i18n/angular-locale_ti-er.js new file mode 100644 index 0000000000..a2751dce6c --- /dev/null +++ b/1.2.30/i18n/angular-locale_ti-er.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u1295\u1309\u1206 \u1230\u12d3\u1270", + "\u12f5\u1215\u122d \u1230\u12d3\u1275" + ], + "DAY": [ + "\u1230\u1295\u1260\u1275", + "\u1230\u1291\u12ed", + "\u1230\u1209\u1235", + "\u1228\u1261\u12d5", + "\u1213\u1219\u1235", + "\u12d3\u122d\u1262", + "\u1240\u12f3\u121d" + ], + "MONTH": [ + "\u1325\u122a", + "\u1208\u12ab\u1272\u1275", + "\u1218\u130b\u1262\u1275", + "\u121a\u12eb\u12dd\u12eb", + "\u130d\u1295\u1266\u1275", + "\u1230\u1290", + "\u1213\u121d\u1208", + "\u1290\u1213\u1230", + "\u1218\u1235\u12a8\u1228\u121d", + "\u1325\u1245\u121d\u1272", + "\u1215\u12f3\u122d", + "\u1273\u1215\u1233\u1235" + ], + "SHORTDAY": [ + "\u1230\u1295\u1260\u1275", + "\u1230\u1291\u12ed", + "\u1230\u1209\u1235", + "\u1228\u1261\u12d5", + "\u1213\u1219\u1235", + "\u12d3\u122d\u1262", + "\u1240\u12f3\u121d" + ], + "SHORTMONTH": [ + "\u1325\u122a", + "\u1208\u12ab\u1272", + "\u1218\u130b\u1262", + "\u121a\u12eb\u12dd", + "\u130d\u1295\u1266", + "\u1230\u1290", + "\u1213\u121d\u1208", + "\u1290\u1213\u1230", + "\u1218\u1235\u12a8", + "\u1325\u1245\u121d", + "\u1215\u12f3\u122d", + "\u1273\u1215\u1233" + ], + "fullDate": "EEEE\u1361 dd MMMM \u1218\u12d3\u120d\u1272 y G", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Nfk", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ti-er", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ti-et.js b/1.2.30/i18n/angular-locale_ti-et.js new file mode 100644 index 0000000000..4ec674377c --- /dev/null +++ b/1.2.30/i18n/angular-locale_ti-et.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u1295\u1309\u1206 \u1230\u12d3\u1270", + "\u12f5\u1215\u122d \u1230\u12d3\u1275" + ], + "DAY": [ + "\u1230\u1295\u1260\u1275", + "\u1230\u1291\u12ed", + "\u1220\u1209\u1235", + "\u1228\u1261\u12d5", + "\u1283\u1219\u1235", + "\u12d3\u122d\u1262", + "\u1240\u12f3\u121d" + ], + "MONTH": [ + "\u1303\u1295\u12e9\u12c8\u122a", + "\u134c\u1265\u1229\u12c8\u122a", + "\u121b\u122d\u127d", + "\u12a4\u1355\u1228\u120d", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235\u1275", + "\u1234\u1355\u1274\u121d\u1260\u122d", + "\u12a6\u12ad\u1270\u12cd\u1260\u122d", + "\u1296\u126c\u121d\u1260\u122d", + "\u12f2\u1234\u121d\u1260\u122d" + ], + "SHORTDAY": [ + "\u1230\u1295\u1260\u1275", + "\u1230\u1291\u12ed", + "\u1220\u1209\u1235", + "\u1228\u1261\u12d5", + "\u1283\u1219\u1235", + "\u12d3\u122d\u1262", + "\u1240\u12f3\u121d" + ], + "SHORTMONTH": [ + "\u1303\u1295\u12e9", + "\u134c\u1265\u1229", + "\u121b\u122d\u127d", + "\u12a4\u1355\u1228", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235", + "\u1234\u1355\u1274", + "\u12a6\u12ad\u1270", + "\u1296\u126c\u121d", + "\u12f2\u1234\u121d" + ], + "fullDate": "EEEE\u1363 dd MMMM \u1218\u12d3\u120d\u1272 y G", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Birr", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ti-et", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ti.js b/1.2.30/i18n/angular-locale_ti.js new file mode 100644 index 0000000000..e55db34cca --- /dev/null +++ b/1.2.30/i18n/angular-locale_ti.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u1295\u1309\u1206 \u1230\u12d3\u1270", + "\u12f5\u1215\u122d \u1230\u12d3\u1275" + ], + "DAY": [ + "\u1230\u1295\u1260\u1275", + "\u1230\u1291\u12ed", + "\u1220\u1209\u1235", + "\u1228\u1261\u12d5", + "\u1283\u1219\u1235", + "\u12d3\u122d\u1262", + "\u1240\u12f3\u121d" + ], + "MONTH": [ + "\u1303\u1295\u12e9\u12c8\u122a", + "\u134c\u1265\u1229\u12c8\u122a", + "\u121b\u122d\u127d", + "\u12a4\u1355\u1228\u120d", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235\u1275", + "\u1234\u1355\u1274\u121d\u1260\u122d", + "\u12a6\u12ad\u1270\u12cd\u1260\u122d", + "\u1296\u126c\u121d\u1260\u122d", + "\u12f2\u1234\u121d\u1260\u122d" + ], + "SHORTDAY": [ + "\u1230\u1295\u1260\u1275", + "\u1230\u1291\u12ed", + "\u1220\u1209\u1235", + "\u1228\u1261\u12d5", + "\u1283\u1219\u1235", + "\u12d3\u122d\u1262", + "\u1240\u12f3\u121d" + ], + "SHORTMONTH": [ + "\u1303\u1295\u12e9", + "\u134c\u1265\u1229", + "\u121b\u122d\u127d", + "\u12a4\u1355\u1228", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235", + "\u1234\u1355\u1274", + "\u12a6\u12ad\u1270", + "\u1296\u126c\u121d", + "\u12f2\u1234\u121d" + ], + "fullDate": "EEEE\u1363 dd MMMM \u1218\u12d3\u120d\u1272 y G", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Birr", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ti", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_tig-er.js b/1.2.30/i18n/angular-locale_tig-er.js new file mode 100644 index 0000000000..7f68986aa7 --- /dev/null +++ b/1.2.30/i18n/angular-locale_tig-er.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u1240\u12f0\u121d \u1230\u122d\u121d\u12d5\u120d", + "\u1213\u1246 \u1235\u122d\u121d\u12d5\u120d" + ], + "DAY": [ + "\u1230\u1295\u1260\u1275 \u12d3\u1263\u12ed", + "\u1230\u1296", + "\u1273\u120b\u1238\u1296", + "\u12a3\u1228\u122d\u1263\u12d3", + "\u12a8\u121a\u123d", + "\u1305\u121d\u12d3\u1275", + "\u1230\u1295\u1260\u1275 \u1295\u12a2\u123d" + ], + "MONTH": [ + "\u1303\u1295\u12e9\u12c8\u122a", + "\u134c\u1265\u1229\u12c8\u122a", + "\u121b\u122d\u127d", + "\u12a4\u1355\u1228\u120d", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235\u1275", + "\u1234\u1355\u1274\u121d\u1260\u122d", + "\u12a6\u12ad\u1270\u12cd\u1260\u122d", + "\u1296\u126c\u121d\u1260\u122d", + "\u12f2\u1234\u121d\u1260\u122d" + ], + "SHORTDAY": [ + "\u1230/\u12d3", + "\u1230\u1296", + "\u1273\u120b\u1238", + "\u12a3\u1228\u122d", + "\u12a8\u121a\u123d", + "\u1305\u121d\u12d3", + "\u1230/\u1295" + ], + "SHORTMONTH": [ + "\u1303\u1295\u12e9", + "\u134c\u1265\u1229", + "\u121b\u122d\u127d", + "\u12a4\u1355\u1228", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235", + "\u1234\u1355\u1274", + "\u12a6\u12ad\u1270", + "\u1296\u126c\u121d", + "\u12f2\u1234\u121d" + ], + "fullDate": "EEEE\u1361 dd MMMM \u12ee\u121d y G", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Nfk", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "tig-er", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_tig.js b/1.2.30/i18n/angular-locale_tig.js new file mode 100644 index 0000000000..343cc9b66f --- /dev/null +++ b/1.2.30/i18n/angular-locale_tig.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u1240\u12f0\u121d \u1230\u122d\u121d\u12d5\u120d", + "\u1213\u1246 \u1235\u122d\u121d\u12d5\u120d" + ], + "DAY": [ + "\u1230\u1295\u1260\u1275 \u12d3\u1263\u12ed", + "\u1230\u1296", + "\u1273\u120b\u1238\u1296", + "\u12a3\u1228\u122d\u1263\u12d3", + "\u12a8\u121a\u123d", + "\u1305\u121d\u12d3\u1275", + "\u1230\u1295\u1260\u1275 \u1295\u12a2\u123d" + ], + "MONTH": [ + "\u1303\u1295\u12e9\u12c8\u122a", + "\u134c\u1265\u1229\u12c8\u122a", + "\u121b\u122d\u127d", + "\u12a4\u1355\u1228\u120d", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235\u1275", + "\u1234\u1355\u1274\u121d\u1260\u122d", + "\u12a6\u12ad\u1270\u12cd\u1260\u122d", + "\u1296\u126c\u121d\u1260\u122d", + "\u12f2\u1234\u121d\u1260\u122d" + ], + "SHORTDAY": [ + "\u1230/\u12d3", + "\u1230\u1296", + "\u1273\u120b\u1238", + "\u12a3\u1228\u122d", + "\u12a8\u121a\u123d", + "\u1305\u121d\u12d3", + "\u1230/\u1295" + ], + "SHORTMONTH": [ + "\u1303\u1295\u12e9", + "\u134c\u1265\u1229", + "\u121b\u122d\u127d", + "\u12a4\u1355\u1228", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235", + "\u1234\u1355\u1274", + "\u12a6\u12ad\u1270", + "\u1296\u126c\u121d", + "\u12f2\u1234\u121d" + ], + "fullDate": "EEEE\u1361 dd MMMM \u12ee\u121d y G", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Nfk", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "tig", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_tl.js b/1.2.30/i18n/angular-locale_tl.js new file mode 100644 index 0000000000..e897a3e11f --- /dev/null +++ b/1.2.30/i18n/angular-locale_tl.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Linggo", + "Lunes", + "Martes", + "Miyerkules", + "Huwebes", + "Biyernes", + "Sabado" + ], + "MONTH": [ + "Enero", + "Pebrero", + "Marso", + "Abril", + "Mayo", + "Hunyo", + "Hulyo", + "Agosto", + "Setyembre", + "Oktubre", + "Nobyembre", + "Disyembre" + ], + "SHORTDAY": [ + "Lin", + "Lun", + "Mar", + "Miy", + "Huw", + "Biy", + "Sab" + ], + "SHORTMONTH": [ + "Ene", + "Peb", + "Mar", + "Abr", + "May", + "Hun", + "Hul", + "Ago", + "Set", + "Okt", + "Nob", + "Dis" + ], + "fullDate": "EEEE, MMMM d, y", + "longDate": "MMMM d, y", + "medium": "MMM d, y h:mm:ss a", + "mediumDate": "MMM d, y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b1", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "tl", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && (i == 1 || i == 2 || i == 3) || vf.v == 0 && i % 10 != 4 && i % 10 != 6 && i % 10 != 9 || vf.v != 0 && vf.f % 10 != 4 && vf.f % 10 != 6 && vf.f % 10 != 9) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_tn-bw.js b/1.2.30/i18n/angular-locale_tn-bw.js new file mode 100644 index 0000000000..098c9c8fc7 --- /dev/null +++ b/1.2.30/i18n/angular-locale_tn-bw.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Tshipi", + "Mosopulogo", + "Labobedi", + "Laboraro", + "Labone", + "Labotlhano", + "Matlhatso" + ], + "MONTH": [ + "Ferikgong", + "Tlhakole", + "Mopitlo", + "Moranang", + "Motsheganang", + "Seetebosigo", + "Phukwi", + "Phatwe", + "Lwetse", + "Diphalane", + "Ngwanatsele", + "Sedimonthole" + ], + "SHORTDAY": [ + "Tsh", + "Mos", + "Bed", + "Rar", + "Ne", + "Tla", + "Mat" + ], + "SHORTMONTH": [ + "Fer", + "Tlh", + "Mop", + "Mor", + "Mot", + "See", + "Phu", + "Pha", + "Lwe", + "Dip", + "Ngw", + "Sed" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "P", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "tn-bw", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_tn-za.js b/1.2.30/i18n/angular-locale_tn-za.js new file mode 100644 index 0000000000..075135de6b --- /dev/null +++ b/1.2.30/i18n/angular-locale_tn-za.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Tshipi", + "Mosopulogo", + "Labobedi", + "Laboraro", + "Labone", + "Labotlhano", + "Matlhatso" + ], + "MONTH": [ + "Ferikgong", + "Tlhakole", + "Mopitlo", + "Moranang", + "Motsheganang", + "Seetebosigo", + "Phukwi", + "Phatwe", + "Lwetse", + "Diphalane", + "Ngwanatsele", + "Sedimonthole" + ], + "SHORTDAY": [ + "Tsh", + "Mos", + "Bed", + "Rar", + "Ne", + "Tla", + "Mat" + ], + "SHORTMONTH": [ + "Fer", + "Tlh", + "Mop", + "Mor", + "Mot", + "See", + "Phu", + "Pha", + "Lwe", + "Dip", + "Ngw", + "Sed" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "tn-za", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_tn.js b/1.2.30/i18n/angular-locale_tn.js new file mode 100644 index 0000000000..4f0ea5ca02 --- /dev/null +++ b/1.2.30/i18n/angular-locale_tn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Tshipi", + "Mosopulogo", + "Labobedi", + "Laboraro", + "Labone", + "Labotlhano", + "Matlhatso" + ], + "MONTH": [ + "Ferikgong", + "Tlhakole", + "Mopitlo", + "Moranang", + "Motsheganang", + "Seetebosigo", + "Phukwi", + "Phatwe", + "Lwetse", + "Diphalane", + "Ngwanatsele", + "Sedimonthole" + ], + "SHORTDAY": [ + "Tsh", + "Mos", + "Bed", + "Rar", + "Ne", + "Tla", + "Mat" + ], + "SHORTMONTH": [ + "Fer", + "Tlh", + "Mop", + "Mor", + "Mot", + "See", + "Phu", + "Pha", + "Lwe", + "Dip", + "Ngw", + "Sed" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "tn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_to-to.js b/1.2.30/i18n/angular-locale_to-to.js new file mode 100644 index 0000000000..3d1638fffc --- /dev/null +++ b/1.2.30/i18n/angular-locale_to-to.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "S\u0101pate", + "M\u014dnite", + "T\u016bsite", + "Pulelulu", + "Tu\u02bbapulelulu", + "Falaite", + "Tokonaki" + ], + "MONTH": [ + "S\u0101nuali", + "F\u0113pueli", + "Ma\u02bbasi", + "\u02bbEpeleli", + "M\u0113", + "Sune", + "Siulai", + "\u02bbAokosi", + "Sepitema", + "\u02bbOkatopa", + "N\u014dvema", + "T\u012bsema" + ], + "SHORTDAY": [ + "S\u0101p", + "M\u014dn", + "T\u016bs", + "Pul", + "Tu\u02bba", + "Fal", + "Tok" + ], + "SHORTMONTH": [ + "S\u0101n", + "F\u0113p", + "Ma\u02bba", + "\u02bbEpe", + "M\u0113", + "Sun", + "Siu", + "\u02bbAok", + "Sep", + "\u02bbOka", + "N\u014dv", + "T\u012bs" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "T$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "to-to", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_to.js b/1.2.30/i18n/angular-locale_to.js new file mode 100644 index 0000000000..93a6ab93fd --- /dev/null +++ b/1.2.30/i18n/angular-locale_to.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "S\u0101pate", + "M\u014dnite", + "T\u016bsite", + "Pulelulu", + "Tu\u02bbapulelulu", + "Falaite", + "Tokonaki" + ], + "MONTH": [ + "S\u0101nuali", + "F\u0113pueli", + "Ma\u02bbasi", + "\u02bbEpeleli", + "M\u0113", + "Sune", + "Siulai", + "\u02bbAokosi", + "Sepitema", + "\u02bbOkatopa", + "N\u014dvema", + "T\u012bsema" + ], + "SHORTDAY": [ + "S\u0101p", + "M\u014dn", + "T\u016bs", + "Pul", + "Tu\u02bba", + "Fal", + "Tok" + ], + "SHORTMONTH": [ + "S\u0101n", + "F\u0113p", + "Ma\u02bba", + "\u02bbEpe", + "M\u0113", + "Sun", + "Siu", + "\u02bbAok", + "Sep", + "\u02bbOka", + "N\u014dv", + "T\u012bs" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "T$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "to", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_tr-cy.js b/1.2.30/i18n/angular-locale_tr-cy.js new file mode 100644 index 0000000000..1953820673 --- /dev/null +++ b/1.2.30/i18n/angular-locale_tr-cy.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u00d6\u00d6", + "\u00d6S" + ], + "DAY": [ + "Pazar", + "Pazartesi", + "Sal\u0131", + "\u00c7ar\u015famba", + "Per\u015fembe", + "Cuma", + "Cumartesi" + ], + "MONTH": [ + "Ocak", + "\u015eubat", + "Mart", + "Nisan", + "May\u0131s", + "Haziran", + "Temmuz", + "A\u011fustos", + "Eyl\u00fcl", + "Ekim", + "Kas\u0131m", + "Aral\u0131k" + ], + "SHORTDAY": [ + "Paz", + "Pzt", + "Sal", + "\u00c7ar", + "Per", + "Cum", + "Cmt" + ], + "SHORTMONTH": [ + "Oca", + "\u015eub", + "Mar", + "Nis", + "May", + "Haz", + "Tem", + "A\u011fu", + "Eyl", + "Eki", + "Kas", + "Ara" + ], + "fullDate": "d MMMM y EEEE", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d MM y HH:mm", + "shortDate": "d MM y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "tr-cy", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_tr-tr.js b/1.2.30/i18n/angular-locale_tr-tr.js new file mode 100644 index 0000000000..6b3e8fb803 --- /dev/null +++ b/1.2.30/i18n/angular-locale_tr-tr.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u00d6\u00d6", + "\u00d6S" + ], + "DAY": [ + "Pazar", + "Pazartesi", + "Sal\u0131", + "\u00c7ar\u015famba", + "Per\u015fembe", + "Cuma", + "Cumartesi" + ], + "MONTH": [ + "Ocak", + "\u015eubat", + "Mart", + "Nisan", + "May\u0131s", + "Haziran", + "Temmuz", + "A\u011fustos", + "Eyl\u00fcl", + "Ekim", + "Kas\u0131m", + "Aral\u0131k" + ], + "SHORTDAY": [ + "Paz", + "Pzt", + "Sal", + "\u00c7ar", + "Per", + "Cum", + "Cmt" + ], + "SHORTMONTH": [ + "Oca", + "\u015eub", + "Mar", + "Nis", + "May", + "Haz", + "Tem", + "A\u011fu", + "Eyl", + "Eki", + "Kas", + "Ara" + ], + "fullDate": "d MMMM y EEEE", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d MM y HH:mm", + "shortDate": "d MM y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TL", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "tr-tr", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_tr.js b/1.2.30/i18n/angular-locale_tr.js new file mode 100644 index 0000000000..a2907c075a --- /dev/null +++ b/1.2.30/i18n/angular-locale_tr.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u00d6\u00d6", + "\u00d6S" + ], + "DAY": [ + "Pazar", + "Pazartesi", + "Sal\u0131", + "\u00c7ar\u015famba", + "Per\u015fembe", + "Cuma", + "Cumartesi" + ], + "MONTH": [ + "Ocak", + "\u015eubat", + "Mart", + "Nisan", + "May\u0131s", + "Haziran", + "Temmuz", + "A\u011fustos", + "Eyl\u00fcl", + "Ekim", + "Kas\u0131m", + "Aral\u0131k" + ], + "SHORTDAY": [ + "Paz", + "Pzt", + "Sal", + "\u00c7ar", + "Per", + "Cum", + "Cmt" + ], + "SHORTMONTH": [ + "Oca", + "\u015eub", + "Mar", + "Nis", + "May", + "Haz", + "Tem", + "A\u011fu", + "Eyl", + "Eki", + "Kas", + "Ara" + ], + "fullDate": "d MMMM y EEEE", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d MM y HH:mm", + "shortDate": "d MM y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TL", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "tr", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ts-za.js b/1.2.30/i18n/angular-locale_ts-za.js new file mode 100644 index 0000000000..92663c66b5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ts-za.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sonto", + "Musumbhunuku", + "Ravumbirhi", + "Ravunharhu", + "Ravumune", + "Ravuntlhanu", + "Mugqivela" + ], + "MONTH": [ + "Sunguti", + "Nyenyenyani", + "Nyenyankulu", + "Dzivamisoko", + "Mudyaxihi", + "Khotavuxika", + "Mawuwani", + "Mhawuri", + "Ndzhati", + "Nhlangula", + "Hukuri", + "N'wendzamhala" + ], + "SHORTDAY": [ + "Son", + "Mus", + "Bir", + "Har", + "Ne", + "Tlh", + "Mug" + ], + "SHORTMONTH": [ + "Sun", + "Yan", + "Kul", + "Dzi", + "Mud", + "Kho", + "Maw", + "Mha", + "Ndz", + "Nhl", + "Huk", + "N'w" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ts-za", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ts.js b/1.2.30/i18n/angular-locale_ts.js new file mode 100644 index 0000000000..b84b975217 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ts.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sonto", + "Musumbhunuku", + "Ravumbirhi", + "Ravunharhu", + "Ravumune", + "Ravuntlhanu", + "Mugqivela" + ], + "MONTH": [ + "Sunguti", + "Nyenyenyani", + "Nyenyankulu", + "Dzivamisoko", + "Mudyaxihi", + "Khotavuxika", + "Mawuwani", + "Mhawuri", + "Ndzhati", + "Nhlangula", + "Hukuri", + "N'wendzamhala" + ], + "SHORTDAY": [ + "Son", + "Mus", + "Bir", + "Har", + "Ne", + "Tlh", + "Mug" + ], + "SHORTMONTH": [ + "Sun", + "Yan", + "Kul", + "Dzi", + "Mud", + "Kho", + "Maw", + "Mha", + "Ndz", + "Nhl", + "Huk", + "N'w" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ts", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_twq-ne.js b/1.2.30/i18n/angular-locale_twq-ne.js new file mode 100644 index 0000000000..72f6d3b27c --- /dev/null +++ b/1.2.30/i18n/angular-locale_twq-ne.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Subbaahi", + "Zaarikay b" + ], + "DAY": [ + "Alhadi", + "Atinni", + "Atalaata", + "Alarba", + "Alhamiisa", + "Alzuma", + "Asibti" + ], + "MONTH": [ + "\u017danwiye", + "Feewiriye", + "Marsi", + "Awiril", + "Me", + "\u017duwe\u014b", + "\u017duyye", + "Ut", + "Sektanbur", + "Oktoobur", + "Noowanbur", + "Deesanbur" + ], + "SHORTDAY": [ + "Alh", + "Ati", + "Ata", + "Ala", + "Alm", + "Alz", + "Asi" + ], + "SHORTMONTH": [ + "\u017dan", + "Fee", + "Mar", + "Awi", + "Me", + "\u017duw", + "\u017duy", + "Ut", + "Sek", + "Okt", + "Noo", + "Dee" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "twq-ne", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_twq.js b/1.2.30/i18n/angular-locale_twq.js new file mode 100644 index 0000000000..4b491f24e1 --- /dev/null +++ b/1.2.30/i18n/angular-locale_twq.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Subbaahi", + "Zaarikay b" + ], + "DAY": [ + "Alhadi", + "Atinni", + "Atalaata", + "Alarba", + "Alhamiisa", + "Alzuma", + "Asibti" + ], + "MONTH": [ + "\u017danwiye", + "Feewiriye", + "Marsi", + "Awiril", + "Me", + "\u017duwe\u014b", + "\u017duyye", + "Ut", + "Sektanbur", + "Oktoobur", + "Noowanbur", + "Deesanbur" + ], + "SHORTDAY": [ + "Alh", + "Ati", + "Ata", + "Ala", + "Alm", + "Alz", + "Asi" + ], + "SHORTMONTH": [ + "\u017dan", + "Fee", + "Mar", + "Awi", + "Me", + "\u017duw", + "\u017duy", + "Ut", + "Sek", + "Okt", + "Noo", + "Dee" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "twq", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_tzm-latn-ma.js b/1.2.30/i18n/angular-locale_tzm-latn-ma.js new file mode 100644 index 0000000000..403614450a --- /dev/null +++ b/1.2.30/i18n/angular-locale_tzm-latn-ma.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Zdat azal", + "\u1e0ceffir aza" + ], + "DAY": [ + "Asamas", + "Aynas", + "Asinas", + "Akras", + "Akwas", + "Asimwas", + "Asi\u1e0dyas" + ], + "MONTH": [ + "Yennayer", + "Yebrayer", + "Mars", + "Ibrir", + "Mayyu", + "Yunyu", + "Yulyuz", + "\u0194uct", + "Cutanbir", + "K\u1e6duber", + "Nwanbir", + "Dujanbir" + ], + "SHORTDAY": [ + "Asa", + "Ayn", + "Asn", + "Akr", + "Akw", + "Asm", + "As\u1e0d" + ], + "SHORTMONTH": [ + "Yen", + "Yeb", + "Mar", + "Ibr", + "May", + "Yun", + "Yul", + "\u0194uc", + "Cut", + "K\u1e6du", + "Nwa", + "Duj" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "dh", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "tzm-latn-ma", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_tzm-latn.js b/1.2.30/i18n/angular-locale_tzm-latn.js new file mode 100644 index 0000000000..891b5100e4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_tzm-latn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Zdat azal", + "\u1e0ceffir aza" + ], + "DAY": [ + "Asamas", + "Aynas", + "Asinas", + "Akras", + "Akwas", + "Asimwas", + "Asi\u1e0dyas" + ], + "MONTH": [ + "Yennayer", + "Yebrayer", + "Mars", + "Ibrir", + "Mayyu", + "Yunyu", + "Yulyuz", + "\u0194uct", + "Cutanbir", + "K\u1e6duber", + "Nwanbir", + "Dujanbir" + ], + "SHORTDAY": [ + "Asa", + "Ayn", + "Asn", + "Akr", + "Akw", + "Asm", + "As\u1e0d" + ], + "SHORTMONTH": [ + "Yen", + "Yeb", + "Mar", + "Ibr", + "May", + "Yun", + "Yul", + "\u0194uc", + "Cut", + "K\u1e6du", + "Nwa", + "Duj" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "tzm-latn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_tzm.js b/1.2.30/i18n/angular-locale_tzm.js new file mode 100644 index 0000000000..100fd9e9f0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_tzm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Zdat azal", + "\u1e0ceffir aza" + ], + "DAY": [ + "Asamas", + "Aynas", + "Asinas", + "Akras", + "Akwas", + "Asimwas", + "Asi\u1e0dyas" + ], + "MONTH": [ + "Yennayer", + "Yebrayer", + "Mars", + "Ibrir", + "Mayyu", + "Yunyu", + "Yulyuz", + "\u0194uct", + "Cutanbir", + "K\u1e6duber", + "Nwanbir", + "Dujanbir" + ], + "SHORTDAY": [ + "Asa", + "Ayn", + "Asn", + "Akr", + "Akw", + "Asm", + "As\u1e0d" + ], + "SHORTMONTH": [ + "Yen", + "Yeb", + "Mar", + "Ibr", + "May", + "Yun", + "Yul", + "\u0194uc", + "Cut", + "K\u1e6du", + "Nwa", + "Duj" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "dh", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "tzm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ug-arab-cn.js b/1.2.30/i18n/angular-locale_ug-arab-cn.js new file mode 100644 index 0000000000..6f56acc354 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ug-arab-cn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646", + "\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646" + ], + "DAY": [ + "\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5", + "\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5", + "\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5", + "\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5", + "\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5", + "\u062c\u06c8\u0645\u06d5", + "\u0634\u06d5\u0646\u0628\u06d5" + ], + "MONTH": [ + "\u064a\u0627\u0646\u06cb\u0627\u0631", + "\u0641\u06d0\u06cb\u0631\u0627\u0644", + "\u0645\u0627\u0631\u062a", + "\u0626\u0627\u067e\u0631\u06d0\u0644", + "\u0645\u0627\u064a", + "\u0626\u0649\u064a\u06c7\u0646", + "\u0626\u0649\u064a\u06c7\u0644", + "\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a", + "\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631", + "\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631", + "\u0628\u0648\u064a\u0627\u0628\u0649\u0631", + "\u062f\u06d0\u0643\u0627\u0628\u0649\u0631" + ], + "SHORTDAY": [ + "\u064a\u06d5", + "\u062f\u06c8", + "\u0633\u06d5", + "\u0686\u0627", + "\u067e\u06d5", + "\u0686\u06c8", + "\u0634\u06d5" + ], + "SHORTMONTH": [ + "\u064a\u0627\u0646\u06cb\u0627\u0631", + "\u0641\u06d0\u06cb\u0631\u0627\u0644", + "\u0645\u0627\u0631\u062a", + "\u0626\u0627\u067e\u0631\u06d0\u0644", + "\u0645\u0627\u064a", + "\u0626\u0649\u064a\u06c7\u0646", + "\u0626\u0649\u064a\u06c7\u0644", + "\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a", + "\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631", + "\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631", + "\u0646\u0648\u064a\u0627\u0628\u0649\u0631", + "\u062f\u06d0\u0643\u0627\u0628\u0649\u0631" + ], + "fullDate": "EEEE\u060c MMMM d\u060c y", + "longDate": "MMMM d\u060c y", + "medium": "MMM d\u060c y h:mm:ss a", + "mediumDate": "MMM d\u060c y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a5", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ug-arab-cn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ug-arab.js b/1.2.30/i18n/angular-locale_ug-arab.js new file mode 100644 index 0000000000..d59517277f --- /dev/null +++ b/1.2.30/i18n/angular-locale_ug-arab.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646", + "\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646" + ], + "DAY": [ + "\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5", + "\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5", + "\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5", + "\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5", + "\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5", + "\u062c\u06c8\u0645\u06d5", + "\u0634\u06d5\u0646\u0628\u06d5" + ], + "MONTH": [ + "\u064a\u0627\u0646\u06cb\u0627\u0631", + "\u0641\u06d0\u06cb\u0631\u0627\u0644", + "\u0645\u0627\u0631\u062a", + "\u0626\u0627\u067e\u0631\u06d0\u0644", + "\u0645\u0627\u064a", + "\u0626\u0649\u064a\u06c7\u0646", + "\u0626\u0649\u064a\u06c7\u0644", + "\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a", + "\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631", + "\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631", + "\u0628\u0648\u064a\u0627\u0628\u0649\u0631", + "\u062f\u06d0\u0643\u0627\u0628\u0649\u0631" + ], + "SHORTDAY": [ + "\u064a\u06d5", + "\u062f\u06c8", + "\u0633\u06d5", + "\u0686\u0627", + "\u067e\u06d5", + "\u0686\u06c8", + "\u0634\u06d5" + ], + "SHORTMONTH": [ + "\u064a\u0627\u0646\u06cb\u0627\u0631", + "\u0641\u06d0\u06cb\u0631\u0627\u0644", + "\u0645\u0627\u0631\u062a", + "\u0626\u0627\u067e\u0631\u06d0\u0644", + "\u0645\u0627\u064a", + "\u0626\u0649\u064a\u06c7\u0646", + "\u0626\u0649\u064a\u06c7\u0644", + "\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a", + "\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631", + "\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631", + "\u0646\u0648\u064a\u0627\u0628\u0649\u0631", + "\u062f\u06d0\u0643\u0627\u0628\u0649\u0631" + ], + "fullDate": "EEEE\u060c MMMM d\u060c y", + "longDate": "MMMM d\u060c y", + "medium": "MMM d\u060c y h:mm:ss a", + "mediumDate": "MMM d\u060c y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ug-arab", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ug.js b/1.2.30/i18n/angular-locale_ug.js new file mode 100644 index 0000000000..270a7fd5f0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ug.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646", + "\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646" + ], + "DAY": [ + "\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5", + "\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5", + "\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5", + "\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5", + "\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5", + "\u062c\u06c8\u0645\u06d5", + "\u0634\u06d5\u0646\u0628\u06d5" + ], + "MONTH": [ + "\u064a\u0627\u0646\u06cb\u0627\u0631", + "\u0641\u06d0\u06cb\u0631\u0627\u0644", + "\u0645\u0627\u0631\u062a", + "\u0626\u0627\u067e\u0631\u06d0\u0644", + "\u0645\u0627\u064a", + "\u0626\u0649\u064a\u06c7\u0646", + "\u0626\u0649\u064a\u06c7\u0644", + "\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a", + "\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631", + "\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631", + "\u0628\u0648\u064a\u0627\u0628\u0649\u0631", + "\u062f\u06d0\u0643\u0627\u0628\u0649\u0631" + ], + "SHORTDAY": [ + "\u064a\u06d5", + "\u062f\u06c8", + "\u0633\u06d5", + "\u0686\u0627", + "\u067e\u06d5", + "\u0686\u06c8", + "\u0634\u06d5" + ], + "SHORTMONTH": [ + "\u064a\u0627\u0646\u06cb\u0627\u0631", + "\u0641\u06d0\u06cb\u0631\u0627\u0644", + "\u0645\u0627\u0631\u062a", + "\u0626\u0627\u067e\u0631\u06d0\u0644", + "\u0645\u0627\u064a", + "\u0626\u0649\u064a\u06c7\u0646", + "\u0626\u0649\u064a\u06c7\u0644", + "\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a", + "\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631", + "\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631", + "\u0646\u0648\u064a\u0627\u0628\u0649\u0631", + "\u062f\u06d0\u0643\u0627\u0628\u0649\u0631" + ], + "fullDate": "EEEE\u060c MMMM d\u060c y", + "longDate": "MMMM d\u060c y", + "medium": "MMM d\u060c y h:mm:ss a", + "mediumDate": "MMM d\u060c y", + "mediumTime": "h:mm:ss a", + "short": "M/d/yy h:mm a", + "shortDate": "M/d/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a5", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ug", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_uk-ua.js b/1.2.30/i18n/angular-locale_uk-ua.js new file mode 100644 index 0000000000..21cc422e54 --- /dev/null +++ b/1.2.30/i18n/angular-locale_uk-ua.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0434\u043f", + "\u043f\u043f" + ], + "DAY": [ + "\u043d\u0435\u0434\u0456\u043b\u044f", + "\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a", + "\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a", + "\u0441\u0435\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0435\u0440", + "\u043f\u02bc\u044f\u0442\u043d\u0438\u0446\u044f", + "\u0441\u0443\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0441\u0456\u0447\u043d\u044f", + "\u043b\u044e\u0442\u043e\u0433\u043e", + "\u0431\u0435\u0440\u0435\u0437\u043d\u044f", + "\u043a\u0432\u0456\u0442\u043d\u044f", + "\u0442\u0440\u0430\u0432\u043d\u044f", + "\u0447\u0435\u0440\u0432\u043d\u044f", + "\u043b\u0438\u043f\u043d\u044f", + "\u0441\u0435\u0440\u043f\u043d\u044f", + "\u0432\u0435\u0440\u0435\u0441\u043d\u044f", + "\u0436\u043e\u0432\u0442\u043d\u044f", + "\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430", + "\u0433\u0440\u0443\u0434\u043d\u044f" + ], + "SHORTDAY": [ + "\u041d\u0434", + "\u041f\u043d", + "\u0412\u0442", + "\u0421\u0440", + "\u0427\u0442", + "\u041f\u0442", + "\u0421\u0431" + ], + "SHORTMONTH": [ + "\u0441\u0456\u0447.", + "\u043b\u044e\u0442.", + "\u0431\u0435\u0440.", + "\u043a\u0432\u0456\u0442.", + "\u0442\u0440\u0430\u0432.", + "\u0447\u0435\u0440\u0432.", + "\u043b\u0438\u043f.", + "\u0441\u0435\u0440\u043f.", + "\u0432\u0435\u0440.", + "\u0436\u043e\u0432\u0442.", + "\u043b\u0438\u0441\u0442.", + "\u0433\u0440\u0443\u0434." + ], + "fullDate": "EEEE, d MMMM y '\u0440'.", + "longDate": "d MMMM y '\u0440'.", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b4", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "uk-ua", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (vf.v == 0 && i % 10 == 0 || vf.v == 0 && i % 10 >= 5 && i % 10 <= 9 || vf.v == 0 && i % 100 >= 11 && i % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_uk.js b/1.2.30/i18n/angular-locale_uk.js new file mode 100644 index 0000000000..43475b4c9b --- /dev/null +++ b/1.2.30/i18n/angular-locale_uk.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0434\u043f", + "\u043f\u043f" + ], + "DAY": [ + "\u043d\u0435\u0434\u0456\u043b\u044f", + "\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a", + "\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a", + "\u0441\u0435\u0440\u0435\u0434\u0430", + "\u0447\u0435\u0442\u0432\u0435\u0440", + "\u043f\u02bc\u044f\u0442\u043d\u0438\u0446\u044f", + "\u0441\u0443\u0431\u043e\u0442\u0430" + ], + "MONTH": [ + "\u0441\u0456\u0447\u043d\u044f", + "\u043b\u044e\u0442\u043e\u0433\u043e", + "\u0431\u0435\u0440\u0435\u0437\u043d\u044f", + "\u043a\u0432\u0456\u0442\u043d\u044f", + "\u0442\u0440\u0430\u0432\u043d\u044f", + "\u0447\u0435\u0440\u0432\u043d\u044f", + "\u043b\u0438\u043f\u043d\u044f", + "\u0441\u0435\u0440\u043f\u043d\u044f", + "\u0432\u0435\u0440\u0435\u0441\u043d\u044f", + "\u0436\u043e\u0432\u0442\u043d\u044f", + "\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430", + "\u0433\u0440\u0443\u0434\u043d\u044f" + ], + "SHORTDAY": [ + "\u041d\u0434", + "\u041f\u043d", + "\u0412\u0442", + "\u0421\u0440", + "\u0427\u0442", + "\u041f\u0442", + "\u0421\u0431" + ], + "SHORTMONTH": [ + "\u0441\u0456\u0447.", + "\u043b\u044e\u0442.", + "\u0431\u0435\u0440.", + "\u043a\u0432\u0456\u0442.", + "\u0442\u0440\u0430\u0432.", + "\u0447\u0435\u0440\u0432.", + "\u043b\u0438\u043f.", + "\u0441\u0435\u0440\u043f.", + "\u0432\u0435\u0440.", + "\u0436\u043e\u0432\u0442.", + "\u043b\u0438\u0441\u0442.", + "\u0433\u0440\u0443\u0434." + ], + "fullDate": "EEEE, d MMMM y '\u0440'.", + "longDate": "d MMMM y '\u0440'.", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "dd.MM.yy HH:mm", + "shortDate": "dd.MM.yy", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b4", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "uk", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (vf.v == 0 && i % 10 == 1 && i % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (vf.v == 0 && i % 10 >= 2 && i % 10 <= 4 && (i % 100 < 12 || i % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (vf.v == 0 && i % 10 == 0 || vf.v == 0 && i % 10 >= 5 && i % 10 <= 9 || vf.v == 0 && i % 100 >= 11 && i % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ur-in.js b/1.2.30/i18n/angular-locale_ur-in.js new file mode 100644 index 0000000000..5d81b2813c --- /dev/null +++ b/1.2.30/i18n/angular-locale_ur-in.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0642\u0628\u0644 \u062f\u0648\u067e\u06c1\u0631", + "\u0628\u0639\u062f \u062f\u0648\u067e\u06c1\u0631" + ], + "DAY": [ + "\u0627\u062a\u0648\u0627\u0631", + "\u067e\u06cc\u0631", + "\u0645\u0646\u06af\u0644", + "\u0628\u062f\u06be", + "\u062c\u0645\u0639\u0631\u0627\u062a", + "\u062c\u0645\u0639\u06c1", + "\u06c1\u0641\u062a\u06c1" + ], + "MONTH": [ + "\u062c\u0646\u0648\u0631\u06cc", + "\u0641\u0631\u0648\u0631\u06cc", + "\u0645\u0627\u0631\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u0626\u06cc", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644\u0627\u0626\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u062a\u0648\u0627\u0631", + "\u067e\u06cc\u0631", + "\u0645\u0646\u06af\u0644", + "\u0628\u062f\u06be", + "\u062c\u0645\u0639\u0631\u0627\u062a", + "\u062c\u0645\u0639\u06c1", + "\u06c1\u0641\u062a\u06c1" + ], + "SHORTMONTH": [ + "\u062c\u0646\u0648\u0631\u06cc", + "\u0641\u0631\u0648\u0631\u06cc", + "\u0645\u0627\u0631\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u0626\u06cc", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644\u0627\u0626\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "d MMM\u060c y h:mm:ss a", + "mediumDate": "d MMM\u060c y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20b9", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 2, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "ur-in", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ur-pk.js b/1.2.30/i18n/angular-locale_ur-pk.js new file mode 100644 index 0000000000..78ecd51876 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ur-pk.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0642\u0628\u0644 \u062f\u0648\u067e\u06c1\u0631", + "\u0628\u0639\u062f \u062f\u0648\u067e\u06c1\u0631" + ], + "DAY": [ + "\u0627\u062a\u0648\u0627\u0631", + "\u0633\u0648\u0645\u0648\u0627\u0631", + "\u0645\u0646\u06af\u0644", + "\u0628\u062f\u06be", + "\u062c\u0645\u0639\u0631\u0627\u062a", + "\u062c\u0645\u0639\u06c1", + "\u06c1\u0641\u062a\u06c1" + ], + "MONTH": [ + "\u062c\u0646\u0648\u0631\u06cc", + "\u0641\u0631\u0648\u0631\u06cc", + "\u0645\u0627\u0631\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u0626\u06cc", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644\u0627\u0626\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u062a\u0648\u0627\u0631", + "\u0633\u0648\u0645\u0648\u0627\u0631", + "\u0645\u0646\u06af\u0644", + "\u0628\u062f\u06be", + "\u062c\u0645\u0639\u0631\u0627\u062a", + "\u062c\u0645\u0639\u06c1", + "\u06c1\u0641\u062a\u06c1" + ], + "SHORTMONTH": [ + "\u062c\u0646\u0648\u0631\u06cc", + "\u0641\u0631\u0648\u0631\u06cc", + "\u0645\u0627\u0631\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u0626\u06cc", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644\u0627\u0626\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "d MMM\u060c y h:mm:ss a", + "mediumDate": "d MMM\u060c y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rs", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "\u200e", + "posPre": "\u00a4", + "posSuf": "\u200e" + } + ] + }, + "id": "ur-pk", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ur.js b/1.2.30/i18n/angular-locale_ur.js new file mode 100644 index 0000000000..f4e21404ae --- /dev/null +++ b/1.2.30/i18n/angular-locale_ur.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u0642\u0628\u0644 \u062f\u0648\u067e\u06c1\u0631", + "\u0628\u0639\u062f \u062f\u0648\u067e\u06c1\u0631" + ], + "DAY": [ + "\u0627\u062a\u0648\u0627\u0631", + "\u0633\u0648\u0645\u0648\u0627\u0631", + "\u0645\u0646\u06af\u0644", + "\u0628\u062f\u06be", + "\u062c\u0645\u0639\u0631\u0627\u062a", + "\u062c\u0645\u0639\u06c1", + "\u06c1\u0641\u062a\u06c1" + ], + "MONTH": [ + "\u062c\u0646\u0648\u0631\u06cc", + "\u0641\u0631\u0648\u0631\u06cc", + "\u0645\u0627\u0631\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u0626\u06cc", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644\u0627\u0626\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u0627\u062a\u0648\u0627\u0631", + "\u0633\u0648\u0645\u0648\u0627\u0631", + "\u0645\u0646\u06af\u0644", + "\u0628\u062f\u06be", + "\u062c\u0645\u0639\u0631\u0627\u062a", + "\u062c\u0645\u0639\u06c1", + "\u06c1\u0641\u062a\u06c1" + ], + "SHORTMONTH": [ + "\u062c\u0646\u0648\u0631\u06cc", + "\u0641\u0631\u0648\u0631\u06cc", + "\u0645\u0627\u0631\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u0626\u06cc", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644\u0627\u0626\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "fullDate": "EEEE\u060c d MMMM\u060c y", + "longDate": "d MMMM\u060c y", + "medium": "d MMM\u060c y h:mm:ss a", + "mediumDate": "d MMM\u060c y", + "mediumTime": "h:mm:ss a", + "short": "d/M/yy h:mm a", + "shortDate": "d/M/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Rs", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "\u200e", + "posPre": "\u00a4", + "posSuf": "\u200e" + } + ] + }, + "id": "ur", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_uz-arab-af.js b/1.2.30/i18n/angular-locale_uz-arab-af.js new file mode 100644 index 0000000000..181a5f28d6 --- /dev/null +++ b/1.2.30/i18n/angular-locale_uz-arab-af.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u06cc\u06a9\u0634\u0646\u0628\u0647", + "\u062f\u0648\u0634\u0646\u0628\u0647", + "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", + "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", + "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", + "\u062c\u0645\u0639\u0647", + "\u0634\u0646\u0628\u0647" + ], + "MONTH": [ + "\u062c\u0646\u0648\u0631\u06cc", + "\u0641\u0628\u0631\u0648\u0631\u06cc", + "\u0645\u0627\u0631\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u06cc", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644\u0627\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u067e\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u06cc.", + "\u062f.", + "\u0633.", + "\u0686.", + "\u067e.", + "\u062c.", + "\u0634." + ], + "SHORTMONTH": [ + "\u062c\u0646\u0648", + "\u0641\u0628\u0631", + "\u0645\u0627\u0631", + "\u0627\u067e\u0631", + "\u0645\u0640\u06cc", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644", + "\u0627\u06af\u0633", + "\u0633\u067e\u062a", + "\u0627\u06a9\u062a", + "\u0646\u0648\u0645", + "\u062f\u0633\u0645" + ], + "fullDate": "y \u0646\u0686\u06cc \u06cc\u06cc\u0644 d \u0646\u0686\u06cc MMMM EEEE \u06a9\u0648\u0646\u06cc", + "longDate": "d \u0646\u0686\u06cc MMMM y", + "medium": "d MMM y H:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "H:mm:ss", + "short": "y/M/d H:mm", + "shortDate": "y/M/d", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Af.", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "uz-arab-af", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_uz-arab.js b/1.2.30/i18n/angular-locale_uz-arab.js new file mode 100644 index 0000000000..fb07378419 --- /dev/null +++ b/1.2.30/i18n/angular-locale_uz-arab.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u06cc\u06a9\u0634\u0646\u0628\u0647", + "\u062f\u0648\u0634\u0646\u0628\u0647", + "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", + "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", + "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", + "\u062c\u0645\u0639\u0647", + "\u0634\u0646\u0628\u0647" + ], + "MONTH": [ + "\u062c\u0646\u0648\u0631\u06cc", + "\u0641\u0628\u0631\u0648\u0631\u06cc", + "\u0645\u0627\u0631\u0686", + "\u0627\u067e\u0631\u06cc\u0644", + "\u0645\u06cc", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644\u0627\u06cc", + "\u0627\u06af\u0633\u062a", + "\u0633\u067e\u062a\u0645\u0628\u0631", + "\u0627\u06a9\u062a\u0648\u0628\u0631", + "\u0646\u0648\u0645\u0628\u0631", + "\u062f\u0633\u0645\u0628\u0631" + ], + "SHORTDAY": [ + "\u06cc.", + "\u062f.", + "\u0633.", + "\u0686.", + "\u067e.", + "\u062c.", + "\u0634." + ], + "SHORTMONTH": [ + "\u062c\u0646\u0648", + "\u0641\u0628\u0631", + "\u0645\u0627\u0631", + "\u0627\u067e\u0631", + "\u0645\u0640\u06cc", + "\u062c\u0648\u0646", + "\u062c\u0648\u0644", + "\u0627\u06af\u0633", + "\u0633\u067e\u062a", + "\u0627\u06a9\u062a", + "\u0646\u0648\u0645", + "\u062f\u0633\u0645" + ], + "fullDate": "y \u0646\u0686\u06cc \u06cc\u06cc\u0644 d \u0646\u0686\u06cc MMMM EEEE \u06a9\u0648\u0646\u06cc", + "longDate": "d \u0646\u0686\u06cc MMMM y", + "medium": "d MMM y H:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "H:mm:ss", + "short": "y/M/d H:mm", + "shortDate": "y/M/d", + "shortTime": "H:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Af.", + "DECIMAL_SEP": "\u066b", + "GROUP_SEP": "\u066c", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "uz-arab", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_uz-cyrl-uz.js b/1.2.30/i18n/angular-locale_uz-cyrl-uz.js new file mode 100644 index 0000000000..540af8070d --- /dev/null +++ b/1.2.30/i18n/angular-locale_uz-cyrl-uz.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u044f\u043a\u0448\u0430\u043d\u0431\u0430", + "\u0434\u0443\u0448\u0430\u043d\u0431\u0430", + "\u0441\u0435\u0448\u0430\u043d\u0431\u0430", + "\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0430", + "\u043f\u0430\u0439\u0448\u0430\u043d\u0431\u0430", + "\u0436\u0443\u043c\u0430", + "\u0448\u0430\u043d\u0431\u0430" + ], + "MONTH": [ + "\u042f\u043d\u0432\u0430\u0440", + "\u0424\u0435\u0432\u0440\u0430\u043b", + "\u041c\u0430\u0440\u0442", + "\u0410\u043f\u0440\u0435\u043b", + "\u041c\u0430\u0439", + "\u0418\u044e\u043d", + "\u0418\u044e\u043b", + "\u0410\u0432\u0433\u0443\u0441\u0442", + "\u0421\u0435\u043d\u0442\u044f\u0431\u0440", + "\u041e\u043a\u0442\u044f\u0431\u0440", + "\u041d\u043e\u044f\u0431\u0440", + "\u0414\u0435\u043a\u0430\u0431\u0440" + ], + "SHORTDAY": [ + "\u042f\u043a\u0448", + "\u0414\u0443\u0448", + "\u0421\u0435\u0448", + "\u0427\u043e\u0440", + "\u041f\u0430\u0439", + "\u0416\u0443\u043c", + "\u0428\u0430\u043d" + ], + "SHORTMONTH": [ + "\u042f\u043d\u0432", + "\u0424\u0435\u0432", + "\u041c\u0430\u0440", + "\u0410\u043f\u0440", + "\u041c\u0430\u0439", + "\u0418\u044e\u043d", + "\u0418\u044e\u043b", + "\u0410\u0432\u0433", + "\u0421\u0435\u043d", + "\u041e\u043a\u0442", + "\u041d\u043e\u044f", + "\u0414\u0435\u043a" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "so\u02bcm", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "uz-cyrl-uz", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_uz-cyrl.js b/1.2.30/i18n/angular-locale_uz-cyrl.js new file mode 100644 index 0000000000..e8d148500e --- /dev/null +++ b/1.2.30/i18n/angular-locale_uz-cyrl.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\u044f\u043a\u0448\u0430\u043d\u0431\u0430", + "\u0434\u0443\u0448\u0430\u043d\u0431\u0430", + "\u0441\u0435\u0448\u0430\u043d\u0431\u0430", + "\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0430", + "\u043f\u0430\u0439\u0448\u0430\u043d\u0431\u0430", + "\u0436\u0443\u043c\u0430", + "\u0448\u0430\u043d\u0431\u0430" + ], + "MONTH": [ + "\u042f\u043d\u0432\u0430\u0440", + "\u0424\u0435\u0432\u0440\u0430\u043b", + "\u041c\u0430\u0440\u0442", + "\u0410\u043f\u0440\u0435\u043b", + "\u041c\u0430\u0439", + "\u0418\u044e\u043d", + "\u0418\u044e\u043b", + "\u0410\u0432\u0433\u0443\u0441\u0442", + "\u0421\u0435\u043d\u0442\u044f\u0431\u0440", + "\u041e\u043a\u0442\u044f\u0431\u0440", + "\u041d\u043e\u044f\u0431\u0440", + "\u0414\u0435\u043a\u0430\u0431\u0440" + ], + "SHORTDAY": [ + "\u042f\u043a\u0448", + "\u0414\u0443\u0448", + "\u0421\u0435\u0448", + "\u0427\u043e\u0440", + "\u041f\u0430\u0439", + "\u0416\u0443\u043c", + "\u0428\u0430\u043d" + ], + "SHORTMONTH": [ + "\u042f\u043d\u0432", + "\u0424\u0435\u0432", + "\u041c\u0430\u0440", + "\u0410\u043f\u0440", + "\u041c\u0430\u0439", + "\u0418\u044e\u043d", + "\u0418\u044e\u043b", + "\u0410\u0432\u0433", + "\u0421\u0435\u043d", + "\u041e\u043a\u0442", + "\u041d\u043e\u044f", + "\u0414\u0435\u043a" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "uz-cyrl", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_uz-latn-uz.js b/1.2.30/i18n/angular-locale_uz-latn-uz.js new file mode 100644 index 0000000000..50c052a3ba --- /dev/null +++ b/1.2.30/i18n/angular-locale_uz-latn-uz.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "yakshanba", + "dushanba", + "seshanba", + "chorshanba", + "payshanba", + "juma", + "shanba" + ], + "MONTH": [ + "Yanvar", + "Fevral", + "Mart", + "Aprel", + "May", + "Iyun", + "Iyul", + "Avgust", + "Sentyabr", + "Oktyabr", + "Noyabr", + "Dekabr" + ], + "SHORTDAY": [ + "Yaksh", + "Dush", + "Sesh", + "Chor", + "Pay", + "Jum", + "Shan" + ], + "SHORTMONTH": [ + "Yanv", + "Fev", + "Mar", + "Apr", + "May", + "Iyun", + "Iyul", + "Avg", + "Sen", + "Okt", + "Noya", + "Dek" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "so\u02bcm", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "uz-latn-uz", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_uz-latn.js b/1.2.30/i18n/angular-locale_uz-latn.js new file mode 100644 index 0000000000..fb6293d173 --- /dev/null +++ b/1.2.30/i18n/angular-locale_uz-latn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "yakshanba", + "dushanba", + "seshanba", + "chorshanba", + "payshanba", + "juma", + "shanba" + ], + "MONTH": [ + "Yanvar", + "Fevral", + "Mart", + "Aprel", + "May", + "Iyun", + "Iyul", + "Avgust", + "Sentyabr", + "Oktyabr", + "Noyabr", + "Dekabr" + ], + "SHORTDAY": [ + "Yaksh", + "Dush", + "Sesh", + "Chor", + "Pay", + "Jum", + "Shan" + ], + "SHORTMONTH": [ + "Yanv", + "Fev", + "Mar", + "Apr", + "May", + "Iyun", + "Iyul", + "Avg", + "Sen", + "Okt", + "Noya", + "Dek" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "uz-latn", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_uz.js b/1.2.30/i18n/angular-locale_uz.js new file mode 100644 index 0000000000..d172d7c88b --- /dev/null +++ b/1.2.30/i18n/angular-locale_uz.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "yakshanba", + "dushanba", + "seshanba", + "chorshanba", + "payshanba", + "juma", + "shanba" + ], + "MONTH": [ + "Yanvar", + "Fevral", + "Mart", + "Aprel", + "May", + "Iyun", + "Iyul", + "Avgust", + "Sentyabr", + "Oktyabr", + "Noyabr", + "Dekabr" + ], + "SHORTDAY": [ + "Yaksh", + "Dush", + "Sesh", + "Chor", + "Pay", + "Jum", + "Shan" + ], + "SHORTMONTH": [ + "Yanv", + "Fev", + "Mar", + "Apr", + "May", + "Iyun", + "Iyul", + "Avg", + "Sen", + "Okt", + "Noya", + "Dek" + ], + "fullDate": "EEEE, y MMMM dd", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "yy/MM/dd HH:mm", + "shortDate": "yy/MM/dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "so\u02bcm", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "uz", + "pluralCat": function (n, opt_precision) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_vai-latn-lr.js b/1.2.30/i18n/angular-locale_vai-latn-lr.js new file mode 100644 index 0000000000..a01a580349 --- /dev/null +++ b/1.2.30/i18n/angular-locale_vai-latn-lr.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "lahadi", + "t\u025b\u025bn\u025b\u025b", + "talata", + "alaba", + "aimisa", + "aijima", + "si\u0253iti" + ], + "MONTH": [ + "luukao kem\u00e3", + "\u0253anda\u0253u", + "v\u0254\u0254", + "fulu", + "goo", + "6", + "7", + "k\u0254nde", + "saah", + "galo", + "kenpkato \u0253olol\u0254", + "luukao l\u0254ma" + ], + "SHORTDAY": [ + "lahadi", + "t\u025b\u025bn\u025b\u025b", + "talata", + "alaba", + "aimisa", + "aijima", + "si\u0253iti" + ], + "SHORTMONTH": [ + "luukao kem\u00e3", + "\u0253anda\u0253u", + "v\u0254\u0254", + "fulu", + "goo", + "6", + "7", + "k\u0254nde", + "saah", + "galo", + "kenpkato \u0253olol\u0254", + "luukao l\u0254ma" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "vai-latn-lr", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_vai-latn.js b/1.2.30/i18n/angular-locale_vai-latn.js new file mode 100644 index 0000000000..50f3b2f053 --- /dev/null +++ b/1.2.30/i18n/angular-locale_vai-latn.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "lahadi", + "t\u025b\u025bn\u025b\u025b", + "talata", + "alaba", + "aimisa", + "aijima", + "si\u0253iti" + ], + "MONTH": [ + "luukao kem\u00e3", + "\u0253anda\u0253u", + "v\u0254\u0254", + "fulu", + "goo", + "6", + "7", + "k\u0254nde", + "saah", + "galo", + "kenpkato \u0253olol\u0254", + "luukao l\u0254ma" + ], + "SHORTDAY": [ + "lahadi", + "t\u025b\u025bn\u025b\u025b", + "talata", + "alaba", + "aimisa", + "aijima", + "si\u0253iti" + ], + "SHORTMONTH": [ + "luukao kem\u00e3", + "\u0253anda\u0253u", + "v\u0254\u0254", + "fulu", + "goo", + "6", + "7", + "k\u0254nde", + "saah", + "galo", + "kenpkato \u0253olol\u0254", + "luukao l\u0254ma" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "vai-latn", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_vai-vaii-lr.js b/1.2.30/i18n/angular-locale_vai-vaii-lr.js new file mode 100644 index 0000000000..14ae0645cb --- /dev/null +++ b/1.2.30/i18n/angular-locale_vai-vaii-lr.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\ua55e\ua54c\ua535", + "\ua5f3\ua5e1\ua609", + "\ua55a\ua55e\ua55a", + "\ua549\ua55e\ua552", + "\ua549\ua524\ua546\ua562", + "\ua549\ua524\ua540\ua56e", + "\ua53b\ua52c\ua533" + ], + "MONTH": [ + "\ua5a8\ua56a\ua583 \ua51e\ua56e", + "\ua552\ua561\ua59d\ua595", + "\ua57e\ua5ba", + "\ua5a2\ua595", + "\ua591\ua571", + "6", + "7", + "\ua5db\ua515", + "\ua562\ua54c", + "\ua56d\ua583", + "\ua51e\ua60b\ua554\ua57f \ua578\ua583\ua5cf", + "\ua5a8\ua56a\ua571 \ua5cf\ua56e" + ], + "SHORTDAY": [ + "\ua55e\ua54c\ua535", + "\ua5f3\ua5e1\ua609", + "\ua55a\ua55e\ua55a", + "\ua549\ua55e\ua552", + "\ua549\ua524\ua546\ua562", + "\ua549\ua524\ua540\ua56e", + "\ua53b\ua52c\ua533" + ], + "SHORTMONTH": [ + "\ua5a8\ua56a\ua583 \ua51e\ua56e", + "\ua552\ua561\ua59d\ua595", + "\ua57e\ua5ba", + "\ua5a2\ua595", + "\ua591\ua571", + "6", + "7", + "\ua5db\ua515", + "\ua562\ua54c", + "\ua56d\ua583", + "\ua51e\ua60b\ua554\ua57f \ua578\ua583\ua5cf", + "\ua5a8\ua56a\ua571 \ua5cf\ua56e" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "vai-vaii-lr", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_vai-vaii.js b/1.2.30/i18n/angular-locale_vai-vaii.js new file mode 100644 index 0000000000..f388df14c2 --- /dev/null +++ b/1.2.30/i18n/angular-locale_vai-vaii.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\ua55e\ua54c\ua535", + "\ua5f3\ua5e1\ua609", + "\ua55a\ua55e\ua55a", + "\ua549\ua55e\ua552", + "\ua549\ua524\ua546\ua562", + "\ua549\ua524\ua540\ua56e", + "\ua53b\ua52c\ua533" + ], + "MONTH": [ + "\ua5a8\ua56a\ua583 \ua51e\ua56e", + "\ua552\ua561\ua59d\ua595", + "\ua57e\ua5ba", + "\ua5a2\ua595", + "\ua591\ua571", + "6", + "7", + "\ua5db\ua515", + "\ua562\ua54c", + "\ua56d\ua583", + "\ua51e\ua60b\ua554\ua57f \ua578\ua583\ua5cf", + "\ua5a8\ua56a\ua571 \ua5cf\ua56e" + ], + "SHORTDAY": [ + "\ua55e\ua54c\ua535", + "\ua5f3\ua5e1\ua609", + "\ua55a\ua55e\ua55a", + "\ua549\ua55e\ua552", + "\ua549\ua524\ua546\ua562", + "\ua549\ua524\ua540\ua56e", + "\ua53b\ua52c\ua533" + ], + "SHORTMONTH": [ + "\ua5a8\ua56a\ua583 \ua51e\ua56e", + "\ua552\ua561\ua59d\ua595", + "\ua57e\ua5ba", + "\ua5a2\ua595", + "\ua591\ua571", + "6", + "7", + "\ua5db\ua515", + "\ua562\ua54c", + "\ua56d\ua583", + "\ua51e\ua60b\ua554\ua57f \ua578\ua583\ua5cf", + "\ua5a8\ua56a\ua571 \ua5cf\ua56e" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "vai-vaii", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_vai.js b/1.2.30/i18n/angular-locale_vai.js new file mode 100644 index 0000000000..eba74ef75e --- /dev/null +++ b/1.2.30/i18n/angular-locale_vai.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "\ua55e\ua54c\ua535", + "\ua5f3\ua5e1\ua609", + "\ua55a\ua55e\ua55a", + "\ua549\ua55e\ua552", + "\ua549\ua524\ua546\ua562", + "\ua549\ua524\ua540\ua56e", + "\ua53b\ua52c\ua533" + ], + "MONTH": [ + "\ua5a8\ua56a\ua583 \ua51e\ua56e", + "\ua552\ua561\ua59d\ua595", + "\ua57e\ua5ba", + "\ua5a2\ua595", + "\ua591\ua571", + "6", + "7", + "\ua5db\ua515", + "\ua562\ua54c", + "\ua56d\ua583", + "\ua51e\ua60b\ua554\ua57f \ua578\ua583\ua5cf", + "\ua5a8\ua56a\ua571 \ua5cf\ua56e" + ], + "SHORTDAY": [ + "\ua55e\ua54c\ua535", + "\ua5f3\ua5e1\ua609", + "\ua55a\ua55e\ua55a", + "\ua549\ua55e\ua552", + "\ua549\ua524\ua546\ua562", + "\ua549\ua524\ua540\ua56e", + "\ua53b\ua52c\ua533" + ], + "SHORTMONTH": [ + "\ua5a8\ua56a\ua583 \ua51e\ua56e", + "\ua552\ua561\ua59d\ua595", + "\ua57e\ua5ba", + "\ua5a2\ua595", + "\ua591\ua571", + "6", + "7", + "\ua5db\ua515", + "\ua562\ua54c", + "\ua56d\ua583", + "\ua51e\ua60b\ua554\ua57f \ua578\ua583\ua5cf", + "\ua5a8\ua56a\ua571 \ua5cf\ua56e" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "vai", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ve-za.js b/1.2.30/i18n/angular-locale_ve-za.js new file mode 100644 index 0000000000..d26001ba51 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ve-za.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Swondaha", + "Musumbuluwo", + "\u1e3cavhuvhili", + "\u1e3cavhuraru", + "\u1e3cavhu\u1e4ba", + "\u1e3cavhu\u1e71anu", + "Mugivhela" + ], + "MONTH": [ + "Phando", + "Luhuhi", + "\u1e70hafamuhwe", + "Lambamai", + "Shundunthule", + "Fulwi", + "Fulwana", + "\u1e70hangule", + "Khubvumedzi", + "Tshimedzi", + "\u1e3cara", + "Nyendavhusiku" + ], + "SHORTDAY": [ + "Swo", + "Mus", + "Vhi", + "Rar", + "\u1e4aa", + "\u1e70an", + "Mug" + ], + "SHORTMONTH": [ + "Pha", + "Luh", + "\u1e70hf", + "Lam", + "Shu", + "Lwi", + "Lwa", + "\u1e70ha", + "Khu", + "Tsh", + "\u1e3car", + "Nye" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ve-za", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_ve.js b/1.2.30/i18n/angular-locale_ve.js new file mode 100644 index 0000000000..d258e5e455 --- /dev/null +++ b/1.2.30/i18n/angular-locale_ve.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Swondaha", + "Musumbuluwo", + "\u1e3cavhuvhili", + "\u1e3cavhuraru", + "\u1e3cavhu\u1e4ba", + "\u1e3cavhu\u1e71anu", + "Mugivhela" + ], + "MONTH": [ + "Phando", + "Luhuhi", + "\u1e70hafamuhwe", + "Lambamai", + "Shundunthule", + "Fulwi", + "Fulwana", + "\u1e70hangule", + "Khubvumedzi", + "Tshimedzi", + "\u1e3cara", + "Nyendavhusiku" + ], + "SHORTDAY": [ + "Swo", + "Mus", + "Vhi", + "Rar", + "\u1e4aa", + "\u1e70an", + "Mug" + ], + "SHORTMONTH": [ + "Pha", + "Luh", + "\u1e70hf", + "Lam", + "Shu", + "Lwi", + "Lwa", + "\u1e70ha", + "Khu", + "Tsh", + "\u1e3car", + "Nye" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "ve", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_vi-vn.js b/1.2.30/i18n/angular-locale_vi-vn.js new file mode 100644 index 0000000000..ed033d6af6 --- /dev/null +++ b/1.2.30/i18n/angular-locale_vi-vn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "SA", + "CH" + ], + "DAY": [ + "Ch\u1ee7 Nh\u1eadt", + "Th\u1ee9 Hai", + "Th\u1ee9 Ba", + "Th\u1ee9 T\u01b0", + "Th\u1ee9 N\u0103m", + "Th\u1ee9 S\u00e1u", + "Th\u1ee9 B\u1ea3y" + ], + "MONTH": [ + "th\u00e1ng 1", + "th\u00e1ng 2", + "th\u00e1ng 3", + "th\u00e1ng 4", + "th\u00e1ng 5", + "th\u00e1ng 6", + "th\u00e1ng 7", + "th\u00e1ng 8", + "th\u00e1ng 9", + "th\u00e1ng 10", + "th\u00e1ng 11", + "th\u00e1ng 12" + ], + "SHORTDAY": [ + "CN", + "Th 2", + "Th 3", + "Th 4", + "Th 5", + "Th 6", + "Th 7" + ], + "SHORTMONTH": [ + "thg 1", + "thg 2", + "thg 3", + "thg 4", + "thg 5", + "thg 6", + "thg 7", + "thg 8", + "thg 9", + "thg 10", + "thg 11", + "thg 12" + ], + "fullDate": "EEEE, 'ng\u00e0y' dd MMMM 'n\u0103m' y", + "longDate": "'Ng\u00e0y' dd 'th\u00e1ng' MM 'n\u0103m' y", + "medium": "dd-MM-y HH:mm:ss", + "mediumDate": "dd-MM-y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ab", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "vi-vn", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_vi.js b/1.2.30/i18n/angular-locale_vi.js new file mode 100644 index 0000000000..567732390d --- /dev/null +++ b/1.2.30/i18n/angular-locale_vi.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "SA", + "CH" + ], + "DAY": [ + "Ch\u1ee7 Nh\u1eadt", + "Th\u1ee9 Hai", + "Th\u1ee9 Ba", + "Th\u1ee9 T\u01b0", + "Th\u1ee9 N\u0103m", + "Th\u1ee9 S\u00e1u", + "Th\u1ee9 B\u1ea3y" + ], + "MONTH": [ + "th\u00e1ng 1", + "th\u00e1ng 2", + "th\u00e1ng 3", + "th\u00e1ng 4", + "th\u00e1ng 5", + "th\u00e1ng 6", + "th\u00e1ng 7", + "th\u00e1ng 8", + "th\u00e1ng 9", + "th\u00e1ng 10", + "th\u00e1ng 11", + "th\u00e1ng 12" + ], + "SHORTDAY": [ + "CN", + "Th 2", + "Th 3", + "Th 4", + "Th 5", + "Th 6", + "Th 7" + ], + "SHORTMONTH": [ + "thg 1", + "thg 2", + "thg 3", + "thg 4", + "thg 5", + "thg 6", + "thg 7", + "thg 8", + "thg 9", + "thg 10", + "thg 11", + "thg 12" + ], + "fullDate": "EEEE, 'ng\u00e0y' dd MMMM 'n\u0103m' y", + "longDate": "'Ng\u00e0y' dd 'th\u00e1ng' MM 'n\u0103m' y", + "medium": "dd-MM-y HH:mm:ss", + "mediumDate": "dd-MM-y", + "mediumTime": "HH:mm:ss", + "short": "dd/MM/y HH:mm", + "shortDate": "dd/MM/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ab", + "DECIMAL_SEP": ",", + "GROUP_SEP": ".", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "vi", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_vo-001.js b/1.2.30/i18n/angular-locale_vo-001.js new file mode 100644 index 0000000000..2c1e567a42 --- /dev/null +++ b/1.2.30/i18n/angular-locale_vo-001.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "posz.", + "b\u00fcz." + ], + "DAY": [ + "sudel", + "mudel", + "tudel", + "vedel", + "d\u00f6del", + "fridel", + "z\u00e4del" + ], + "MONTH": [ + "janul", + "febul", + "m\u00e4zil", + "prilul", + "mayul", + "yunul", + "yulul", + "gustul", + "setul", + "tobul", + "novul", + "dekul" + ], + "SHORTDAY": [ + "su.", + "mu.", + "tu.", + "ve.", + "d\u00f6.", + "fr.", + "z\u00e4." + ], + "SHORTMONTH": [ + "jan", + "feb", + "m\u00e4z", + "prl", + "may", + "yun", + "yul", + "gst", + "set", + "ton", + "nov", + "dek" + ], + "fullDate": "y MMMMa 'd'. d'id'", + "longDate": "y MMMM d", + "medium": "y MMM. d HH:mm:ss", + "mediumDate": "y MMM. d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "vo-001", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_vo.js b/1.2.30/i18n/angular-locale_vo.js new file mode 100644 index 0000000000..16a3d31816 --- /dev/null +++ b/1.2.30/i18n/angular-locale_vo.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "posz.", + "b\u00fcz." + ], + "DAY": [ + "sudel", + "mudel", + "tudel", + "vedel", + "d\u00f6del", + "fridel", + "z\u00e4del" + ], + "MONTH": [ + "janul", + "febul", + "m\u00e4zil", + "prilul", + "mayul", + "yunul", + "yulul", + "gustul", + "setul", + "tobul", + "novul", + "dekul" + ], + "SHORTDAY": [ + "su.", + "mu.", + "tu.", + "ve.", + "d\u00f6.", + "fr.", + "z\u00e4." + ], + "SHORTMONTH": [ + "jan", + "feb", + "m\u00e4z", + "prl", + "may", + "yun", + "yul", + "gst", + "set", + "ton", + "nov", + "dek" + ], + "fullDate": "y MMMMa 'd'. d'id'", + "longDate": "y MMMM d", + "medium": "y MMM. d HH:mm:ss", + "mediumDate": "y MMM. d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "vo", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_vun-tz.js b/1.2.30/i18n/angular-locale_vun-tz.js new file mode 100644 index 0000000000..ccf28625b5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_vun-tz.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "utuko", + "kyiukonyi" + ], + "DAY": [ + "Jumapilyi", + "Jumatatuu", + "Jumanne", + "Jumatanu", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Aprilyi", + "Mei", + "Junyi", + "Julyai", + "Agusti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Jpi", + "Jtt", + "Jnn", + "Jtn", + "Alh", + "Iju", + "Jmo" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "vun-tz", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_vun.js b/1.2.30/i18n/angular-locale_vun.js new file mode 100644 index 0000000000..9f5b34d49e --- /dev/null +++ b/1.2.30/i18n/angular-locale_vun.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "utuko", + "kyiukonyi" + ], + "DAY": [ + "Jumapilyi", + "Jumatatuu", + "Jumanne", + "Jumatanu", + "Alhamisi", + "Ijumaa", + "Jumamosi" + ], + "MONTH": [ + "Januari", + "Februari", + "Machi", + "Aprilyi", + "Mei", + "Junyi", + "Julyai", + "Agusti", + "Septemba", + "Oktoba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Jpi", + "Jtt", + "Jnn", + "Jtn", + "Alh", + "Iju", + "Jmo" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mac", + "Apr", + "Mei", + "Jun", + "Jul", + "Ago", + "Sep", + "Okt", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "TSh", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "vun", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_wae-ch.js b/1.2.30/i18n/angular-locale_wae-ch.js new file mode 100644 index 0000000000..a074af85fd --- /dev/null +++ b/1.2.30/i18n/angular-locale_wae-ch.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunntag", + "M\u00e4ntag", + "Zi\u0161tag", + "Mittwu\u010d", + "Fr\u00f3ntag", + "Fritag", + "Sam\u0161tag" + ], + "MONTH": [ + "Jenner", + "Hornig", + "M\u00e4rze", + "Abrille", + "Meije", + "Br\u00e1\u010det", + "Heiwet", + "\u00d6ig\u0161te", + "Herb\u0161tm\u00e1net", + "W\u00edm\u00e1net", + "Winterm\u00e1net", + "Chri\u0161tm\u00e1net" + ], + "SHORTDAY": [ + "Sun", + "M\u00e4n", + "Zi\u0161", + "Mit", + "Fr\u00f3", + "Fri", + "Sam" + ], + "SHORTMONTH": [ + "Jen", + "Hor", + "M\u00e4r", + "Abr", + "Mei", + "Br\u00e1", + "Hei", + "\u00d6ig", + "Her", + "W\u00edm", + "Win", + "Chr" + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d. MMM y HH:mm:ss", + "mediumDate": "d. MMM y", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CHF", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u2019", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "wae-ch", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_wae.js b/1.2.30/i18n/angular-locale_wae.js new file mode 100644 index 0000000000..223de4038d --- /dev/null +++ b/1.2.30/i18n/angular-locale_wae.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Sunntag", + "M\u00e4ntag", + "Zi\u0161tag", + "Mittwu\u010d", + "Fr\u00f3ntag", + "Fritag", + "Sam\u0161tag" + ], + "MONTH": [ + "Jenner", + "Hornig", + "M\u00e4rze", + "Abrille", + "Meije", + "Br\u00e1\u010det", + "Heiwet", + "\u00d6ig\u0161te", + "Herb\u0161tm\u00e1net", + "W\u00edm\u00e1net", + "Winterm\u00e1net", + "Chri\u0161tm\u00e1net" + ], + "SHORTDAY": [ + "Sun", + "M\u00e4n", + "Zi\u0161", + "Mit", + "Fr\u00f3", + "Fri", + "Sam" + ], + "SHORTMONTH": [ + "Jen", + "Hor", + "M\u00e4r", + "Abr", + "Mei", + "Br\u00e1", + "Hei", + "\u00d6ig", + "Her", + "W\u00edm", + "Win", + "Chr" + ], + "fullDate": "EEEE, d. MMMM y", + "longDate": "d. MMMM y", + "medium": "d. MMM y HH:mm:ss", + "mediumDate": "d. MMM y", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CHF", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u2019", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "wae", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_wal-et.js b/1.2.30/i18n/angular-locale_wal-et.js new file mode 100644 index 0000000000..d4090eda8c --- /dev/null +++ b/1.2.30/i18n/angular-locale_wal-et.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u121b\u1208\u12f6", + "\u1243\u121b" + ], + "DAY": [ + "\u12c8\u130b", + "\u1233\u12ed\u1296", + "\u121b\u1246\u1233\u129b", + "\u12a0\u1229\u12cb", + "\u1203\u1219\u1233", + "\u12a0\u122d\u1263", + "\u1244\u122b" + ], + "MONTH": [ + "\u1303\u1295\u12e9\u12c8\u122a", + "\u134c\u1265\u1229\u12c8\u122a", + "\u121b\u122d\u127d", + "\u12a4\u1355\u1228\u120d", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235\u1275", + "\u1234\u1355\u1274\u121d\u1260\u122d", + "\u12a6\u12ad\u1270\u12cd\u1260\u122d", + "\u1296\u126c\u121d\u1260\u122d", + "\u12f2\u1234\u121d\u1260\u122d" + ], + "SHORTDAY": [ + "\u12c8\u130b", + "\u1233\u12ed\u1296", + "\u121b\u1246\u1233\u129b", + "\u12a0\u1229\u12cb", + "\u1203\u1219\u1233", + "\u12a0\u122d\u1263", + "\u1244\u122b" + ], + "SHORTMONTH": [ + "\u1303\u1295\u12e9", + "\u134c\u1265\u1229", + "\u121b\u122d\u127d", + "\u12a4\u1355\u1228", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235", + "\u1234\u1355\u1274", + "\u12a6\u12ad\u1270", + "\u1296\u126c\u121d", + "\u12f2\u1234\u121d" + ], + "fullDate": "EEEE\u1365 dd MMMM \u130b\u120b\u1233 y G", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Birr", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u2019", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "wal-et", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_wal.js b/1.2.30/i18n/angular-locale_wal.js new file mode 100644 index 0000000000..2590615d3a --- /dev/null +++ b/1.2.30/i18n/angular-locale_wal.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u121b\u1208\u12f6", + "\u1243\u121b" + ], + "DAY": [ + "\u12c8\u130b", + "\u1233\u12ed\u1296", + "\u121b\u1246\u1233\u129b", + "\u12a0\u1229\u12cb", + "\u1203\u1219\u1233", + "\u12a0\u122d\u1263", + "\u1244\u122b" + ], + "MONTH": [ + "\u1303\u1295\u12e9\u12c8\u122a", + "\u134c\u1265\u1229\u12c8\u122a", + "\u121b\u122d\u127d", + "\u12a4\u1355\u1228\u120d", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235\u1275", + "\u1234\u1355\u1274\u121d\u1260\u122d", + "\u12a6\u12ad\u1270\u12cd\u1260\u122d", + "\u1296\u126c\u121d\u1260\u122d", + "\u12f2\u1234\u121d\u1260\u122d" + ], + "SHORTDAY": [ + "\u12c8\u130b", + "\u1233\u12ed\u1296", + "\u121b\u1246\u1233\u129b", + "\u12a0\u1229\u12cb", + "\u1203\u1219\u1233", + "\u12a0\u122d\u1263", + "\u1244\u122b" + ], + "SHORTMONTH": [ + "\u1303\u1295\u12e9", + "\u134c\u1265\u1229", + "\u121b\u122d\u127d", + "\u12a4\u1355\u1228", + "\u121c\u12ed", + "\u1301\u1295", + "\u1301\u120b\u12ed", + "\u12a6\u1308\u1235", + "\u1234\u1355\u1274", + "\u12a6\u12ad\u1270", + "\u1296\u126c\u121d", + "\u12f2\u1234\u121d" + ], + "fullDate": "EEEE\u1365 dd MMMM \u130b\u120b\u1233 y G", + "longDate": "dd MMMM y", + "medium": "dd-MMM-y h:mm:ss a", + "mediumDate": "dd-MMM-y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/yy h:mm a", + "shortDate": "dd/MM/yy", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "Birr", + "DECIMAL_SEP": ".", + "GROUP_SEP": "\u2019", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "wal", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_xh-za.js b/1.2.30/i18n/angular-locale_xh-za.js new file mode 100644 index 0000000000..2d89689c79 --- /dev/null +++ b/1.2.30/i18n/angular-locale_xh-za.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Cawe", + "Mvulo", + "Lwesibini", + "Lwesithathu", + "Lwesine", + "Lwesihlanu", + "Mgqibelo" + ], + "MONTH": [ + "Janyuwari", + "Februwari", + "Matshi", + "Epreli", + "Meyi", + "Juni", + "Julayi", + "Agasti", + "Septemba", + "Okthoba", + "Novemba", + "Disemba" + ], + "SHORTDAY": [ + "Caw", + "Mvu", + "Bin", + "Tha", + "Sin", + "Hla", + "Mgq" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mat", + "Epr", + "Mey", + "Jun", + "Jul", + "Aga", + "Sep", + "Okt", + "Nov", + "Dis" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "xh-za", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_xh.js b/1.2.30/i18n/angular-locale_xh.js new file mode 100644 index 0000000000..e791c098f0 --- /dev/null +++ b/1.2.30/i18n/angular-locale_xh.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "AM", + "PM" + ], + "DAY": [ + "Cawe", + "Mvulo", + "Lwesibini", + "Lwesithathu", + "Lwesine", + "Lwesihlanu", + "Mgqibelo" + ], + "MONTH": [ + "Janyuwari", + "Februwari", + "Matshi", + "Epreli", + "Meyi", + "Juni", + "Julayi", + "Agasti", + "Septemba", + "Okthoba", + "Novemba", + "Disemba" + ], + "SHORTDAY": [ + "Caw", + "Mvu", + "Bin", + "Tha", + "Sin", + "Hla", + "Mgq" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mat", + "Epr", + "Mey", + "Jun", + "Jul", + "Aga", + "Sep", + "Okt", + "Nov", + "Dis" + ], + "fullDate": "y MMMM d, EEEE", + "longDate": "y MMMM d", + "medium": "y MMM d HH:mm:ss", + "mediumDate": "y MMM d", + "mediumTime": "HH:mm:ss", + "short": "y-MM-dd HH:mm", + "shortDate": "y-MM-dd", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "xh", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_xog-ug.js b/1.2.30/i18n/angular-locale_xog-ug.js new file mode 100644 index 0000000000..c79fa8befb --- /dev/null +++ b/1.2.30/i18n/angular-locale_xog-ug.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Munkyo", + "Eigulo" + ], + "DAY": [ + "Sabiiti", + "Balaza", + "Owokubili", + "Owokusatu", + "Olokuna", + "Olokutaanu", + "Olomukaaga" + ], + "MONTH": [ + "Janwaliyo", + "Febwaliyo", + "Marisi", + "Apuli", + "Maayi", + "Juuni", + "Julaayi", + "Agusito", + "Sebuttemba", + "Okitobba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Sabi", + "Bala", + "Kubi", + "Kusa", + "Kuna", + "Kuta", + "Muka" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apu", + "Maa", + "Juu", + "Jul", + "Agu", + "Seb", + "Oki", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "UGX", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "xog-ug", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_xog.js b/1.2.30/i18n/angular-locale_xog.js new file mode 100644 index 0000000000..29884bdd94 --- /dev/null +++ b/1.2.30/i18n/angular-locale_xog.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Munkyo", + "Eigulo" + ], + "DAY": [ + "Sabiiti", + "Balaza", + "Owokubili", + "Owokusatu", + "Olokuna", + "Olokutaanu", + "Olomukaaga" + ], + "MONTH": [ + "Janwaliyo", + "Febwaliyo", + "Marisi", + "Apuli", + "Maayi", + "Juuni", + "Julaayi", + "Agusito", + "Sebuttemba", + "Okitobba", + "Novemba", + "Desemba" + ], + "SHORTDAY": [ + "Sabi", + "Bala", + "Kubi", + "Kusa", + "Kuna", + "Kuta", + "Muka" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mar", + "Apu", + "Maa", + "Juu", + "Jul", + "Agu", + "Seb", + "Oki", + "Nov", + "Des" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "UGX", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "xog", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_yav-cm.js b/1.2.30/i18n/angular-locale_yav-cm.js new file mode 100644 index 0000000000..de9c81a4f8 --- /dev/null +++ b/1.2.30/i18n/angular-locale_yav-cm.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "ki\u025bm\u025b\u0301\u025bm", + "kis\u025b\u0301nd\u025b" + ], + "DAY": [ + "s\u0254\u0301ndi\u025b", + "m\u00f3ndie", + "mu\u00e1ny\u00e1\u014bm\u00f3ndie", + "met\u00fakp\u00ed\u00e1p\u025b", + "k\u00fap\u00e9limet\u00fakpiap\u025b", + "fel\u00e9te", + "s\u00e9sel\u00e9" + ], + "MONTH": [ + "pik\u00edt\u00edk\u00edtie, o\u00f3l\u00ed \u00fa kut\u00faan", + "si\u025by\u025b\u0301, o\u00f3li \u00fa k\u00e1nd\u00ed\u025b", + "\u0254ns\u00famb\u0254l, o\u00f3li \u00fa k\u00e1t\u00e1t\u00fa\u025b", + "mesi\u014b, o\u00f3li \u00fa k\u00e9nie", + "ensil, o\u00f3li \u00fa k\u00e1t\u00e1nu\u025b", + "\u0254s\u0254n", + "efute", + "pisuy\u00fa", + "im\u025b\u014b i pu\u0254s", + "im\u025b\u014b i put\u00fak,o\u00f3li \u00fa k\u00e1t\u00ed\u025b", + "makandik\u025b", + "pil\u0254nd\u0254\u0301" + ], + "SHORTDAY": [ + "sd", + "md", + "mw", + "et", + "kl", + "fl", + "ss" + ], + "SHORTMONTH": [ + "o.1", + "o.2", + "o.3", + "o.4", + "o.5", + "o.6", + "o.7", + "o.8", + "o.9", + "o.10", + "o.11", + "o.12" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "yav-cm", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_yav.js b/1.2.30/i18n/angular-locale_yav.js new file mode 100644 index 0000000000..00d7e594a5 --- /dev/null +++ b/1.2.30/i18n/angular-locale_yav.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "ki\u025bm\u025b\u0301\u025bm", + "kis\u025b\u0301nd\u025b" + ], + "DAY": [ + "s\u0254\u0301ndi\u025b", + "m\u00f3ndie", + "mu\u00e1ny\u00e1\u014bm\u00f3ndie", + "met\u00fakp\u00ed\u00e1p\u025b", + "k\u00fap\u00e9limet\u00fakpiap\u025b", + "fel\u00e9te", + "s\u00e9sel\u00e9" + ], + "MONTH": [ + "pik\u00edt\u00edk\u00edtie, o\u00f3l\u00ed \u00fa kut\u00faan", + "si\u025by\u025b\u0301, o\u00f3li \u00fa k\u00e1nd\u00ed\u025b", + "\u0254ns\u00famb\u0254l, o\u00f3li \u00fa k\u00e1t\u00e1t\u00fa\u025b", + "mesi\u014b, o\u00f3li \u00fa k\u00e9nie", + "ensil, o\u00f3li \u00fa k\u00e1t\u00e1nu\u025b", + "\u0254s\u0254n", + "efute", + "pisuy\u00fa", + "im\u025b\u014b i pu\u0254s", + "im\u025b\u014b i put\u00fak,o\u00f3li \u00fa k\u00e1t\u00ed\u025b", + "makandik\u025b", + "pil\u0254nd\u0254\u0301" + ], + "SHORTDAY": [ + "sd", + "md", + "mw", + "et", + "kl", + "fl", + "ss" + ], + "SHORTMONTH": [ + "o.1", + "o.2", + "o.3", + "o.4", + "o.5", + "o.6", + "o.7", + "o.8", + "o.9", + "o.10", + "o.11", + "o.12" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y HH:mm:ss", + "mediumDate": "d MMM y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "FCFA", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a0\u00a4", + "posPre": "", + "posSuf": "\u00a0\u00a4" + } + ] + }, + "id": "yav", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_yo-bj.js b/1.2.30/i18n/angular-locale_yo-bj.js new file mode 100644 index 0000000000..fa1b344a16 --- /dev/null +++ b/1.2.30/i18n/angular-locale_yo-bj.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u00c0\u00e1r\u0254\u0300", + "\u0186\u0300s\u00e1n" + ], + "DAY": [ + "\u0186j\u0254\u0301 \u00c0\u00eck\u00fa", + "\u0186j\u0254\u0301 Aj\u00e9", + "\u0186j\u0254\u0301 \u00ccs\u025b\u0301gun", + "\u0186j\u0254\u0301r\u00fa", + "\u0186j\u0254\u0301b\u0254", + "\u0186j\u0254\u0301 \u0190t\u00ec", + "\u0186j\u0254\u0301 \u00c0b\u00e1m\u025b\u0301ta" + ], + "MONTH": [ + "Osh\u00f9 Sh\u025b\u0301r\u025b\u0301", + "Osh\u00f9 \u00c8r\u00e8l\u00e8", + "Osh\u00f9 \u0190r\u025b\u0300n\u00e0", + "Osh\u00f9 \u00ccgb\u00e9", + "Osh\u00f9 \u0190\u0300bibi", + "Osh\u00f9 \u00d2k\u00fadu", + "Osh\u00f9 Ag\u025bm\u0254", + "Osh\u00f9 \u00d2g\u00fan", + "Osh\u00f9 Owewe", + "Osh\u00f9 \u0186\u0300w\u00e0r\u00e0", + "Osh\u00f9 B\u00e9l\u00fa", + "Osh\u00f9 \u0186\u0300p\u025b\u0300" + ], + "SHORTDAY": [ + "\u00c0\u00eck\u00fa", + "Aj\u00e9", + "\u00ccs\u025b\u0301gun", + "\u0186j\u0254\u0301r\u00fa", + "\u0186j\u0254\u0301b\u0254", + "\u0190t\u00ec", + "\u00c0b\u00e1m\u025b\u0301ta" + ], + "SHORTMONTH": [ + "Sh\u025b\u0301r\u025b\u0301", + "\u00c8r\u00e8l\u00e8", + "\u0190r\u025b\u0300n\u00e0", + "\u00ccgb\u00e9", + "\u0190\u0300bibi", + "\u00d2k\u00fadu", + "Ag\u025bm\u0254", + "\u00d2g\u00fan", + "Owewe", + "\u0186\u0300w\u00e0r\u00e0", + "B\u00e9l\u00fa", + "\u0186\u0300p\u025b\u0300" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "CFA", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "yo-bj", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_yo-ng.js b/1.2.30/i18n/angular-locale_yo-ng.js new file mode 100644 index 0000000000..c4253b8dae --- /dev/null +++ b/1.2.30/i18n/angular-locale_yo-ng.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u00c0\u00e1r\u1ecd\u0300", + "\u1ecc\u0300s\u00e1n" + ], + "DAY": [ + "\u1eccj\u1ecd\u0301 \u00c0\u00eck\u00fa", + "\u1eccj\u1ecd\u0301 Aj\u00e9", + "\u1eccj\u1ecd\u0301 \u00ccs\u1eb9\u0301gun", + "\u1eccj\u1ecd\u0301r\u00fa", + "\u1eccj\u1ecd\u0301b\u1ecd", + "\u1eccj\u1ecd\u0301 \u1eb8t\u00ec", + "\u1eccj\u1ecd\u0301 \u00c0b\u00e1m\u1eb9\u0301ta" + ], + "MONTH": [ + "O\u1e63\u00f9 \u1e62\u1eb9\u0301r\u1eb9\u0301", + "O\u1e63\u00f9 \u00c8r\u00e8l\u00e8", + "O\u1e63\u00f9 \u1eb8r\u1eb9\u0300n\u00e0", + "O\u1e63\u00f9 \u00ccgb\u00e9", + "O\u1e63\u00f9 \u1eb8\u0300bibi", + "O\u1e63\u00f9 \u00d2k\u00fadu", + "O\u1e63\u00f9 Ag\u1eb9m\u1ecd", + "O\u1e63\u00f9 \u00d2g\u00fan", + "O\u1e63\u00f9 Owewe", + "O\u1e63\u00f9 \u1ecc\u0300w\u00e0r\u00e0", + "O\u1e63\u00f9 B\u00e9l\u00fa", + "O\u1e63\u00f9 \u1ecc\u0300p\u1eb9\u0300" + ], + "SHORTDAY": [ + "\u00c0\u00eck\u00fa", + "Aj\u00e9", + "\u00ccs\u1eb9\u0301gun", + "\u1eccj\u1ecd\u0301r\u00fa", + "\u1eccj\u1ecd\u0301b\u1ecd", + "\u1eb8t\u00ec", + "\u00c0b\u00e1m\u1eb9\u0301ta" + ], + "SHORTMONTH": [ + "\u1e62\u1eb9\u0301r\u1eb9\u0301", + "\u00c8r\u00e8l\u00e8", + "\u1eb8r\u1eb9\u0300n\u00e0", + "\u00ccgb\u00e9", + "\u1eb8\u0300bibi", + "\u00d2k\u00fadu", + "Ag\u1eb9m\u1ecd", + "\u00d2g\u00fan", + "Owewe", + "\u1ecc\u0300w\u00e0r\u00e0", + "B\u00e9l\u00fa", + "\u1ecc\u0300p\u1eb9\u0300" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20a6", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "yo-ng", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_yo.js b/1.2.30/i18n/angular-locale_yo.js new file mode 100644 index 0000000000..dea186aecb --- /dev/null +++ b/1.2.30/i18n/angular-locale_yo.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u00c0\u00e1r\u1ecd\u0300", + "\u1ecc\u0300s\u00e1n" + ], + "DAY": [ + "\u1eccj\u1ecd\u0301 \u00c0\u00eck\u00fa", + "\u1eccj\u1ecd\u0301 Aj\u00e9", + "\u1eccj\u1ecd\u0301 \u00ccs\u1eb9\u0301gun", + "\u1eccj\u1ecd\u0301r\u00fa", + "\u1eccj\u1ecd\u0301b\u1ecd", + "\u1eccj\u1ecd\u0301 \u1eb8t\u00ec", + "\u1eccj\u1ecd\u0301 \u00c0b\u00e1m\u1eb9\u0301ta" + ], + "MONTH": [ + "O\u1e63\u00f9 \u1e62\u1eb9\u0301r\u1eb9\u0301", + "O\u1e63\u00f9 \u00c8r\u00e8l\u00e8", + "O\u1e63\u00f9 \u1eb8r\u1eb9\u0300n\u00e0", + "O\u1e63\u00f9 \u00ccgb\u00e9", + "O\u1e63\u00f9 \u1eb8\u0300bibi", + "O\u1e63\u00f9 \u00d2k\u00fadu", + "O\u1e63\u00f9 Ag\u1eb9m\u1ecd", + "O\u1e63\u00f9 \u00d2g\u00fan", + "O\u1e63\u00f9 Owewe", + "O\u1e63\u00f9 \u1ecc\u0300w\u00e0r\u00e0", + "O\u1e63\u00f9 B\u00e9l\u00fa", + "O\u1e63\u00f9 \u1ecc\u0300p\u1eb9\u0300" + ], + "SHORTDAY": [ + "\u00c0\u00eck\u00fa", + "Aj\u00e9", + "\u00ccs\u1eb9\u0301gun", + "\u1eccj\u1ecd\u0301r\u00fa", + "\u1eccj\u1ecd\u0301b\u1ecd", + "\u1eb8t\u00ec", + "\u00c0b\u00e1m\u1eb9\u0301ta" + ], + "SHORTMONTH": [ + "\u1e62\u1eb9\u0301r\u1eb9\u0301", + "\u00c8r\u00e8l\u00e8", + "\u1eb8r\u1eb9\u0300n\u00e0", + "\u00ccgb\u00e9", + "\u1eb8\u0300bibi", + "\u00d2k\u00fadu", + "Ag\u1eb9m\u1ecd", + "\u00d2g\u00fan", + "Owewe", + "\u1ecc\u0300w\u00e0r\u00e0", + "B\u00e9l\u00fa", + "\u1ecc\u0300p\u1eb9\u0300" + ], + "fullDate": "EEEE, d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "dd/MM/y h:mm a", + "shortDate": "dd/MM/y", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20a6", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "yo", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zgh-ma.js b/1.2.30/i18n/angular-locale_zgh-ma.js new file mode 100644 index 0000000000..4d9c95eac9 --- /dev/null +++ b/1.2.30/i18n/angular-locale_zgh-ma.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u2d5c\u2d49\u2d3c\u2d30\u2d61\u2d5c", + "\u2d5c\u2d30\u2d37\u2d33\u2d33\u2d6f\u2d30\u2d5c" + ], + "DAY": [ + "\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59", + "\u2d30\u2d62\u2d4f\u2d30\u2d59", + "\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59", + "\u2d30\u2d3d\u2d55\u2d30\u2d59", + "\u2d30\u2d3d\u2d61\u2d30\u2d59", + "\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59", + "\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59" + ], + "MONTH": [ + "\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54", + "\u2d31\u2d55\u2d30\u2d62\u2d55", + "\u2d4e\u2d30\u2d55\u2d5a", + "\u2d49\u2d31\u2d54\u2d49\u2d54", + "\u2d4e\u2d30\u2d62\u2d62\u2d53", + "\u2d62\u2d53\u2d4f\u2d62\u2d53", + "\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63", + "\u2d56\u2d53\u2d5b\u2d5c", + "\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54", + "\u2d3d\u2d5c\u2d53\u2d31\u2d54", + "\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54", + "\u2d37\u2d53\u2d4a\u2d30\u2d4f\u2d31\u2d49\u2d54" + ], + "SHORTDAY": [ + "\u2d30\u2d59\u2d30", + "\u2d30\u2d62\u2d4f", + "\u2d30\u2d59\u2d49", + "\u2d30\u2d3d\u2d55", + "\u2d30\u2d3d\u2d61", + "\u2d30\u2d59\u2d49\u2d4e", + "\u2d30\u2d59\u2d49\u2d39" + ], + "SHORTMONTH": [ + "\u2d49\u2d4f\u2d4f", + "\u2d31\u2d55\u2d30", + "\u2d4e\u2d30\u2d55", + "\u2d49\u2d31\u2d54", + "\u2d4e\u2d30\u2d62", + "\u2d62\u2d53\u2d4f", + "\u2d62\u2d53\u2d4d", + "\u2d56\u2d53\u2d5b", + "\u2d5b\u2d53\u2d5c", + "\u2d3d\u2d5c\u2d53", + "\u2d4f\u2d53\u2d61", + "\u2d37\u2d53\u2d4a" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "dh", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "zgh-ma", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zgh.js b/1.2.30/i18n/angular-locale_zgh.js new file mode 100644 index 0000000000..0fcf7ddb4a --- /dev/null +++ b/1.2.30/i18n/angular-locale_zgh.js @@ -0,0 +1,115 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +function getDecimals(n) { + n = n + ''; + var i = n.indexOf('.'); + return (i == -1) ? 0 : n.length - i - 1; +} + +function getVF(n, opt_precision) { + var v = opt_precision; + + if (undefined === v) { + v = Math.min(getDecimals(n), 3); + } + + var base = Math.pow(10, v); + var f = ((n * base) | 0) % base; + return {v: v, f: f}; +} + +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u2d5c\u2d49\u2d3c\u2d30\u2d61\u2d5c", + "\u2d5c\u2d30\u2d37\u2d33\u2d33\u2d6f\u2d30\u2d5c" + ], + "DAY": [ + "\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59", + "\u2d30\u2d62\u2d4f\u2d30\u2d59", + "\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59", + "\u2d30\u2d3d\u2d55\u2d30\u2d59", + "\u2d30\u2d3d\u2d61\u2d30\u2d59", + "\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59", + "\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59" + ], + "MONTH": [ + "\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54", + "\u2d31\u2d55\u2d30\u2d62\u2d55", + "\u2d4e\u2d30\u2d55\u2d5a", + "\u2d49\u2d31\u2d54\u2d49\u2d54", + "\u2d4e\u2d30\u2d62\u2d62\u2d53", + "\u2d62\u2d53\u2d4f\u2d62\u2d53", + "\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63", + "\u2d56\u2d53\u2d5b\u2d5c", + "\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54", + "\u2d3d\u2d5c\u2d53\u2d31\u2d54", + "\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54", + "\u2d37\u2d53\u2d4a\u2d30\u2d4f\u2d31\u2d49\u2d54" + ], + "SHORTDAY": [ + "\u2d30\u2d59\u2d30", + "\u2d30\u2d62\u2d4f", + "\u2d30\u2d59\u2d49", + "\u2d30\u2d3d\u2d55", + "\u2d30\u2d3d\u2d61", + "\u2d30\u2d59\u2d49\u2d4e", + "\u2d30\u2d59\u2d49\u2d39" + ], + "SHORTMONTH": [ + "\u2d49\u2d4f\u2d4f", + "\u2d31\u2d55\u2d30", + "\u2d4e\u2d30\u2d55", + "\u2d49\u2d31\u2d54", + "\u2d4e\u2d30\u2d62", + "\u2d62\u2d53\u2d4f", + "\u2d62\u2d53\u2d4d", + "\u2d56\u2d53\u2d5b", + "\u2d5b\u2d53\u2d5c", + "\u2d3d\u2d5c\u2d53", + "\u2d4f\u2d53\u2d61", + "\u2d37\u2d53\u2d4a" + ], + "fullDate": "EEEE d MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM, y HH:mm:ss", + "mediumDate": "d MMM, y", + "mediumTime": "HH:mm:ss", + "short": "d/M/y HH:mm", + "shortDate": "d/M/y", + "shortTime": "HH:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "dh", + "DECIMAL_SEP": ",", + "GROUP_SEP": "\u00a0", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "-", + "negSuf": "\u00a4", + "posPre": "", + "posSuf": "\u00a4" + } + ] + }, + "id": "zgh", + "pluralCat": function (n, opt_precision) { var i = n | 0; var vf = getVF(n, opt_precision); if (i == 1 && vf.v == 0) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zh-cn.js b/1.2.30/i18n/angular-locale_zh-cn.js new file mode 100644 index 0000000000..adf47deb92 --- /dev/null +++ b/1.2.30/i18n/angular-locale_zh-cn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u4e0a\u5348", + "\u4e0b\u5348" + ], + "DAY": [ + "\u661f\u671f\u65e5", + "\u661f\u671f\u4e00", + "\u661f\u671f\u4e8c", + "\u661f\u671f\u4e09", + "\u661f\u671f\u56db", + "\u661f\u671f\u4e94", + "\u661f\u671f\u516d" + ], + "MONTH": [ + "\u4e00\u6708", + "\u4e8c\u6708", + "\u4e09\u6708", + "\u56db\u6708", + "\u4e94\u6708", + "\u516d\u6708", + "\u4e03\u6708", + "\u516b\u6708", + "\u4e5d\u6708", + "\u5341\u6708", + "\u5341\u4e00\u6708", + "\u5341\u4e8c\u6708" + ], + "SHORTDAY": [ + "\u5468\u65e5", + "\u5468\u4e00", + "\u5468\u4e8c", + "\u5468\u4e09", + "\u5468\u56db", + "\u5468\u4e94", + "\u5468\u516d" + ], + "SHORTMONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "fullDate": "y\u5e74M\u6708d\u65e5EEEE", + "longDate": "y\u5e74M\u6708d\u65e5", + "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss", + "mediumDate": "y\u5e74M\u6708d\u65e5", + "mediumTime": "ah:mm:ss", + "short": "yy/M/d ah:mm", + "shortDate": "yy/M/d", + "shortTime": "ah:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a5", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "zh-cn", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zh-hans-cn.js b/1.2.30/i18n/angular-locale_zh-hans-cn.js new file mode 100644 index 0000000000..62ab75005a --- /dev/null +++ b/1.2.30/i18n/angular-locale_zh-hans-cn.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u4e0a\u5348", + "\u4e0b\u5348" + ], + "DAY": [ + "\u661f\u671f\u65e5", + "\u661f\u671f\u4e00", + "\u661f\u671f\u4e8c", + "\u661f\u671f\u4e09", + "\u661f\u671f\u56db", + "\u661f\u671f\u4e94", + "\u661f\u671f\u516d" + ], + "MONTH": [ + "\u4e00\u6708", + "\u4e8c\u6708", + "\u4e09\u6708", + "\u56db\u6708", + "\u4e94\u6708", + "\u516d\u6708", + "\u4e03\u6708", + "\u516b\u6708", + "\u4e5d\u6708", + "\u5341\u6708", + "\u5341\u4e00\u6708", + "\u5341\u4e8c\u6708" + ], + "SHORTDAY": [ + "\u5468\u65e5", + "\u5468\u4e00", + "\u5468\u4e8c", + "\u5468\u4e09", + "\u5468\u56db", + "\u5468\u4e94", + "\u5468\u516d" + ], + "SHORTMONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "fullDate": "y\u5e74M\u6708d\u65e5EEEE", + "longDate": "y\u5e74M\u6708d\u65e5", + "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss", + "mediumDate": "y\u5e74M\u6708d\u65e5", + "mediumTime": "ah:mm:ss", + "short": "yy/M/d ah:mm", + "shortDate": "yy/M/d", + "shortTime": "ah:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a5", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "zh-hans-cn", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zh-hans-hk.js b/1.2.30/i18n/angular-locale_zh-hans-hk.js new file mode 100644 index 0000000000..d51f6de56a --- /dev/null +++ b/1.2.30/i18n/angular-locale_zh-hans-hk.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u4e0a\u5348", + "\u4e0b\u5348" + ], + "DAY": [ + "\u661f\u671f\u65e5", + "\u661f\u671f\u4e00", + "\u661f\u671f\u4e8c", + "\u661f\u671f\u4e09", + "\u661f\u671f\u56db", + "\u661f\u671f\u4e94", + "\u661f\u671f\u516d" + ], + "MONTH": [ + "\u4e00\u6708", + "\u4e8c\u6708", + "\u4e09\u6708", + "\u56db\u6708", + "\u4e94\u6708", + "\u516d\u6708", + "\u4e03\u6708", + "\u516b\u6708", + "\u4e5d\u6708", + "\u5341\u6708", + "\u5341\u4e00\u6708", + "\u5341\u4e8c\u6708" + ], + "SHORTDAY": [ + "\u5468\u65e5", + "\u5468\u4e00", + "\u5468\u4e8c", + "\u5468\u4e09", + "\u5468\u56db", + "\u5468\u4e94", + "\u5468\u516d" + ], + "SHORTMONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "fullDate": "y\u5e74M\u6708d\u65e5EEEE", + "longDate": "y\u5e74M\u6708d\u65e5", + "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss", + "mediumDate": "y\u5e74M\u6708d\u65e5", + "mediumTime": "ah:mm:ss", + "short": "d/M/yy ah:mm", + "shortDate": "d/M/yy", + "shortTime": "ah:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "zh-hans-hk", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zh-hans-mo.js b/1.2.30/i18n/angular-locale_zh-hans-mo.js new file mode 100644 index 0000000000..05a9cc9e63 --- /dev/null +++ b/1.2.30/i18n/angular-locale_zh-hans-mo.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u4e0a\u5348", + "\u4e0b\u5348" + ], + "DAY": [ + "\u661f\u671f\u65e5", + "\u661f\u671f\u4e00", + "\u661f\u671f\u4e8c", + "\u661f\u671f\u4e09", + "\u661f\u671f\u56db", + "\u661f\u671f\u4e94", + "\u661f\u671f\u516d" + ], + "MONTH": [ + "\u4e00\u6708", + "\u4e8c\u6708", + "\u4e09\u6708", + "\u56db\u6708", + "\u4e94\u6708", + "\u516d\u6708", + "\u4e03\u6708", + "\u516b\u6708", + "\u4e5d\u6708", + "\u5341\u6708", + "\u5341\u4e00\u6708", + "\u5341\u4e8c\u6708" + ], + "SHORTDAY": [ + "\u5468\u65e5", + "\u5468\u4e00", + "\u5468\u4e8c", + "\u5468\u4e09", + "\u5468\u56db", + "\u5468\u4e94", + "\u5468\u516d" + ], + "SHORTMONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "fullDate": "y\u5e74M\u6708d\u65e5EEEE", + "longDate": "y\u5e74M\u6708d\u65e5", + "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss", + "mediumDate": "y\u5e74M\u6708d\u65e5", + "mediumTime": "ah:mm:ss", + "short": "d/M/yy ah:mm", + "shortDate": "d/M/yy", + "shortTime": "ah:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MOP", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "zh-hans-mo", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zh-hans-sg.js b/1.2.30/i18n/angular-locale_zh-hans-sg.js new file mode 100644 index 0000000000..a641048a62 --- /dev/null +++ b/1.2.30/i18n/angular-locale_zh-hans-sg.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u4e0a\u5348", + "\u4e0b\u5348" + ], + "DAY": [ + "\u661f\u671f\u65e5", + "\u661f\u671f\u4e00", + "\u661f\u671f\u4e8c", + "\u661f\u671f\u4e09", + "\u661f\u671f\u56db", + "\u661f\u671f\u4e94", + "\u661f\u671f\u516d" + ], + "MONTH": [ + "\u4e00\u6708", + "\u4e8c\u6708", + "\u4e09\u6708", + "\u56db\u6708", + "\u4e94\u6708", + "\u516d\u6708", + "\u4e03\u6708", + "\u516b\u6708", + "\u4e5d\u6708", + "\u5341\u6708", + "\u5341\u4e00\u6708", + "\u5341\u4e8c\u6708" + ], + "SHORTDAY": [ + "\u5468\u65e5", + "\u5468\u4e00", + "\u5468\u4e8c", + "\u5468\u4e09", + "\u5468\u56db", + "\u5468\u4e94", + "\u5468\u516d" + ], + "SHORTMONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "fullDate": "y\u5e74M\u6708d\u65e5EEEE", + "longDate": "y\u5e74M\u6708d\u65e5", + "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss", + "mediumDate": "y\u5e74M\u6708d\u65e5", + "mediumTime": "ah:mm:ss", + "short": "dd/MM/yy ahh:mm", + "shortDate": "dd/MM/yy", + "shortTime": "ahh:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "zh-hans-sg", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zh-hans.js b/1.2.30/i18n/angular-locale_zh-hans.js new file mode 100644 index 0000000000..27dae3d6d3 --- /dev/null +++ b/1.2.30/i18n/angular-locale_zh-hans.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u4e0a\u5348", + "\u4e0b\u5348" + ], + "DAY": [ + "\u661f\u671f\u65e5", + "\u661f\u671f\u4e00", + "\u661f\u671f\u4e8c", + "\u661f\u671f\u4e09", + "\u661f\u671f\u56db", + "\u661f\u671f\u4e94", + "\u661f\u671f\u516d" + ], + "MONTH": [ + "\u4e00\u6708", + "\u4e8c\u6708", + "\u4e09\u6708", + "\u56db\u6708", + "\u4e94\u6708", + "\u516d\u6708", + "\u4e03\u6708", + "\u516b\u6708", + "\u4e5d\u6708", + "\u5341\u6708", + "\u5341\u4e00\u6708", + "\u5341\u4e8c\u6708" + ], + "SHORTDAY": [ + "\u5468\u65e5", + "\u5468\u4e00", + "\u5468\u4e8c", + "\u5468\u4e09", + "\u5468\u56db", + "\u5468\u4e94", + "\u5468\u516d" + ], + "SHORTMONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "fullDate": "y\u5e74M\u6708d\u65e5EEEE", + "longDate": "y\u5e74M\u6708d\u65e5", + "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss", + "mediumDate": "y\u5e74M\u6708d\u65e5", + "mediumTime": "ah:mm:ss", + "short": "yy/M/d ah:mm", + "shortDate": "yy/M/d", + "shortTime": "ah:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u20ac", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "zh-hans", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zh-hant-hk.js b/1.2.30/i18n/angular-locale_zh-hant-hk.js new file mode 100644 index 0000000000..e38d018211 --- /dev/null +++ b/1.2.30/i18n/angular-locale_zh-hant-hk.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u4e0a\u5348", + "\u4e0b\u5348" + ], + "DAY": [ + "\u661f\u671f\u65e5", + "\u661f\u671f\u4e00", + "\u661f\u671f\u4e8c", + "\u661f\u671f\u4e09", + "\u661f\u671f\u56db", + "\u661f\u671f\u4e94", + "\u661f\u671f\u516d" + ], + "MONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "SHORTDAY": [ + "\u9031\u65e5", + "\u9031\u4e00", + "\u9031\u4e8c", + "\u9031\u4e09", + "\u9031\u56db", + "\u9031\u4e94", + "\u9031\u516d" + ], + "SHORTMONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "fullDate": "y\u5e74M\u6708d\u65e5EEEE", + "longDate": "y\u5e74M\u6708d\u65e5", + "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss", + "mediumDate": "y\u5e74M\u6708d\u65e5", + "mediumTime": "ah:mm:ss", + "short": "d/M/yy ah:mm", + "shortDate": "d/M/yy", + "shortTime": "ah:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "zh-hant-hk", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zh-hant-mo.js b/1.2.30/i18n/angular-locale_zh-hant-mo.js new file mode 100644 index 0000000000..a13decadb4 --- /dev/null +++ b/1.2.30/i18n/angular-locale_zh-hant-mo.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u4e0a\u5348", + "\u4e0b\u5348" + ], + "DAY": [ + "\u661f\u671f\u65e5", + "\u661f\u671f\u4e00", + "\u661f\u671f\u4e8c", + "\u661f\u671f\u4e09", + "\u661f\u671f\u56db", + "\u661f\u671f\u4e94", + "\u661f\u671f\u516d" + ], + "MONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "SHORTDAY": [ + "\u9031\u65e5", + "\u9031\u4e00", + "\u9031\u4e8c", + "\u9031\u4e09", + "\u9031\u56db", + "\u9031\u4e94", + "\u9031\u516d" + ], + "SHORTMONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "fullDate": "y\u5e74MM\u6708dd\u65e5EEEE", + "longDate": "y\u5e74MM\u6708dd\u65e5", + "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss", + "mediumDate": "y\u5e74M\u6708d\u65e5", + "mediumTime": "ah:mm:ss", + "short": "yy\u5e74M\u6708d\u65e5 ah:mm", + "shortDate": "yy\u5e74M\u6708d\u65e5", + "shortTime": "ah:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "MOP", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "zh-hant-mo", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zh-hant-tw.js b/1.2.30/i18n/angular-locale_zh-hant-tw.js new file mode 100644 index 0000000000..bf62c4af7a --- /dev/null +++ b/1.2.30/i18n/angular-locale_zh-hant-tw.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u4e0a\u5348", + "\u4e0b\u5348" + ], + "DAY": [ + "\u661f\u671f\u65e5", + "\u661f\u671f\u4e00", + "\u661f\u671f\u4e8c", + "\u661f\u671f\u4e09", + "\u661f\u671f\u56db", + "\u661f\u671f\u4e94", + "\u661f\u671f\u516d" + ], + "MONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "SHORTDAY": [ + "\u9031\u65e5", + "\u9031\u4e00", + "\u9031\u4e8c", + "\u9031\u4e09", + "\u9031\u56db", + "\u9031\u4e94", + "\u9031\u516d" + ], + "SHORTMONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "fullDate": "y\u5e74M\u6708d\u65e5EEEE", + "longDate": "y\u5e74M\u6708d\u65e5", + "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss", + "mediumDate": "y\u5e74M\u6708d\u65e5", + "mediumTime": "ah:mm:ss", + "short": "y/M/d ah:mm", + "shortDate": "y/M/d", + "shortTime": "ah:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "NT$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "zh-hant-tw", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zh-hant.js b/1.2.30/i18n/angular-locale_zh-hant.js new file mode 100644 index 0000000000..8d4b79fb55 --- /dev/null +++ b/1.2.30/i18n/angular-locale_zh-hant.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u4e0a\u5348", + "\u4e0b\u5348" + ], + "DAY": [ + "\u661f\u671f\u65e5", + "\u661f\u671f\u4e00", + "\u661f\u671f\u4e8c", + "\u661f\u671f\u4e09", + "\u661f\u671f\u56db", + "\u661f\u671f\u4e94", + "\u661f\u671f\u516d" + ], + "MONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "SHORTDAY": [ + "\u9031\u65e5", + "\u9031\u4e00", + "\u9031\u4e8c", + "\u9031\u4e09", + "\u9031\u56db", + "\u9031\u4e94", + "\u9031\u516d" + ], + "SHORTMONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "fullDate": "y\u5e74M\u6708d\u65e5EEEE", + "longDate": "y\u5e74M\u6708d\u65e5", + "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss", + "mediumDate": "y\u5e74M\u6708d\u65e5", + "mediumTime": "ah:mm:ss", + "short": "y/M/d ah:mm", + "shortDate": "y/M/d", + "shortTime": "ah:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "NT$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "zh-hant", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zh-hk.js b/1.2.30/i18n/angular-locale_zh-hk.js new file mode 100644 index 0000000000..03d314d71e --- /dev/null +++ b/1.2.30/i18n/angular-locale_zh-hk.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u4e0a\u5348", + "\u4e0b\u5348" + ], + "DAY": [ + "\u661f\u671f\u65e5", + "\u661f\u671f\u4e00", + "\u661f\u671f\u4e8c", + "\u661f\u671f\u4e09", + "\u661f\u671f\u56db", + "\u661f\u671f\u4e94", + "\u661f\u671f\u516d" + ], + "MONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "SHORTDAY": [ + "\u9031\u65e5", + "\u9031\u4e00", + "\u9031\u4e8c", + "\u9031\u4e09", + "\u9031\u56db", + "\u9031\u4e94", + "\u9031\u516d" + ], + "SHORTMONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "fullDate": "y\u5e74M\u6708d\u65e5EEEE", + "longDate": "y\u5e74M\u6708d\u65e5", + "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss", + "mediumDate": "y\u5e74M\u6708d\u65e5", + "mediumTime": "ah:mm:ss", + "short": "d/M/yy ah:mm", + "shortDate": "d/M/yy", + "shortTime": "ah:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "zh-hk", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zh-tw.js b/1.2.30/i18n/angular-locale_zh-tw.js new file mode 100644 index 0000000000..0e535eefcc --- /dev/null +++ b/1.2.30/i18n/angular-locale_zh-tw.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u4e0a\u5348", + "\u4e0b\u5348" + ], + "DAY": [ + "\u661f\u671f\u65e5", + "\u661f\u671f\u4e00", + "\u661f\u671f\u4e8c", + "\u661f\u671f\u4e09", + "\u661f\u671f\u56db", + "\u661f\u671f\u4e94", + "\u661f\u671f\u516d" + ], + "MONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "SHORTDAY": [ + "\u9031\u65e5", + "\u9031\u4e00", + "\u9031\u4e8c", + "\u9031\u4e09", + "\u9031\u56db", + "\u9031\u4e94", + "\u9031\u516d" + ], + "SHORTMONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "fullDate": "y\u5e74M\u6708d\u65e5EEEE", + "longDate": "y\u5e74M\u6708d\u65e5", + "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss", + "mediumDate": "y\u5e74M\u6708d\u65e5", + "mediumTime": "ah:mm:ss", + "short": "y/M/d ah:mm", + "shortDate": "y/M/d", + "shortTime": "ah:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "NT$", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "zh-tw", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zh.js b/1.2.30/i18n/angular-locale_zh.js new file mode 100644 index 0000000000..f283354b9a --- /dev/null +++ b/1.2.30/i18n/angular-locale_zh.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "\u4e0a\u5348", + "\u4e0b\u5348" + ], + "DAY": [ + "\u661f\u671f\u65e5", + "\u661f\u671f\u4e00", + "\u661f\u671f\u4e8c", + "\u661f\u671f\u4e09", + "\u661f\u671f\u56db", + "\u661f\u671f\u4e94", + "\u661f\u671f\u516d" + ], + "MONTH": [ + "\u4e00\u6708", + "\u4e8c\u6708", + "\u4e09\u6708", + "\u56db\u6708", + "\u4e94\u6708", + "\u516d\u6708", + "\u4e03\u6708", + "\u516b\u6708", + "\u4e5d\u6708", + "\u5341\u6708", + "\u5341\u4e00\u6708", + "\u5341\u4e8c\u6708" + ], + "SHORTDAY": [ + "\u5468\u65e5", + "\u5468\u4e00", + "\u5468\u4e8c", + "\u5468\u4e09", + "\u5468\u56db", + "\u5468\u4e94", + "\u5468\u516d" + ], + "SHORTMONTH": [ + "1\u6708", + "2\u6708", + "3\u6708", + "4\u6708", + "5\u6708", + "6\u6708", + "7\u6708", + "8\u6708", + "9\u6708", + "10\u6708", + "11\u6708", + "12\u6708" + ], + "fullDate": "y\u5e74M\u6708d\u65e5EEEE", + "longDate": "y\u5e74M\u6708d\u65e5", + "medium": "y\u5e74M\u6708d\u65e5 ah:mm:ss", + "mediumDate": "y\u5e74M\u6708d\u65e5", + "mediumTime": "ah:mm:ss", + "short": "yy/M/d ah:mm", + "shortDate": "yy/M/d", + "shortTime": "ah:mm" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "\u00a5", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4\u00a0-", + "negSuf": "", + "posPre": "\u00a4\u00a0", + "posSuf": "" + } + ] + }, + "id": "zh", + "pluralCat": function (n, opt_precision) { return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zu-za.js b/1.2.30/i18n/angular-locale_zu-za.js new file mode 100644 index 0000000000..127ab760cb --- /dev/null +++ b/1.2.30/i18n/angular-locale_zu-za.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Ekuseni", + "Ntambama" + ], + "DAY": [ + "Sonto", + "Msombuluko", + "Lwesibili", + "Lwesithathu", + "Lwesine", + "Lwesihlanu", + "Mgqibelo" + ], + "MONTH": [ + "Januwari", + "Februwari", + "Mashi", + "Apreli", + "Meyi", + "Juni", + "Julayi", + "Agasti", + "Septhemba", + "Okthoba", + "Novemba", + "Disemba" + ], + "SHORTDAY": [ + "Son", + "Mso", + "Bil", + "Tha", + "Sin", + "Hla", + "Mgq" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mas", + "Apr", + "Mey", + "Jun", + "Jul", + "Aga", + "Sep", + "Okt", + "Nov", + "Dis" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "y-MM-dd h:mm a", + "shortDate": "y-MM-dd", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "zu-za", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/i18n/angular-locale_zu.js b/1.2.30/i18n/angular-locale_zu.js new file mode 100644 index 0000000000..21a02fe8ef --- /dev/null +++ b/1.2.30/i18n/angular-locale_zu.js @@ -0,0 +1,97 @@ +'use strict'; +angular.module("ngLocale", [], ["$provide", function($provide) { +var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"}; +$provide.value("$locale", { + "DATETIME_FORMATS": { + "AMPMS": [ + "Ekuseni", + "Ntambama" + ], + "DAY": [ + "Sonto", + "Msombuluko", + "Lwesibili", + "Lwesithathu", + "Lwesine", + "Lwesihlanu", + "Mgqibelo" + ], + "MONTH": [ + "Januwari", + "Februwari", + "Mashi", + "Apreli", + "Meyi", + "Juni", + "Julayi", + "Agasti", + "Septhemba", + "Okthoba", + "Novemba", + "Disemba" + ], + "SHORTDAY": [ + "Son", + "Mso", + "Bil", + "Tha", + "Sin", + "Hla", + "Mgq" + ], + "SHORTMONTH": [ + "Jan", + "Feb", + "Mas", + "Apr", + "Mey", + "Jun", + "Jul", + "Aga", + "Sep", + "Okt", + "Nov", + "Dis" + ], + "fullDate": "EEEE dd MMMM y", + "longDate": "d MMMM y", + "medium": "d MMM y h:mm:ss a", + "mediumDate": "d MMM y", + "mediumTime": "h:mm:ss a", + "short": "y-MM-dd h:mm a", + "shortDate": "y-MM-dd", + "shortTime": "h:mm a" + }, + "NUMBER_FORMATS": { + "CURRENCY_SYM": "R", + "DECIMAL_SEP": ".", + "GROUP_SEP": ",", + "PATTERNS": [ + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 3, + "minFrac": 0, + "minInt": 1, + "negPre": "-", + "negSuf": "", + "posPre": "", + "posSuf": "" + }, + { + "gSize": 3, + "lgSize": 3, + "maxFrac": 2, + "minFrac": 2, + "minInt": 1, + "negPre": "\u00a4-", + "negSuf": "", + "posPre": "\u00a4", + "posSuf": "" + } + ] + }, + "id": "zu", + "pluralCat": function (n, opt_precision) { var i = n | 0; if (i == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;} +}); +}]); \ No newline at end of file diff --git a/1.2.30/version.json b/1.2.30/version.json new file mode 100644 index 0000000000..01a036614f --- /dev/null +++ b/1.2.30/version.json @@ -0,0 +1 @@ +{"raw":"v1.2.30","major":1,"minor":2,"patch":30,"prerelease":[],"build":[],"version":"1.2.30","codeName":"patronal-resurrection","full":"1.2.30","branch":"v1.2.x","cdn":{"raw":"v1.2.29","major":1,"minor":2,"patch":29,"prerelease":[],"build":[],"version":"1.2.29","docsUrl":"http://code.angularjs.org/1.2.29/docs"}} \ No newline at end of file diff --git a/1.2.30/version.txt b/1.2.30/version.txt new file mode 100644 index 0000000000..717d98b32b --- /dev/null +++ b/1.2.30/version.txt @@ -0,0 +1 @@ +1.2.30 \ No newline at end of file